【问题标题】:Image Height Appear Different on different density不同密度的图像高度不同
【发布时间】:2013-12-28 00:34:32
【问题描述】:

我是设计布局的新手。我从服务器获取位图,并设置图像视图高度,使其在 ldpi、mdpi、hdpi、xhdpi 的每个密度上看起来都不错。

stripImageView.getLayoutParams().height = (int) ((Util.screenWidth(this) * strip.getHeight() / strip.getWidth()) * getResources().getDisplayMetrics().density);

但是这段代码对我不起作用。有些设备图像看起来很小,有些设备看起来很好

【问题讨论】:

    标签: android


    【解决方案1】:

    尝试使用 dp 而不是 px 在布局中设置尺寸。 Dp(或 dip)代表与密度无关的像素,会根据密度自动缩放。

    编辑:我看到的另一个问题是您同时引用了屏幕宽度和高度,因此您的屏幕纵横比也会影响该计算。

    【讨论】:

    • stripImageView.getLayoutParams().height = (int) ((Util.screenWidth(this) * strip.getHeight() / strip.getWidth()) * getResources().getDisplayMetrics().density); 怎么做。如果您更新我的代码会很好
    • 我无法在布局中的 dp 中设置 imageview 高度修复。所以我在运行时根据条带的高度和宽度进行设置。如果有任何错误,请告诉我
    • 那么这个问题的解决方法是什么
    【解决方案2】:

    将它们转换为 DIP:

    stripImageView.getLayoutParams(). height = 
         (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, <HEIGHT>, 
              getResources().getDisplayMetrics());
    

    其中 HEIGHT 是您想要的以 px 为单位的高度。你可以根据条带高度或其他东西来确定它。

    【讨论】:

    • 这是返回像素吗(Util.screenWidth(this) * strip.getHeight() / strip.getWidth()public static int screenWidth(Context ctx) { WindowManager wm = (WindowManager) ctx .getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); return display.getWidth(); }
    • getHeight、getwidth 和 screenWidth 以 px 为单位返回值
    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2021-08-25
    • 2017-09-18
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多