如何以编程方式多次更改ImageView源?

时间:2015-03-25 08:18:19

标签: android imageview

按下图像后,图像会发生变化并播放声音。声音播放后,我希望返回上一张图像(相同的ImageView),这是没有发生的。

xml代码:

<ImageView
    android:id="@+id/imageView_red_off"
    android:src="@drawable/red_orig"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:adjustViewBounds="true"
    android:maxHeight="160dp"
    android:maxWidth="150dp"
    android:layout_gravity="top|left"
    android:paddingRight="40dp"
    android:paddingLeft="0dp"
    android:scaleType="fitCenter"
/>

java代码:

public boolean onTouch(View view, MotionEvent event) {
.
.
.

    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        if (colorRed > threshold)) {
            whatColor = "Red";
            imageRed.setImageResource(R.drawable.red);
        }
   .
   .
   .
   }

playSound(whatColor);
imageRed.setImageResource(R.drawable.red_orig);
.
.
.
}
在playound方法中

if ((color != "None")) {
    MediaPlayer mp = MediaPlayer.create(this, animal);
    mp.start();
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        };
    });
}

感谢。

2 个答案:

答案 0 :(得分:1)

你应该做这样的事情。

假设一旦用户触摸你已经设置img1设置的图像你现在改变了它的img,当MediaPlayer完成播放时你可以使用setOnCompletionListener一旦播放完全使用imageview对象来改变图像而不是在图像的OnTouch中进行。

如下所示:

MediaPlayer mp = MediaPlayer.create(this, animal);
    mp.start();
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            mp.release();
          if(img.getTag().equal("second")){
             //Then set first image here 
           }
        };
    });

答案 1 :(得分:0)

使用setOnClickListener作为图像。

  1. 点击前将标签设置为图片。例如&#34; 1&#34;
  2. 在OnClick方法中,检查标记。

     if(tag.equals("1") {     change image source and play sound; set image tag to "2";
    
       }else{
         change image source to original
         set image tag to "1"    }
    
  3. 我希望它有所帮助。