2012-02-13 63 views
0

是否有可能拦截android中的屏幕更新?在android中拦截屏幕更新

我实现了一个自定义的LinearLayout覆盖了onDraw()方法,但只有当我不点击子元素而是在其他地方时才会调用它。

E.g.当我在这个视图组中有一个按钮,并且我点击这个按钮时,onDraw()方法将不会在根级调用。另一方面,如果我触摸TextView,则将在根级别调用onDraw()。看起来好像有些元素消耗了onDraw()方法,并且不会将它传递给父级。除了扩展每个可能的子项并定制实现之外,是否还有另一种方法或事件可以捕获到根级别的根视图及其子级的所有更新?

编辑:也许我必须澄清一点。我的目的是每次更改时都要获取子视图的位图。所以例如如果按钮是子视图,我想将视图绘制到位图(获取绘图缓存或手动调用draw()到自定义画布)。使用例如问题onClickListener是,按钮状态,虽然点击,实际上是“点击”,我还需要一个图像的按钮状态,它被设置之前和之后被点击(http://developer.android.com/design/style /touch-feedback.html)。另一个问题是,我不知道存在多少个子视图,这应该适用于每个可能的创建布局。所以onClickListeners也是没有选择的,除了我会遍历所有的孩子,并检查他们是哪种类型。但是不同的州仍然存在问题。

回答

0

不创建onclick听众为根布局的子布局。

0

不要为子布局创建onClick侦听器,并让您的活动实现onClickListener。覆盖您的活动的onClick方法,您可以处理其中的任何点击。

public class Acitivity implements OnClickListener 
{ 

    @Override 
    public void onClick(View v) 
    { 
      //Handle clicks here 
    } 

}