在图像上绘制响应区域的最佳解决方案

时间:2013-08-26 13:32:01

标签: android view

我想知道如何获得下面显示的结果的最佳解决方案。 这是我到目前为止所发现的:

用于森林的ImageView和用于绘制矩形的透明surfaceView(用于处理触摸)? 要么... 只有一个SurfaceView,图像设置为背景和矩形直接绘制在......?

对于那些我已经选择了RelativeLayout的人。

这两个中哪一个最有效,最容易做到? 或许还有另一种我没有想过的方法。

无论如何,感谢您的建议,我倾向于......

enter image description here

1 个答案:

答案 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);
            }
        }

    });