Cat*_*ine 4 android textview surfaceview
我有一个SurfaceView和TextView,我在上面绘制文本
Paint p = new Paint();
p.p.setTextSize(14);
canvas.drawText(....
TextView text =...
text.setTextSize(14);
Run Code Online (Sandbox Code Playgroud)
在某些设备上,两个文本看起来完全相同.但在仿真器和三星Galaxy III上,画布上的文字要小两倍.为什么?如何在所有设备上获得相同的尺寸?
SurfaceView和TextView同时出现在屏幕上.TextView位于多个图层上,并覆盖在SurcafeView的Canvas上.
最好的祝福
您必须在Android中使用设备无关的像素(dp/dip)才能在所有设备上获得相同的大小.在Text的情况下,存在与比例无关的像素(sp).详细了解这些以便更好地理解.
要将Pixel值转换为dp,请使用以下代码:
public static float convertPixelsToDp(float px,Context context){
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
float dp = px / (metrics.densityDpi / 160f);
return dp;
}
Run Code Online (Sandbox Code Playgroud)
要将dp值转换为像素,请使用以下代码:
public static float convertDpToPixel(float dp,Context context){
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
float px = dp * (metrics.densityDpi/160f);
return px;
}
Run Code Online (Sandbox Code Playgroud)
只需根据您的要求调用您想要的任何方法.