Android:在不同的屏幕密度上绘制相同尺寸的直线或圆圈

标签 android size draw paint stroke

当我将绘画描边大小设置为 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/

相关文章:

android - 在android中动态添加n个进度条

c - Visual C 中有全局变量大小限制的解决方法吗?

cocoa - NSScrollView 的内部结构

css - 移动设备和网站 CSS 中图像的绝对大小

android - 在Android中绘制带曲线底部的矩形 View

exception - Draw.io Uncaught TypeError : dialog. showSaveDialogSync 不是函数

java - 使用 SQLite 创建表时出错

android - Spinner onItemSelected 一遍又一遍地保持调用

java - 以编程方式隐藏微调器列表

javascript - 如何根据其内容调整ExtJS窗口宽度?