如何在imageview上使用MotionEvents来更改ACTION_DOWN和ACTION_UP上的图像

时间:2014-08-07 07:46:07

标签: android imageview motionevent

我在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中完成:我想是这样的。

请帮助。

1 个答案:

答案 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>