/*** Set the default text size to a given unit and value. See {@link* TypedValue} for the possible dimension units.
*
*@paramunit The desired dimension unit.
*@paramsize The desired size in the given units.
*
* @attr ref android.R.styleable#TextView_textSize*/
public void setTextSize(int unit, floatsize) {
Context c=getContext();
Resources r;if (c == null)
r=Resources.getSystem();elser=c.getResources();
setRawTextSize(TypedValue.applyDimension(
unit, size, r.getDisplayMetrics()));
}private void setRawTextSize(floatsize) {if (size !=mTextPaint.getTextSize()) {
mTextPaint.setTextSize(size);if (mLayout != null) {
nullLayouts();
requestLayout();
invalidate();
}
}
}/*** Converts an unpacked complex data value holding a dimension to its final floating
* point value. The two parameters unit and value
* are as in {@link#TYPE_DIMENSION}.
*
*@paramunit The unit to convert from.
*@paramvalue The value to apply the unit to.
*@parammetrics Current display metrics to use in the conversion --
* supplies display density and scaling information.
*
*@returnThe complex floating point value multiplied by the appropriate
* metrics depending on its unit.*/
public static float applyDimension(int unit, floatvalue,
DisplayMetrics metrics)
{switch(unit) {caseCOMPLEX_UNIT_PX:returnvalue;caseCOMPLEX_UNIT_DIP:return value *metrics.density;caseCOMPLEX_UNIT_SP:return value *metrics.scaledDensity;caseCOMPLEX_UNIT_PT:return value * metrics.xdpi * (1.0f/72);caseCOMPLEX_UNIT_IN:return value *metrics.xdpi;caseCOMPLEX_UNIT_MM:return value * metrics.xdpi * (1.0f/25.4f);
}return 0;
}