Android:在不同的屏幕密度上绘制相同大小的线条或圆圈

时间:2012-07-11 21:30:18

标签: android size draw paint stroke

当我将画笔笔划大小设置为15时,它适合一个屏幕,而在另一个屏幕中它太大或太小,我怎么知道屏幕密度让它设置笔画宽度以适应屏幕密度?

我正在尝试将它用于动态壁纸,服务,而不是应用程序,所以我无法使用获取Windows管理器...

2 个答案:

答案 0 :(得分:2)

  

我正在尝试将它用于动态壁纸,服务,而不是应用程序,所以我无法使用获取Windows管理器...

你的意思是活动。即使是动态壁纸服务仍然被定义为应用程序内部的组件,但无论如何......

最好的方法是将维度放入资源中,让资源框架为您进行数学计算。定义一个如下所示的res/values/dimens.xml文件:

<resources>
    <dimen android:name="strokeWidth">15dp</dimen>
</resources>

然后在Service内,您可以致电:

Resources res = getResources();
float strokeWidth = res.getDimension(R.dimen.strokeWidth);

由于尺寸以“dp”为单位定义,因此将返回按屏幕密度缩放的值。所以它将是15 @ MDPI,22.5 @ HDPI,依此类推。如果您希望将值更改为getDimensionPixelOffset(),也可以使用getDimensionPixelSize()int

答案 1 :(得分:1)

本文可能会对您有所帮助:

http://developer.android.com/guide/practices/screens_support.html

最终,您将不得不针对不同的屏幕密度进行开发。