为什么dispatchTouchEvent会避免屏幕上的点击?

时间:2014-03-17 20:02:25

标签: java android multi-touch

我在我的应用程序上制作了一个复活节彩蛋,需要触摸组合才能工作。它工作正常,但我不能在屏幕上做任何其他点击。 我的课程延伸FragmentActivity,因此我无法使用onTouchEvent。 如果我删除被覆盖的方法dispatchTouchEvent,我可以正常点击。

我的代码:

                public class LoginActivity extends FragmentActivity implements Window.Callback {
                  private ImageView animEaster;
                  private AnimationDrawable animDrawable;

                  @Override
                  protected void onCreate(Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);
                   ....
                  }
    @Override
        public boolean dispatchTouchEvent(MotionEvent event) {
            int action = event.getAction();
            switch (action & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_POINTER_DOWN:
                if (!isAtivado) {
                    easter = "";
                    isAtivado = true;
                    System.out.println("Ativou");
                }
                break;
            case MotionEvent.ACTION_POINTER_UP:
                int count = event.getPointerCount();
                easter += count;
                if (count <= 2) {
                    if (isAtivado) {
                        System.out.println("Desativou");
                        isAtivado = false;
                        if (easter.equals("5435432")) {
                            animEaster.setVisibility(View.VISIBLE);
                            lblProdDes.setVisibility(View.VISIBLE);
                            lblProdDes.setVisibility(View.VISIBLE);
                            if (Servidor.servidor.equals("???????")) {
                                lblProdDes.setText("DESENVOLVIMENTO");
                            } else {
                                lblProdDes.setText("PRODUÇÃO");
                            }
                            animDrawable.start();
                            new Handler().postDelayed(new Runnable() {
                                public void run() {
                                    animEaster.setVisibility(View.GONE);
                                    animEaster.setVisibility(View.GONE);
                                    lblProdDes.setVisibility(View.GONE);
                                    animDrawable.stop();
                                }
                            }, 5000);
                        }
                    }
                }
                break;
            }
            return true;
        }
....

我的复活节彩蛋有效,但点击次数没有。

1 个答案:

答案 0 :(得分:0)

在某些时候,您需要调用super.dispatchTouchEvent()。如果不这样做,事件将永远不会被分派到其他视图。看起来而不是“返回true”;最后这应该是“return super.dispatchTouchEvent(event);”。