我观察到这种奇怪的行为,请帮我搞清楚!
我只是将onTouchListner设置为一个按钮。对于onTouch()
回调,如果我设置它返回false,当我点击按钮时,我可以看到按钮的点击动画效果(只是颜色变化);但是,如果我设置它返回true,当我点击按钮时,点击动画效果就会消失。
以下是代码
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = findViewById(R.id.btn);
btn.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
v.setClickable(true);
Log.d("myTrack", "onTouch");
return true; // I cannot see the animation effect when click
return false; // I can see the animation effect when click
}
});
}
}
答案 0 :(得分:0)
我观察到这种奇怪的行为,请帮我搞清楚!
这是Android的默认行为。
如果您从true
事件返回ACTION_DOWN
,则您对该手势中的其他事件感兴趣。 A"手势"在这种情况下,意味着所有事件,直到最后ACTION_UP
或ACTION_CANCEL
。从false
返回ACTION_DOWN
表示您不希望事件和其他视图有机会处理它。如果您有重叠的视图,这可以是兄弟视图。如果没有,它将冒泡到父母。
所以当你返回true
时,你告诉android你已经处理了所有事件,而且它与之无关。所以你甚至都没有看到任何涟漪效应。