获取屏幕上的位图大小(以像素为单位),而不是实际大小?

时间:2012-07-07 12:16:03

标签: android graphics

我有一个布局,顶部有一些水平滚动,底部有一些文本框,中间留下任何空间我用ImageView填充它。在那个ImageView我加载一个位图。我们将此ImageView称为底部

现在,在ImageView之上,我动态加载另一个用户可以通过拖动它移动的ImageView。第二个ImageView(顶一个)中有一个小图标,它将叠加在我的位图顶部并保存。将其视为徽标/水印。

两个ImageView都在RelativeLayout中,所以我可以移动顶部布局。

现在我遇到的问题是我无法获得底部 ImageView中加载的位图的大小。

我尝试了以下内容:

DisplayMetrics om = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(om);
tv.setText("W:" + b.getScaledWidth(om) + " H:" + b.getScaledHeight(om));

但它不起作用, b.getScaledWidth(om) 返回我的位图的实际宽度,而不是屏幕上的那个,这应该是(以防万一)一个风景图像)480px,我正在测试的手机屏幕的大小。

附加信息:为什么我需要这个是因为我在底部ImageView中显示的图像与ImageView的比例不同。所以我可以得到ImageView的大小,但这个ImageView比图像本身大。因为我需要将顶部ImageView保持在底部ImageView中显示的图像边界内,我需要知道底部ImageView中图像的大小,而不是底部视图本身的大小。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分:0)

我找不到方法所以我“手动”做到了。

我使用 MyImageView 类扩展了 ImageView 类,并且在 onMeasure 覆盖中,我计算了比例因子并相应地创建了一个 Rect 根据我的 RelativeLayout 表示坐标中的边界,其内部是 MyImageView

我这样做是因为我发现这里的帖子提到创建自己的 ImageView 类,找不到链接了。

无论如何,之后我检查顶部 ImageView 的上/左定位,并在 onTouch 方法中移动它时设置最大位置