拦截android中的屏幕更新

时间:2012-02-13 13:56:09

标签: android screen ondraw intercept

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

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

E.g。当我在此视图组中有一个按钮并单击此按钮时,将不会在根级别调用onDraw()方法。另一方面,如果我触摸TextView,将在根级别调用onDraw()。似乎某些元素使用onDraw()方法并且不将其传递给父级。除了扩展每个可能的子节点并进行自定义实现之外,我是否可以捕获另一种方法或事件来获取根视图及其子级的所有更新?

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

2 个答案:

答案 0 :(得分:0)

不要为根布局的子布局创建 onclick侦听器

答案 1 :(得分:0)

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

public class Acitivity implements OnClickListener
{

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

}