我想知道如何获得下面显示的结果的最佳解决方案。 这是我到目前为止所发现的:
用于森林的ImageView和用于绘制矩形的透明surfaceView(用于处理触摸)? 要么... 只有一个SurfaceView,图像设置为背景和矩形直接绘制在......?
对于那些我已经选择了RelativeLayout的人。
这两个中哪一个最有效,最容易做到? 或许还有另一种我没有想过的方法。
无论如何,感谢您的建议,我倾向于......
答案 0 :(得分:1)
我已经通过将图像放在RelativeLayout中来实现这一点(FrameLayout也可以),然后以编程方式添加每个概述的视图。如果您知道x和y原点(可能与图像的比例)和每个区域的大小,您可以轻松地为每个视图/区域(带有黑色边框,透明中心)充气,使其可点击并设置一个监听器,然后通过调整它的边距来设置它的原点。您可能希望在图像完成布局后执行所有这些操作:
我把它放在我onActivityCreated
的{{1}}中,但其他生命周期方法也会有用......
Fragment
这就是我实际放置所有热点/区域的方式:
ViewTreeObserver vto = image.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (image.getMeasuredHeight() > 0) {
addHotSpots();
ViewTreeObserver obs = image.getViewTreeObserver();
obs.removeGlobalOnLayoutListener(this);
}
}
});