Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 24小时倒计时计时器,具有三个独立的文本视图,分别为小时、分钟、秒_Java_Android_Timer - Fatal编程技术网

Java 24小时倒计时计时器,具有三个独立的文本视图,分别为小时、分钟、秒

Java 24小时倒计时计时器,具有三个独立的文本视图,分别为小时、分钟、秒,java,android,timer,Java,Android,Timer,我正在尝试实现一个24小时倒计时计时器,其中包含三个独立的文本视图,一个保存小时,一个保存分钟,一个保存秒 按下开始时间按钮时,我希望计时器倒计时 我在这方面做了很多研究,并尝试实施许多示例,从文档中学习并根据自己的喜好修改它,但我无法生成一个解决方案 问题是,对于android中的倒计时计时器,通常只使用一个文本视图来实现,该文本视图被视为一个带有时间的长字符串,然后从那里开始倒计时。因为我有三个独立的文本视图,所以我不确定如何接近我的24小时倒计时 我很惊讶我找不到很多关于这个问题的信

我正在尝试实现一个24小时倒计时计时器,其中包含三个独立的文本视图,一个保存小时,一个保存分钟,一个保存秒

按下开始时间按钮时,我希望计时器倒计时

我在这方面做了很多研究,并尝试实施许多示例,从文档中学习并根据自己的喜好修改它,但我无法生成一个解决方案

问题是,对于android中的倒计时计时器,通常只使用一个文本视图来实现,该文本视图被视为一个带有时间的长字符串,然后从那里开始倒计时。因为我有三个独立的文本视图,所以我不确定如何接近我的24小时倒计时

我很惊讶我找不到很多关于这个问题的信息

例如,这里我有一个倒计时,但这只是使用一个文本视图。我将如何制作一些考虑到我的三个单独的文本视图(小时、分钟和秒)的内容,并相应地计数

    Button buttonStartTime;                 // clicking this button will start time count down 
    TextView textViewShowTime;              // will show the time 
    CountDownTimer countDownTimer;          // built in android class CountDownTimer
    long totalTimeCountInMilliseconds;      // total count down time in milliseconds 
    long timeBlinkInMilliseconds;           // start time of start blinking 
    boolean blink;                          // controls the blinking .. on and off 

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        getReferenceOfViews ();                         // get all views 
        setActionListeners ();                          // set action listerns 

        totalTimeCountInMilliseconds = 60 * 1000;      // time count for 3 minutes = 180 seconds
        timeBlinkInMilliseconds = 30 * 1000;            // blink starts at 1 minutes = 60 seconds
    }

    private void setActionListeners() {

        buttonStartTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                textViewShowTime.setTextAppearance(getApplicationContext(), R.style.normalText);

                countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) {
                    // 500 means, onTick function will be called at every 500 milliseconds 

                    @Override
                    public void onTick(long leftTimeInMilliseconds) {
                        long seconds = leftTimeInMilliseconds / 1000;

                        if ( leftTimeInMilliseconds < timeBlinkInMilliseconds ) {
                            textViewShowTime.setTextAppearance(getApplicationContext(), R.style.blinkText);
                            // change the style of the textview .. giving a red alert style 

                            if ( blink ) {
                                textViewShowTime.setVisibility(View.VISIBLE);
                                // if blink is true, textview will be visible
                            } else {
                                textViewShowTime.setVisibility(View.INVISIBLE);
                            }

                            blink = !blink;         // toggle the value of blink
                        }

                        textViewShowTime.setText(String.format("%02d", seconds / 60) + ":" + String.format("%02d", seconds % 60));
                        // format the textview to show the easily readable format
                    }

                    @Override
                    public void onFinish() {
                        // this function will be called when the timecount is finished
                        textViewShowTime.setText("Time up!");
                        textViewShowTime.setVisibility(View.VISIBLE);
                    }

                }.start();

            }
        });
    }

    private void getReferenceOfViews() {

        buttonStartTime = (Button) findViewById(R.id.btnStartTime);
        textViewShowTime = (TextView) findViewById(R.id.tvTimeCount);
    }
}
按钮启动时间;//单击此按钮将开始倒计时
TextView textViewShowTime;//将显示时间
倒计时倒计时;//内置安卓类倒计时器
长TotalTimeCountin毫秒;//总倒计时时间(毫秒)
长时间闪烁毫秒;//开始闪烁的开始时间
布尔闪烁;//控制闪烁。。断断续续
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GetReferenceOfView();//获取所有视图
setActionListeners();//设置操作侦听器
TotalTimeCountInMillistics=60*1000;//3分钟的时间计数=180秒
timeblinkinmillizes=30*1000;//闪烁从1分钟=60秒开始
}
私有void setActionListeners(){
buttonStartTime.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
textViewShowTime.setTextAppearance(getApplicationContext(),R.style.normalText);
countDownTimer=新的countDownTimer(TotalTimeCountin毫秒,500){
//500表示每500毫秒调用一次onTick函数
@凌驾
公共void onTick(长LeftTimein毫秒){
长秒=LeftTimein毫秒/1000;
if(LeftTimeinMillions
编辑:现在我有这个:

private void setActionListeners() {

        start_timer.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

               // textViewShowTime.setTextAppearance(getApplicationContext(), R.style.normalText);

                countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) {
                    // 500 means, onTick function will be called at every 500 milliseconds

                    @Override
                    public void onTick(long leftTimeInMilliseconds) {
                        int seconds = leftTimeInMilliseconds / 1000 % 60;
                        int minutes = leftTimeInMilliseconds / 60000 % 60;
                        int hours = leftTimeInMilliseconds / 3600000;




                        if ( leftTimeInMilliseconds < timeBlinkInMilliseconds ) {
                           // textViewShowTime.setTextAppearance(getApplicationContext(), R.style.blinkText);
                            // change the style of the textview .. giving a red alert style

                            if ( blink ) {
                                number_text.setVisibility(View.VISIBLE);
                                minute_text.setVisibility(View.VISIBLE);
                                second_text.setVisibility(View.VISIBLE);


                                // if blink is true, textview will be visible
                            } else {
                                number_text.setVisibility(View.INVISIBLE);
                                minute_text.setVisibility(View.INVISIBLE);
                                second_text.setVisibility(View.INVISIBLE);


                            }

                            blink = !blink;         // toggle the value of blink
                        }

                        number_text = String.format("%02d", seconds % 60);
                        minute_text = String.format("%02d", seconds / 60);
                        second_text = String.format("%02d", seconds / 3600);                        // format the textview to show the easily readable format
                    }

                    @Override
                    public void onFinish() {
                        // this function will be called when the timecount is finished
                        //textViewShowTime.setText("Time up!");
                        //textViewShowTime.setVisibility(View.VISIBLE);
                    }

                }.start();

            }
        });
    }

    private void getReferenceOfViews() {

        start_timer = (Button) findViewById(R.id.start_button);
        number_text = (TextView) findViewById(R.id.hour_progress_number);
        minute_text = (TextView) findViewById(R.id.minute_progress_number);
        second_text = (TextView) findViewById(R.id.second_progress_number);


    }
