[英]How to set up an onTouchListener that changes an ImageView image resource?
I want to setup up an onTouchListener that changes an ImageViews image resource on ACTION_UP and ACTION_DOWN.我想设置一个 onTouchListener 来更改 ACTION_UP 和 ACTION_DOWN 上的 ImageViews 图像资源。 Here is my code:
这是我的代码:
// Setup a basic upDownListener that registers UP and DOWN actions and changes the
// view image resource accordingly
View.OnTouchListener upDownListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN) {
// Button was pressed, change button background
v.setImageResource(R.drawable.button_white_pressure);
return true;
} else if(event.getAction() == MotionEvent.ACTION_UP) {
// Button was released, reset button background
v.setImageResource(R.drawable.button_white);
return true;
}
return false;
}
};
This code does not compile because View does not have the method setImageResource, only ImageView.这段代码没有编译,因为View没有setImageResource方法,只有ImageView。 But how do I tell the listener that an ImageView is being used?
但是我如何告诉听众正在使用 ImageView 呢?
Cast the incoming View
to an ImageView
.将传入的
View
转换为ImageView
。
Sample code:示例代码:
@Override
public boolean onTouch(View v, MotionEvent event) {
ImageView iv = (ImageView) v;
if (event.getAction() == MotionEvent.ACTION_DOWN) {
iv.setImageResource(R.drawable.button_white_pressure);
return true;
} else if (event.getAction() == MotionEvent.ACTION_UP) {
iv.setImageResource(R.drawable.button_white);
return true;
}
return false;
}
View.OnTouchListener upDownListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
ImageView v = (ImageView) v;
if(event.getAction() == MotionEvent.ACTION_DOWN) {
// Button was pressed, change button background
v.setImageResource(R.drawable.button_white_pressure);
return true;
} else if(event.getAction() == MotionEvent.ACTION_UP) {
// Button was released, reset button background
v.setImageResource(R.drawable.button_white);
return true;
}
return false;
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.