简体   繁体   English

如何在每次点击时更改按钮的背景

[英]how to change background of button on every click

I am working on music app 我正在开发音乐应用

so I am trying to do a button when I click it the song 所以当我点击歌曲时我试图做一个按钮

be repeating and the background change 重复和背景变化

I have two background one of them I want to make it background of the button 我有两个背景之一,我想使其成为按钮的背景

when play the song once 一次播放歌曲时

and the another when the song is repeating 当歌曲重复时,另一个

    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;

        }
    }


}

you can get repeat state from your mediaPlayer 您可以从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
            }
        }
    });

note that setLooping just set repeat mode for your media player so if your x (media player) is not playing you can also set x.start() or x.resume() base on your player state. 请注意, setLooping只是为媒体播放器设置重复模式,因此,如果您的x(媒体播放器)未播放,您还可以根据播放器状态设置x.start()x.resume()

You might find your answer in this post: How set background drawable programmatically in Android 您可能会在这篇文章中找到答案: 如何在Android中以编程方式设置背景可绘制

As you are dealing with button, check out this this interesting link : https://developer.android.com/reference/android/widget/Button.html 在处理按钮时,请查看以下有趣的链接: https : //developer.android.com/reference/android/widget/Button.html

In order to detect when the background changes. 为了检测背景何时变化。 I advise you to implementing a class which extends MediaPlayer and use it. 我建议您实现一个扩展MediaPlayer的类并使用它。 You should implement an public interface iinside your activity in order to observe the change of backgrounds. 您应该在活动中实现一个公共界面,以便观察背景的变化。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM