当我将绘画描边大小设置为 15 时,它适合一个屏幕,而在另一个屏幕上则太大或太小,我如何知道屏幕密度以让它设置描边宽度以适合屏幕密度?
我正在尝试将其用于动态壁纸、服务,而不是应用程序,因此我无法使用获取窗口管理器...
最佳答案
i am trying to use it for a live wallpaper, a service, not an application, so i can't use get windows manager...
您指的是“Activity ”。即使动态壁纸服务仍然被定义为应用程序内部的组件,但无论如何......
最好的方法是将您的维度放入资源中,并让资源框架为您进行数学计算。定义一个 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,依此类推。如果您希望将值返回为 int
,您还可以使用 getDimensionPixelOffset()
或 getDimensionPixelSize()
。
关于Android:在不同的屏幕密度上绘制相同尺寸的直线或圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11441796/