Android countdown CountDownTimer note

Source: Internet
Author: User

Android countdown CountDownTimer note

Easy countdown for Android: CountDownTimer

CountDownTimer provided by the system

When I checked the information, I found the CountDownTimer class and decisively abandoned the previous countdown practice.


Function:

30 seconds countdown interval: 1 second


Parameters:

Mc. start (); Method start

Mc. cancel (); Method end

New MyCountDownTimer (30000,100 0); the first parameter indicates that the total time is 30000 milliseconds, with an interval of 1000 milliseconds



Directly run the Code:

Package com. example. daojishi; import android. app. activity; import android. OS. bundle; import android. OS. countDownTimer; import android. util. log; import android. view. view; import android. widget. textView; import android. widget. toast;/***** @ author baozi ** countdown class CountDownTimer **/public class MainActivity extends Activity {private MyCountDownTimer mc; private TextView TV; @ Overrideprotected void onCreate (Bu Ndle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); TV = (TextView) findViewById (R. id. show); mc = new MyCountDownTimer (30000,100 0); mc. start ();} public void oncancel (View view) {Toast. makeText (MainActivity. this, "cancel", Toast. LENGTH_LONG ). show (); // toast has a display time delay mc. cancel ();} public void restart (View view) {Toast. makeText (MainActivity. this, "Start again", Toast. LE NGTH_LONG ). show (); // toast has a display time delay mc. start ();}/*** inherits CountDownTimer prevention ** override the methods onTick () and onFinish () of the parent class () */class MyCountDownTimer extends CountDownTimer {/***** @ param millisInFuture * indicates the total number of Countdown times in milliseconds. ** for example, millisInFuture = 1000 indicates 1 second. ** @ param countDownInterval * indicates interval: How many microseconds does one onTick method call? ** example: countDownInterval = 1000; indicates that onTick () **/public MyCountDownTimer (long millisInFuture, lo Ng countDownInterval) {super (millisInFuture, countDownInterval) ;}@ Overridepublic void onFinish () {TV. setText ("done") ;}@ Overridepublic void onTick (long millisUntilFinished) {Log. I ("MainActivity", millisUntilFinished + ""); TV. setText ("Countdown (" + millisUntilFinished/1000 + ")... ");}}} // please wait until then // zookeeper // zookeeper without any bugs! // Zookeeper has been completed before // zookeeper has been executed before being executed ┛ ┗ ┻ ┛

Layout:

     
      
      
  
 


Appendix:

CountDownTimer source code:

/* * Copyright (C) 2008 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package android.os;import android.util.Log;/** * Schedule a countdown until a time in the future, with * regular notifications on intervals along the way. * * Example of showing a 30 second countdown in a text field: * * 
 * new CountDownTimer(30000, 1000) { * *     public void onTick(long millisUntilFinished) { *         mTextField.setText("seconds remaining: " + millisUntilFinished / 1000); *     } * *     public void onFinish() { *         mTextField.setText("done!"); *     } *  }.start(); * 
* * The calls to {@link #onTick(long)} are synchronized to this object so that * one call to {@link #onTick(long)} won't ever occur before the previous * callback is complete. This is only relevant when the implementation of * {@link #onTick(long)} takes an amount of time to execute that is significant * compared to the countdown interval. */public abstract class CountDownTimer { /** * Millis since epoch when alarm should stop. */ private final long mMillisInFuture; /** * The interval in millis that the user receives callbacks */ private final long mCountdownInterval; private long mStopTimeInFuture; /** * @param millisInFuture The number of millis in the future from the call * to {@link #start()} until the countdown is done and {@link #onFinish()} * is called. * @param countDownInterval The interval along the way to receive * {@link #onTick(long)} callbacks. */ public CountDownTimer(long millisInFuture, long countDownInterval) { mMillisInFuture = millisInFuture; mCountdownInterval = countDownInterval; } /** * Cancel the countdown. */ public final void cancel() { mHandler.removeMessages(MSG); } /** * Start the countdown. */ public synchronized final CountDownTimer start() { if (mMillisInFuture <= 0) { onFinish(); return this; } mStopTimeInFuture = SystemClock.elapsedRealtime() + mMillisInFuture; mHandler.sendMessage(mHandler.obtainMessage(MSG)); return this; } /** * Callback fired on regular interval. * @param millisUntilFinished The amount of time until finished. */ public abstract void onTick(long millisUntilFinished); /** * Callback fired when the time is up. */ public abstract void onFinish(); private static final int MSG = 1; // handles counting down private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { synchronized (CountDownTimer.this) { final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime(); if (millisLeft <= 0) { onFinish(); } else if (millisLeft < mCountdownInterval) { // no tick, just delay until done sendMessageDelayed(obtainMessage(MSG), millisLeft); } else { long lastTickStart = SystemClock.elapsedRealtime(); onTick(millisLeft); // take into account user's onTick taking time to execute long delay = lastTickStart + mCountdownInterval - SystemClock.elapsedRealtime(); // special case: user's onTick took more than interval to // complete, skip to next interval while (delay < 0) delay += mCountdownInterval; sendMessageDelayed(obtainMessage(MSG), delay); } } } };}

Daily improvement step forward


Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.