private void setActionListeners(){
start\u timer.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//textViewShowTime.setTextAppearance(getApplicationContext(),R.style.normalText);
countDownTimer=新的countDownTimer(TotalTimeCountin毫秒,500){
//500表示每500毫秒调用一次onTick函数
@凌驾
公共void onTick(长LeftTimein毫秒){
int seconds=leftTimein毫秒/1000%60;
int minutes=LeftTimein毫秒/60000%60;
整数小时=LeftTimein毫秒/3600000;
if(LeftTimeinMillionstextViewShowTime.setText(String.format("%02d", seconds / 60) + ":" + String.format("%02d", seconds % 60));
textViewSeconds.setText(String.format("%02d", seconds % 60));
textViewMinutes.setText(String.format("%02d", seconds / 60));
textViewHours.setText(String.format("%02d", seconds / 3600));
int secs = leftTimeInMilliseconds / 1000 % 60;
int mins = leftTimeInMilliseconds / 60000 % 60;
int hours = leftTimeInMilliseconds / 3600000;
   long startTime = System.currentTimeMillis();

   //adding 24 hours milliseconds with current time of milliseconds to make it 24 hours milliseconds.
   milliseconds = System.currentTimeMillis() + 86400000; // 24 hours = 86400000 milliseconds 

    CountDownTimer cdt = new CountDownTimer(milliseconds,1000) {
    @Override
    public void onTick(long millisUntilFinished) {

    startTime =startTime -1;
    Long serverUptimeSeconds =
            (millisUntilFinished - startTime ) / 1000;

    // now you repalce txtViewHours,  txtViewMinutes, txtViewSeconds by your textView.      

    String hoursLeft = String.format("%d", (serverUptimeSeconds % 86400) / 3600);
    txtViewHours.setText(hoursLeft);
    Log.d("hoursLeft",hoursLeft);

    String minutesLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) / 60);
    txtViewMinutes.setText(minutesLeft);
    Log.d("minutesLeft",minutesLeft);

    String secondsLeft = String.format("%d", ((serverUptimeSeconds % 86400) % 3600) % 60);
    txtViewSecond.setText(secondsLeft);
    Log.d("secondsLeft",secondsLeft);


    }

    @Override
    public void onFinish() {
        Log.i(TAG, "Timer finished");
    }
};

cdt.start();