vista studio sirve que propiedades para libreria example clase addview java android view

java - studio - textview android



Cómo configurar la unidad para Paint.setTextSize() (5)

¿Es posible cambiar la unidad para Paint.setTextSize() ? Por lo que sé, es un píxel pero me gusta establecer el tamaño del texto en DIP para el soporte de múltiples pantallas.


Convertirlo así

// The gesture threshold expressed in dip private static final float GESTURE_THRESHOLD_DIP = 16.0f; // Convert the dips to pixels final float scale = getContext().getResources().getDisplayMetrics().density; mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale + 0.5f); // Use mGestureThreshold as a distance in pixels

desde aquí http://developer.android.com/guide/practices/screens_support.html#dips-pels


La respuesta aceptada es para gestos, no para configurar el tamaño del texto. La respuesta más votada (en el momento de escribir esto) está cerca, pero la documentación recomienda usar sp lugar de dp porque además de ser escalado para densidades de pantalla (como los valores de dp ), sp también se escala según los tamaños de fuente preferidos por el usuario .

De un int en código

int spSize = 17; float scaledSizeInPixels = spSize * getResources().getDisplayMetrics().scaledDensity; mTextPaint.setTextSize(scaledSizeInPixels);

O alternativamente

int spSize = 17; float scaledSizeInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spSize, getResources().getDisplayMetrics()); mTextPaint.setTextSize(scaledSizeInPixels);

De recursos

O si tienes el valor sp o dp en recursos:

<resources> <dimen name="fontSize">17sp</dimen> </resources>

con

float scaledSizeInPixels = getResources().getDimensionPixelSize(R.dimen.fontSize); mTextPaint.setTextSize(scaledSizeInPixels);

Otros enlaces


Sé que este tema es antiguo y ya está respondido, pero también me gustaría sugerir este fragmento de código:

int MY_DIP_VALUE = 5; //5dp int pixel= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, MY_DIP_VALUE, getResources().getDisplayMetrics());


Si su objeto de pintura se está utilizando para dibujar texto en un lienzo, puede dejar que el lienzo maneje la escala por usted.

Al llamar a Canvas.drawText() el tamaño del texto se determina primero por el objeto Paint pasado, que se puede establecer mediante Paint.setTextSize() . El tamaño del texto se escala automáticamente mediante Canvas función de la densidad del canvas, que se puede encontrar utilizando Canvas.getDensity() .

Cuando establezca el tamaño del texto en un objeto de pintura que se dibujará en Canvas, trabaje con un valor unitario de dp o sp y deje que Canvas se encargue de la escala por usted.


Y aquí hay un método aún más corto para convertir dp-s a px-els teniendo en cuenta las métricas de visualización

getDimensionPixelSize