Android Button onTouch(),如果返回true,则没有点击动画效果;如果返回false,则具有clik动画效果

时间:2018-04-23 00:56:25

标签: android ontouchlistener ontouch

我观察到这种奇怪的行为,请帮我搞清楚!

我只是将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
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

  

我观察到这种奇怪的行为,请帮我搞清楚!

这是Android的默认行为。

如果您从true事件返回ACTION_DOWN,则您对该手势中的其他事件感兴趣。 A"手势"在这种情况下,意味着所有事件,直到最后ACTION_UPACTION_CANCEL。从false返回ACTION_DOWN表示您不希望事件和其他视图有机会处理它。如果您有重叠的视图,这可以是兄弟视图。如果没有,它将冒泡到父母。

所以当你返回true时,你告诉android你已经处理了所有事件,而且它与之无关。所以你甚至都没有看到任何涟漪效应。