• 使用CounterDownTimer实现时分秒倒计时


       使用android提供的android.os包中的 counterDownTimer可以很方便的实现倒计时功能,具体如下:

       

    import android.os.CountDownTimer;
    
    public class Couterdown extends CountDownTimer {
    
        public Couterdown(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void onFinish() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void onTick(long arg0) {
            
            
        }
        public String  toClock(long millisUntilFinished)
        
        {
            long hour = millisUntilFinished/(60*60*1000);
            long minute = (millisUntilFinished - hour*60*60*1000)/(60*1000);
            long second = (millisUntilFinished - hour*60*60*1000   - minute*60*1000)/1000;
            if(second >= 60 )
            {
              second = second % 60;
              minute+=second/60;
            }
            if(minute >= 60)
            {
              minute = minute %60;
              hour += minute/60;
            }
            String sh = "";
            String sm ="";
            String ss = "";
            if(hour <10)
            {
               sh = "0" + String.valueOf(hour);
            }else
            {
               sh = String.valueOf(hour);
            }
            if(minute <10)
            {
               sm = "0" + String.valueOf(minute);
            }else
            {
               sm = String.valueOf(minute);
            }
            if(second <10)
            {
               ss = "0" + String.valueOf(second);
            }else
            {
               ss = String.valueOf(second);
            }
            return sh +":"+ sm+":" + ss;
        }
    
    }

    首先新建一个CounterDown类继承counterDownTimer,然后在activity中使用,并将结果显示在textView上

    public class MainActivity extends Activity {
    
        TextView tv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv=(TextView)findViewById(R.id.textView1);
            new Couterdown(30000,1000){
                @Override
                public void onTick(long millisUntilFinished) {
                    tv.setText(toClock(millisUntilFinished));
                    
                }
                @Override
                public String toClock(long millis) {
                    return super.toClock(millis);
                }            
            }.start();
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }

    最终结果如图:

    之前因为没解决8小时误差的问题,所以用的上面的方法,其实可以像下面这样做

    ublic class MainActivity extends Activity {
    
        TextView tv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv=(TextView)findViewById(R.id.textView1);
            new CountDownTimer(70000,1000){
                @Override
                public void onTick(long millisUntilFinished) {
                    SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");//初始化Formatter的转换格式。  
                    formatter.setTimeZone(TimeZone.getTimeZone("GMT+00:00"));
                    String hms = formatter.format(millisUntilFinished);  
                    tv.setText(hms);
                    
                }
    
                @Override
                public void onFinish() {
                    // TODO Auto-generated method stub
                    
                }
            
            }.start();
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
    }

    不过最后都会有个小问题,就是最后一秒不会再减少,应该是counter类的参数问题,哪位大虾看到了给小弟说说解决的办法吧~~~

  • 相关阅读:
    STM32 Timer : Base Timer, Input Capture, PWM, Output Compare
    Bus Blaster v4 design overview
    JTAG Communications model
    ARM JTAG 信号 RTCK 应该如何处理?
    HappyJTAG2
    用SWD调试接口测量代码运行时间 ( SWO )
    ARM Cortex Design Considerations for Debug
    Technical Information ARM-related JTAG / SWD / SWV / ETM Target Interfaces
    Keil debugging techniques and alternative printf (SWO function)
    Serial Wire Viewer (SWV)
  • 原文地址:https://www.cnblogs.com/Bird-Man/p/3978012.html
Copyright © 2020-2023  润新知