【问题标题】:Converting dp into pixels for multiple screen support将 dp 转换为像素以支持多屏幕
【发布时间】:2016-07-09 17:19:53
【问题描述】:

我很难做到这一点。

基本上我正在创建一个 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。为什么看起来还是 太不同了 ?不明白..

【问题讨论】:

    标签: android screen dpi


    【解决方案1】:

    使用:

    公共类转换{

    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

    【讨论】:

    • Saini,看看我的编辑......为什么即使使用相同的 dp 量它看起来也不正确?
    • 它确定计算是正确的,但图像的大小仍然不同
    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 2019-02-18
    • 2015-12-22
    • 2011-07-20
    • 2011-09-30
    • 2021-05-01
    • 2012-06-16
    相关资源
    最近更新 更多