我有一个布局,上面有一些水平滚动,底部有一些文本框,中间留有任何空间,我用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方法中设置最大位置。