在第一个OnCreate中我有一个button_stop SetImageResource,当按下时它会将图标更改为静音图标,尽管在我的代码中我想输入一个函数,说明何时mp.start();做另一个SetImageResource来使同一个按钮显示一个扬声器而不是一个静音图标。
如何在mp.start();这个函数叫做?
button_stop.setImageResource(R.drawable.ic_action_volume_on);
我想要做的是按下声音按钮(button_1,button_2),button_stop显示扬声器图标。但是,当按下button_stop时,它会显示一个静音图标(并释放MediaPlayer)。
我可以让它释放MediaPlayer并在按下button_stop时将图像更改为静音图标,但是在按下声音按钮(button_1等)后打开MediaPlayer后我无法显示扬声器图标)
这是我目前的代码。我尝试在onClick中输入SetImageResource,但它会停止正确调用MediaPlayer。
import android.app.Activity;
import android.app.PendingIntent;
import android.app.TaskStackBuilder;
import android.content.Intent;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.app.NotificationCompat;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
/**
* @author Prabu
*
*/
public class MainActivity extends Activity implements OnClickListener{
private MediaPlayer mp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
Button button1=(Button)findViewById(R.id.button_1);
Button button2=(Button)findViewById(R.id.button_2);
final ImageView button_stop=(ImageView)findViewById(R.id.button_stop);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
button_stop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(null!=mp){
mp.release();
button_stop.setImageResource(R.drawable.ic_action_volume_muted);
}
}});
}
public void onClick(View v) {
int resId;
switch (v.getId()) {
case R.id.button_1:
resId = R.raw.a;
break;
case R.id.button_2:
resId = R.raw.b;
break;
default:
resId = R.raw.a;
break;
}
// Release any resources from previous MediaPlayer
if (mp != null) {
mp.release();
}
// Create a new MediaPlayer to play this sound
mp = MediaPlayer.create(this, resId);
mp.setLooping(true);
mp.start();
}{
}
@Override
protected void onDestroy() {
if(null!=mp){
mp.release();
}
super.onDestroy();
}}
答案 0 :(得分:3)
所以我对你想要的东西的理解只是为了在调用mp.start()时打开扬声器图像。我只在你的mp.start()代码中看到一个实例,所以这会在发生这种情况时改变停止按钮上的图像。
public void onClick(View v) {
int resId;
switch (v.getId()) {
case R.id.button_1:
resId = R.raw.a;
break;
case R.id.button_2:
resId = R.raw.b;
break;
default:
resId = R.raw.a;
break;
}
// Release any resources from previous MediaPlayer
if (mp != null) {
mp.release();
}
// Create a new MediaPlayer to play this sound
mp = MediaPlayer.create(this, resId);
mp.setLooping(true);
mp.start();
//This is the added code to set the stop button.
ImageView button_stop=(ImageView)findViewById(R.id.button_stop);
button_stop.setImageResource(R.drawable.ic_action_volume_on);
}
答案 1 :(得分:1)
使用setBackgroundResource(R.id.img)
代替setImageResource(R.id.image)
将解决问题。替换这部分代码:
button_stop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(null!=mp){
mp.release();
button_stop.setBackgroundResource(R.drawable.ic_action_volume_muted);
}
}});
我希望它有所帮助