Кнопка Android onTouch(), если возвращает true, не имеет эффекта анимации клика; если возвращает false, имеет эффект анимации клика
Я наблюдаю это странное поведение, пожалуйста, помогите мне разобраться!
Я просто установил 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 ответ
Я наблюдаю это странное поведение, пожалуйста, помогите мне разобраться!
Это стандартное поведение Android.
Если вы вернетесь true
из ACTION_DOWN
событие вас интересует остальные события в этом жесте. "Жест" в этом случае означает все события до финала ACTION_UP
или же ACTION_CANCEL
, возврате false
из ACTION_DOWN
означает, что вы не хотите событие, и другие представления будут иметь возможность обработать его. Если у вас перекрывающиеся представления, это может быть одноуровневое представление. Если нет, то это будет пузыриться до родителя.
Поэтому, когда вы вернетесь true
, вы сказали Android, что вы обработали все события, и это не имеет ничего общего с. Так что вы даже не видите никаких волновых эффектов.