如何知道设备中 imageView 的实际大小?

Posted

技术标签:

【中文标题】如何知道设备中 imageView 的实际大小?【英文标题】:how can i know the actual size of an imageView in my device? 【发布时间】:2014-08-29 18:29:51 【问题描述】:

我有一个宽度为 matchParent 属性的 ImageView。

我如何知道它在我的设备上的运行时宽度(使用 eclipse,无需以编程方式添加代码)?

我如何知道我的设备中 dpi 到 pxls 的转换率?

【问题讨论】:

【参考方案1】:

我有一个 ImageView ...我如何知道它在我的设备上的运行时宽度

您可以在测量 ImageView 时获取宽度,即晚于运行时。但是,您可以像这样获得屏幕的宽度和高度:

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

int height = metrics.heightPixels;
int width = metrics.widthPixels;

例如,如果您的 ImageView 占据了屏幕的特定部分,您可以使用屏幕的宽度和高度对其进行测量。

我如何知道我的设备中 dpi 到 pxls 的转换率?

要将 20 像素转换为 DP 做(添加到上面的代码):

int dp = 20 / metrics.density:

额外:这是像素的 dpi calculator

【讨论】:

【参考方案2】:

如果您不想使用TreeObserverListener 方式,您可以尝试让View 进行自我测量,并为您提供计算后的尺寸。以我的经验,这在大多数情况下都有效,但并非全部。特别是如果View 处于某些特殊的动态布局中,或者层次结构的顺序会阻止以正确的顺序计算尺寸。参考这个受欢迎的answer,您可能会很幸运。

【讨论】:

以上是关于如何知道设备中 imageView 的实际大小?的主要内容,如果未能解决你的问题,请参考以下文章

ImageView在布局中显示但不在实际设备上显示

android中imageview里的图片大小是不是可以比imageview本身大,如果可以,如何设置?

启动图像情节提要添加了 Imageview ,但更改资产文件夹中的图像实际上并未反映在设备上?

如何在android中根据上面的imageview对齐textview

如何在ImageView中显示图像?

删除 ImageView 自动调整大小