秒表一个接一个地重复时间,暂停之间

时间:2016-03-09 13:33:26

标签: java android

这是我第一次写这里。我正在学习Android开发并尝试制作一个秒表(倒数计时器)应用程序,它有12轮和暂停 - 例如它们之间的10秒。我编写了一个可以正常工作的代码,但我想把它写得更“可读和更好”,所以我想请你帮忙。正如您所看到的,我不想每次都在public void run()下写if-else if语句新的roundtime数和设置文本,因为它会占用太多空间。这就是为什么我写它只是为了(不是12次)所以你可以看到我的意思。你有什么建议如何更好地写12轮?我可以使用循环吗?如果你有更容易的倒计时方式,我会很感激。我很抱歉我的英语。欢迎任何评论。享受编码。

这是我的代码:

public class Main3Activity extends AppCompatActivity {

    Handler handler;
    TextView textView;
    ImageView imageView2;
    ImageView imageView3;
    Boolean checker=false;
    long secondtime=1000;
    long roundtime1= 10000;
    long roundtime2=10000;
    long pause= 31000;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);

        textView=(TextView)findViewById(R.id.textView3);
        imageView2=(ImageView)findViewById(R.id.imageView2);
        imageView3=(ImageView)findViewById(R.id.imageView3);

        imageView2.setOnClickListener(
                new ImageView.OnClickListener(){

                    @Override
                    public void onClick(View v) {
                        handler = new Handler();

                        if (checker == false) {
                            handler.post(r);
                            checker = true;
                        }
                        imageView3.setOnClickListener(
                                new ImageView.OnClickListener() {

                                    @Override
                                    public void onClick(View v) {
                                        handler.removeCallbacks(r);
                                    }
                                }
                        );
                    }
                        final Runnable r= new Runnable() {
                            @Override
                            public void run() {

                                roundtime = roundtime - secondtime;
                                int seconds = (int) (roundtime / 1000);
                                int minutes = seconds / 60;
                                seconds = seconds % 60;
                                if (roundtime >= 0) {
                                    textView.setText(String.format("%d:%02d", minutes, seconds));

                                    handler.postDelayed(r, 1000);
                                } else if (pause > 0) {

                                    pause = pause - secondtime;

                                    int secondss = (int) (pause / 1000);
                                    int minutess = secondss / 60;
                                    secondss = secondss % 60;

                                    textView.setText(String.format("%d:%02d", minutess, secondss));

                                    handler.postDelayed(r, 1000);
                                } else if (roundtime2 > 0) {
                                    roundtime2 = roundtime2 - secondtime;
                                    int secondsss = (int) (roundtime2 / 1000);
                                    int minutesss = secondsss / 60;
                                    secondsss = secondsss % 60;
                                    textView.setText(String.format("%d:%02d", minutesss, secondsss));

                                    handler.postDelayed(r, 1000);
                                }else{
                                    textView.setText("Over");
                                }

                            }
                        };
                    }
        );




    }
}

0 个答案:

没有答案