我在Google上看到如何在ImageView的MotionEvents上执行操作,我想要做的是当用户按下ImageView并在用户释放ImageView时重置为上一个图像时更改图像,我在我的执行一些重置代码活动我只想在用户按下imageview时产生效果。
这就是我所做的,
iv_reset.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
// TODO Auto-generated method stub
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
iv_reset.setImageResource(R.drawable.ic_action_reset_pressed);
iv_reset.invalidate();
break;
case MotionEvent.ACTION_UP:
iv_reset.setImageResource(R.drawable.ic_action_reset);
iv_reset.invalidate();
resetAll();
break;
default:
break;
}
问题是,当我触摸ImageView(iv_reset)时,它会改变图像,但是当我释放触摸时,它会保持更改而不会重置为上一张图像,这应该在MotionEvent.ACTION_UP中完成:我想是这样的。
请帮助。
答案 0 :(得分:1)
你让自己的生活变得非常困难。废弃onTouchListener并改为使用state list drawable。
在您的情况下,只需将ImageView src属性设置为此drawable(在drawables文件夹中的XML中定义):
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_action_reset_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/ic_action_reset" />
</selector>