我很难做到这一点。
基本上我正在创建一个ImageView并将LayoutParameter应用于它。
LayoutParams lp = new LayoutParams(width, height);
lp.gravity = Gravity.CENTER;
我知道width
和height
参数会接收像素数,因此我在DP中传递它们并使用以下方法将其转换为绝对像素:
public int convertToPixels(float dpSize){
final float density = getResources().getDisplayMetrics().density;
return ((int) (dpSize * density + 0.5f));
}
据我所知,这应该可以在不同的屏幕上绘制完全相同的区域,对吗?不幸的是,这根本不会发生。
我使用的这些方法有问题吗?
下面这两个仿真器具有相同的图像和相同的DP量。 左模拟器是1.0密度,右边一个是2.0。为什么它仍然看起来 太不同了 ?不要承担......
答案 0 :(得分:1)
使用:
public class Convert {
public static float convertDpToPixel(float dp){
DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
float px = dp * (metrics.densityDpi / 160f);
return Math.round(px);
}
}
只需以静态方式使用它:
float requiredPixel = Convert.convertDpToPixel(16.0);
了解更多信息:https://developer.android.com/guide/practices/screens_support.html