我正在开发音乐应用
所以当我点击歌曲
时,我正试图按一下按钮重复并改变背景
我有两个背景,其中一个我想把它作为按钮的背景
播放歌曲时
和歌曲重复时的另一个
package khaledbanafa.shaylat;
import android.media.MediaPlayer;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.ToggleButton;
import java.io.IOException;
import static android.app.PendingIntent.getActivity;
import static khaledbanafa.shaylat.R.drawable.play;
public class ha extends AppCompatActivity {
MediaPlayer x;
RelativeLayout mylayout;
TextView textView;
TextView textView2;
TextView textView3;
SeekBar seekBar;
boolean pressed = false;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_on);
final Button a = (Button) findViewById(R.id.button1);
a.setText("ارفع الراس يا حربي");
final Button b = (Button) findViewById(R.id.button2);
b.setText("سما سما");
final Button c = (Button) findViewById(R.id.button3);
c.setText("الحربي للحربي فدا");
final Button d = (Button) findViewById(R.id.button4);
d.setText("العبو ياحرب دام العمر فاني");
final Button e = (Button) findViewById(R.id.button5);
e.setText("حرب الحرايب");
final Button f = (Button) findViewById(R.id.button6);
f.setText("حرب الحرايب لحن دحة");
final Button g = (Button) findViewById(R.id.button7);
g.setText("حرب الدول");
final Button h = (Button) findViewById(R.id.button8);
h.setText("حرب ماتنقص تزود");
final Button i = (Button) findViewById(R.id.button9);
i.setText("حنا اهل الفخر");
final Button j = (Button) findViewById(R.id.button10);
j.setText("ياحرب شوشو والعبو");
Button play = (Button) findViewById(R.id.buttonplay);
Button pause = (Button) findViewById(R.id.buttonpause);
Button stop = (Button) findViewById(R.id.buttonstop);
final Button repeat = (Button)findViewById(R.id.repeat);
Button nextmedia = (Button)findViewById(R.id.nextmedia);
textView = (TextView)findViewById(R.id.textView);
textView2 = (TextView)findViewById(R.id.textView2);
textView3 = (TextView)findViewById(R.id.textView3);
seekBar = (SeekBar)findViewById(R.id.seekBar);
final SeekBar SEK = new SeekBar(ha.this);
SEK.setPadding(150,0,140,0);
SEK.setX(0);
SEK.setY(1659);
SEK.setProgressDrawable(getDrawable(R.drawable.red_scrubber_progress));
SEK.setThumb(getDrawable(R.drawable.red_scrubber_control));
mylayout = (RelativeLayout)findViewById(R.id.onrel);
SEK.setLayoutParams(new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(x != null)
x.start();
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(x != null)
x.stop();
textView.setText("");
mylayout.removeView(SEK);
mylayout.addView(SEK);
SEK.setProgress(0);
SEK.setMax(0);
}
});
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(x != null)
x.pause();
}
});
a.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);
mylayout.removeView(SEK);
stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.haone);
class mythread extends Thread {
public void run() {
while (x != null) {
try {
Thread.sleep(1000);
} catch (Exception e) {
}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax() / 1000);
int m = tim / 60;
int s = tim % 60;
/////////
int tim0 = (SEK.getProgress() / 1000);
int m0 = tim0 / 60;
int s0 = tim0 % 60;
textView2.setText(m0 + ":" + s0);
textView3.setText(m + ":" + s);
}
});
}
}
}
SEK.setMax(x.getDuration());
mythread my = new mythread();
textView.setText(a.getText());
mylayout.addView(SEK);
my.start();
x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});}
});
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.hatwo);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(b.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
c.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.hathree);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(c.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
d.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.hafour);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(d.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
e.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.hafive);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(e.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
f.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.hasix);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(f.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
g.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.haseven);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(g.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
h.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.haeight);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(h.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
i.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.hanine);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(i.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
j.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mylayout.removeView(seekBar);mylayout.removeView(SEK);stopPlaying();
x = MediaPlayer.create(ha.this, R.raw.haten);class mythread extends Thread {
public void run() {while (x != null) {try {Thread.sleep(1000);} catch (Exception e) {}
SEK.post(new Runnable() {
@Override
public void run() {
SEK.setProgress(x.getCurrentPosition());
int tim = (SEK.getMax()/1000);
int m = tim/60;
int s= tim %60;
/////////
int tim0 = (SEK.getProgress()/1000);
int m0 = tim0/60;
int s0 = tim0%60;
textView2.setText(m0+":"+s0);
textView3.setText(m+":"+s);}});}}}
SEK.setMax(x.getDuration());mythread my = new mythread();
textView.setText(j.getText());
mylayout.addView(SEK);
my.start();x.start();
SEK.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int progresval;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progresval = progress;}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
x.seekTo(progresval);
}
});
}
});
}
public void onDestroy(){
super.onDestroy();
if(x != null)
x.stop();
}
private void stopPlaying() {
if (x != null) {
x.stop();
x.release();
x = null;
}
}
}
答案 0 :(得分:0)
你可以从mediaPlayer获得重复状态
repeat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(x != null ){
if ( x.isLooping()) {
//player is in repeat mode , so turn it off and change repeat buttun background to normal
repeat.setBackgroundResource(R.drawable.repeat_off);
x.setLooping(false);
}else {
//player isn't in repeat mode , so turn it on and change repeat buttun background to repeating image
repeat.setBackgroundResource(R.drawable.repeat_on);
x.setLooping(true);
}
}else {
//player is null
}
}
});
请注意,setLooping
只为您的媒体播放器设置了重复模式,因此如果您的x(媒体播放器)没有播放,您还可以根据播放器状态设置x.start()
或x.resume()
。
答案 1 :(得分:0)
您可以在这篇文章中找到答案:How set background drawable programmatically in Android
在处理按钮时,请查看以下有趣链接:https://developer.android.com/reference/android/widget/Button.html
为了检测背景何时发生变化。我建议你实现一个扩展MediaPlayer并使用它的类。你应该在你的活动中实现一个公共界面,以观察背景的变化。