我怎样才能在java中阅读维度。
< dimen name ="某事"> 10px< / dimen>
如果我尝试
getResources().getDimensionPixelOffset(R.dimen.something)
它返回18而不是10.结果大于预期,但如果R.dimen.something是540 px,结果是180.我不理解这种转换。有没有办法从维度获得原始价值。
我需要px中的值来绘制(不可见,膨胀)视图到画布并将结果保存为jpg。结果应该总是看起来一样,不依赖于dpi。
<整数名称="某事"> 10< / integer>
不是一个选项,因为它不能在xml中使用。
EDIT1:
我不知道原因,但其他设备会返回预期值。也许这是我在主设备上使用的cyanogenmod版本中的一个错误
EDIT2:
这是一个错误,在更新我的cyanogenmod版本之后它可以工作
答案 0 :(得分:1)
尝试其中一个
getResources().getDimensionPixelSize(R.dimen.something);
或
getResources().getDimension(R.dimen.something);
答案 1 :(得分:1)
如果您查看Resources#getDimensions(int)的文档,请参阅以下内容
float getDimension (int id)
检索特定资源ID的维度。单位转化基于与资源相关联的当前DisplayMetrics
。
表示您的维度定义如下所示
<dimen name="dimen_pix">10px</dimen>
getResources().getDimensions(R.dimen.dimen_pix)
将返回10.0
如果尺寸指定为倾角
<dimen name="dimen_dip">10dp</dimen>
getResources().getDimensions(R.dimen.dimen_dip)
会返回10.0 x density
密度,这是屏幕相对于mdpi屏幕的相对像素密度(160ppi)
如果您希望获得dip
维的确切定义值,可以使用以下代码段
float screenDensity = getResources().getDisplayMetrics().density;
float dipDimension = getResources().getDimension(R.dimen.test_dimen);
float actualDimension = dipDimension/screenDensity; //required value