java为什么dispatchTouchEvent避免在屏幕上单击?
我在我的应用程序上制作了一个复活节彩蛋,需要一个触摸组合才能工作。它工作正常,但我不能在屏幕上做任何其他点击。
我的类扩展了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 楼答案
在某个时刻,你需要打电话给super。dispatchTouchEvent()。否则,事件将永远不会被发送到其他视图。看起来不是“返回真值”最后应该是“return super.dispatchTouchEvent(event);”