Cómo establecer la unidad para Paint.setTextSize ()

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

Convertir de esta manera

 // 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

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

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

La respuesta aceptada es para los gestos, no para ajustar el tamaño del texto. La respuesta más votada (al momento de escribir esto) está cerca pero la documentación recomienda usar sp vez de dp porque además de ser escalado para densidades de pantalla (como valores de dp ), sp también se escala de acuerdo a los tamaños de fuente preferidos por el usuario. La respuesta de @ pelotasplus sólo funciona si obtiene el valor de los recursos.

De un int en el 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 los recursos

O si tiene el valor sp o dp en los recursos:

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

con

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

Otros enlaces

  • ¿Cómo convertir DP, PX, SP entre sí, especialmente DP y SP?
  • Android: Tamaño de texto de Canvas.drawText () en diferentes resoluciones de pantalla
  • Paint.setTextSize
  • getDimensionPixelSize

Y aquí es aún más corto método para convertir dp-s a px-els teniendo en cuenta métricas de pantalla en cuenta

https://developer.android.com/reference/android/content/res/Resources.html#getDimensionPixelSize(int)

Si su objeto Paint está siendo utilizado para dibujar texto en una lona, ​​puede dejar que el Canvas maneje la escala para usted.

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

Al establecer el tamaño del texto en un objeto de pintura que se dibujará en lienzo, trabaje con un valor unitario de dp o sp y deje que Canvas maneje la escala para usted.

  • GetLocationOnScreen () devuelve valores inesperados
  • Dibuja el fondo de la vista personalizada desde el archivo .png en Android
  • Cómo manejar los cambios de visibilidad para una vista / widget personalizado de Android
  • Destruir vista (disposición)
  • ¿Cómo obtener todas las vistas en una actividad?
  • android- puede hacer que un objeto dibujado en un lienzo haga clic
  • ¿Existen widgets de hojas de cálculo para Android?
  • Android - view.Surface OutOfResourcesException
  • Android: cómo encontrar varias vistas con un atributo común
  • Android ToggleButton
  • No se puede obtener el atributo clipChildren = false para trabajar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.