Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
拦截android中的屏幕更新_Android_Screen_Ondraw_Intercept - Fatal编程技术网

拦截android中的屏幕更新

拦截android中的屏幕更新,android,screen,ondraw,intercept,Android,Screen,Ondraw,Intercept,是否可以在android中拦截屏幕更新 我实现了一个自定义的LinearLayout,它覆盖了onDraw()方法,但只有在我不单击子元素而是单击其他地方时才会调用它 例如,当我在此视图组中有一个按钮并单击此按钮时,将不会在根级别调用onDraw()方法。另一方面,如果我触摸文本视图,onDraw()将在根级别调用。似乎有些元素使用了onDraw()方法,而没有将其传递给父元素。除了扩展每个可能的子视图并进行自定义实现之外,我是否还可以捕获其他方法或事件来获取根视图及其子视图在根级别的所有更新

是否可以在android中拦截屏幕更新

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

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


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

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

不要为子布局创建onclick侦听器,让您的活动实现onclick侦听器。重写活动的onClick方法,您可以处理其中的任何单击

public class Acitivity implements OnClickListener
{

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

}