0

我正在尝试用 Java 创建一个简单的 android 应用程序,但我遇到了困难。

我有一个包含许多位图的数组列表,我正在将它们绘制到画布上,但我使用的是像素测量值,并且在大多数设备上都无法正确显示。

那么有什么方法可以找出我的图形在 dp 中的大小,并用 dp 将其缩放到屏幕密度/大小,并用 dp 或 dip 定位它。

我的图形(正方形):

ldpi 中的图形大小 = 50px

mdpi 中的图形大小 = 75px

hdpi 中的图形大小 = 100px

代码中的其他所有内容都很好,只是看起来很奇怪?

任何帮助,将不胜感激。

詹姆士。

4

2 回答 2

7

来自 android 开发者文档:

定义 UI 布局时应使用的虚拟像素单位,以与密度无关的方式表示布局尺寸或位置。与密度无关的像素相当于 160 dpi 屏幕上的一个物理像素,这是系统为“中等”密度屏幕假定的基线密度。在运行时,系统会根据使用中屏幕的实际密度,根据需要透明地处理 dp 单位的任何缩放。dp 单位到屏幕像素的转换很简单:px = dp * (dpi / 160)。例如,在 240 dpi 的屏幕上,1 dp 等于 1.5 个物理像素。在定义应用程序的 UI 时,应始终使用 dp 单位,以确保在不同密度的屏幕上正确显示 UI

看到这个了解更多信息。

于 2012-03-11T19:45:09.917 回答
1
/**
 * Convert dp in pixels
 * @param dp
 * @return
 */
public int getPx(int dp){       
    float scale = getResources().getDisplayMetrics().density;
    return((int) (dp * scale + 0.5f));
}
于 2013-01-04T00:45:43.423 回答