【问题标题】:Intercept screen updates in android在android中拦截屏幕更新
【发布时间】:2012-02-13 13:56:08
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: android screen ondraw intercept


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      public class Acitivity implements OnClickListener
      {
      
          @Override
          public void onClick(View v) 
          {
                //Handle clicks here
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-09
        • 2021-07-12
        • 1970-01-01
        • 1970-01-01
        • 2010-09-07
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多