【问题标题】:Scaling drawables not to density (dip), but actual pixel resolution (px)缩放可绘制对象不是密度(dip),而是实际像素分辨率(px)
【发布时间】:2018-03-10 07:38:33
【问题描述】:

我一直在开发一个应用程序,在该应用程序中,drawables相对于显示器的宽度总是相同的尺寸,例如始终为屏幕高度的 1/8(以像素为单位)。我了解与密度无关的像素是如何工作的,但由于它们的目标是始终代表相同的 物理 尺寸,因此这与我所需要的几乎相反。我怎样才能做到这一点?我曾尝试使用具有非常高分辨率和相应缩小比例的 .png 文件,但它总是模糊不清,质量损失令人难以置信。 谢谢你的帮助,最好的问候。

【问题讨论】:

  • 他们的目标是始终表示相同的物理尺寸 - 我认为你有倒退:“与设备无关的像素(也:与密度无关的像素,dip,dp ) 是基于计算机坐标系的物理测量单位,表示像素的抽象,供应用程序使用,然后底层系统将其转换为物理像素。”
  • 计算设备显示的高度,除以8得到显示的1/8,用layout params将image view的高度改为计算的高度
  • 但是这种方法仍然被认为是好的/最佳实践吗?我在谷歌开发者文档中阅读了有关支持多个屏幕的信息,应用程序不应该介意单个像素,而只考虑屏幕的密度和物理尺寸。不幸的是,我相信这对我来说并不是一个真正的选择。

标签: android user-interface android-drawable image-scaling density-independent-pixel


【解决方案1】:

遇到了完全相同的问题。这是我的解决方案:

DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
Double newHeight = 0.125 * displayMetrics.heightPixels;
yourImageView.getLayoutParams().height = newHeight.intValue();

或者,使用线性布局。将 ImageView 的权重设置为 1,将 LinearLayout 的 weightSum 设置为 8。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多