我正在尝试一些功能,基本上学习东西,我不知道为什么这不起作用。我的意思是当我第一次触摸图像更改为R.drawable.buttondown时,但是当我移动我的手指或释放它时,其他情况不起作用,图像不再改变。你能告诉我为什么吗?
icon = (ImageView)findViewById(R.id.imageView1);
icon.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
icon.setImageResource(R.drawable.buttondown);
break;
case MotionEvent.ACTION_UP:
icon.setImageResource(R.drawable.ic_launcher);
break;
case MotionEvent.ACTION_MOVE:
icon.setImageResource(R.drawable.abc_ab_bottom_transparent_dark_holo);
break;
}
return false;
}
答案 0 :(得分:0)
你需要返回true来通知android你已经消耗了这个事件。
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
icon.setImageResource(R.drawable.buttondown);
break;
case MotionEvent.ACTION_UP:
icon.setImageResource(R.drawable.ic_launcher);
break;
case MotionEvent.ACTION_MOVE:
icon.setImageResource(R.drawable.abc_ab_bottom_transparent_dark_holo);
break;
}
return true;
}
来自docs:
如果监听器已经使用了该事件,则为true,否则为false。
如果你返回true,那么你说你刚刚消耗了这个事件而你对其他事件感兴趣。如果你返回false,那么它将保留在ACTION_DOWN上,因为事件没有被消耗。