我正在使用我在另一个线程上找到的在 mdpi 屏幕上运行良好的代码:
public static float convertDpToPixel(float dp,Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float px = dp * (metrics.densityDpi/160f);
return px;
}
public static float convertPixelsToDp(float px,Context context){
Resources resources = context.getResources();
DisplayMetrics metrics = resources.getDisplayMetrics();
float dp = px / (metrics.densityDpi /160f);
return dp;
}
在 hdpi 屏幕上使用它时,尝试增加文本大小时,文本大小会跳跃。我假设它是因为它在划分密度Dpi时使用硬编码的160f?有没有动态的方法来判断是160dpi还是240dpi?