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



我有一个布局,上面有一些水平滚动,底部有一些文本框,中间留有任何空间,我用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的图像大小,而不是底部View本身的大小。

你知道我做错了什么吗?

我没有找到方法,所以我"手动"完成了。

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

我之所以这么做,是因为我在这里找到了一篇关于创建自己的ImageView类的帖子,但再也找不到链接了。

无论如何,在那之后,我检查topImageView的顶部/左侧位置,并在onTouch方法中设置最大位置。

相关内容

  • 没有找到相关文章

最新更新