2012-03-22 152 views
0

我有应用程序组成的RelativeLayout,TableLayout和一些按钮。现在我想在用户在屏幕上按下的点上绘制一个圆圈。一种方法是扩展视图并添加所有功能,但我想知道是否有更优雅的(通用)解决方案?透明视图覆盖用于绘图

我一直在想透明覆盖层,它添加到布局中,它捕获MotionEvent,在触摸点上绘制圆并将事件传递给底层View组件(因此按钮仍然可点击)。

这种方式的解决方案更具可重用性,因为您可以轻松将其插入任何项目中,但不幸的是,我不知道它是否可行。任何提示?

回答

1
+0

我看了一下GestureOverlayView,然后创建了我自己的类来扩展View。这是importand重写dispatchDraw,首先绘制孩子,然后覆盖,否则在大多数情况下你会被孩子忽悠。 – Andraz 2012-04-06 10:24:28

0

我不知道如果我的建议是最好的解决办法,但我会做到以下几点: 创建一个扩展Drawable的新类。
重写onDraw方法并在画布上绘制圆。 添加一个。 addCircle(int x,int y);方法添加到可绘制的类中,每次要添加圆时您都会调用它。

然后在你的活动中创建一个上述类的新对象,并将它设置为context.getWindow()。setBackgroundDrawable(你的对象)作为你的WindowBackground。然后,在您处理您的motionevent调用时,将会添加此对象.addCircle方法和您的圆圈。

像这样在你的活动将只有几行代码,它将是可重用的。