我会在按下时更改imageView图片,并在压力释放时再次更改。 ImageView包含一个按钮的图片,当按下时,我会通过更改图像向用户提供反馈(例如,当他按下正常按钮时)。这是我的代码:
final ImageView imageView = (ImageView) findViewById(R.id.imageView1);
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i("IMAGE", "motion event: " + event.toString());
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
imageView.setImageResource(R.drawable.button_hover);
}
case MotionEvent.ACTION_UP: {
imageView.setImageResource(R.drawable.button);
}
}
return false;
}
});
这是xml
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="std_button"
android:src="@drawable/button" />
但它不起作用。如果我只使用ACTION_DOWN事件,图像改变我想要的, 怎么了?
答案 0 :(得分:5)
尝试添加中断;在每个案例之后,
正如giozh所说,在onTouch中我总是返回false,所以触摸事件结果总是不会消耗掉。只需在每个案例陈述后加上return。
答案 1 :(得分:4)
在drawable文件夹中创建选择器xml,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_green" android:state_pressed="true"/>
<item android:drawable="@drawable/ic_red"/>
</selector>
答案 2 :(得分:0)
对于事件的更改,你可以尝试这个......
final ImageView imagen = (Imagen) findViewById(R.id.imageViewX);
ImageView imagen = (ImageView)findViewById(R.id.imageViewX);
imagen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ImageView perse = (ImageView) findViewById(R.id.imageViewX);
perse.setImageResource(R.drawable.backgroundtwo);
}
});