我有一个宽度为matchParent属性的ImageView。
我怎么知道我的设备上的运行时宽度(使用eclipse,而不是以编程方式添加代码)?
如何知道设备中dpi与pxls之间的转换率?
答案 0 :(得分:1)
我有一个ImageView ......我怎么知道我的设备上的运行时宽度
您可以在测量ImageView时获得宽度,即晚于运行时。但是你可以像这样得到屏幕的宽度和高度:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
例如,如果您的ImageView占据了屏幕的特定部分,您可以使用屏幕的宽度和高度进行测量。
如何知道设备中dpi与pxls之间的转换率?
将20个像素转换为DP do(添加到上面的代码中):
int dp = 20 / metrics.density:
额外:这是dpi到像素calculator
答案 1 :(得分:0)
如果您不想使用TreeObserverListener
方式,可以尝试让View
进行自我衡量,并为您提供计算时的尺寸。根据我的经验,这在大多数情况下都有效,但并非全部;特别是如果View
处于某种特殊的动态布局中,或者层次结构的排序会阻止以正确的顺序计算维度。你可能会在参考这个流行的answer时找到运气。