ImageView:在按下和发布时更改图像

时间:2014-01-28 11:37:00

标签: android android-imageview

我会在按下时更改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事件,图像改变我想要的, 怎么了?

3 个答案:

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

         }
     });