如何多次编程更改ImageView源代码?

问题描述:

一旦图像被按下,它会改变并播放声音。声音播放后,我希望返回到以前的图像(相同的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); 
. 
. 
. 
} 

在playsound方法:

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

感谢。

+0

玩的线程或后台服务的帮助下声音。 – 2015-03-25 08:22:27

+0

@ smb6你在用什么来播放声音?的Soundpool? – MikeIsrael 2015-03-25 08:26:49

+0

@MikeIsrael,我正在使用Mediaplayer – smb6 2015-03-25 08:46:41

你应该做一些这样的事情。

让我们说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 
      } 
     }; 
    }); 
+0

此解决方案适用。但我不确定我明白为什么,请你解释一下?谢谢。 – smb6 2015-03-25 13:29:28

+0

当你的imageView显示它有一些图像从你的xml文件申请时,现在正如你在你的问题中所说的那样,当你想要改变图像时,只有当用户触摸它,一旦文件播放完成,然后只有你想改回上一个因此,在您的触摸中,您正在播放声音,因此只要播放声音完成,就可以轻松更改图像,所以我建议您现在使用'setOnCompletionListener'.Hope的东西。 – Herry 2015-03-27 10:56:51

对图像使用setOnClickListener。

  1. 在点击之前将标签设置为图像。例如“1”
  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" } 
    

我希望它能帮助。