自定义控件------倒计时的小demo

package com.kallaite.rxjavademo.customcontrols;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.TextView;


public class TimerTextView extends TextView implements Runnable{
public TimerTextView(Context context) {
super(context);
init(context,null);
}

public TimerTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context,attrs);
}

public TimerTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context,attrs);
}

private int day;
private int hours;
private int mmin;
private int second;

private boolean flagRun;

private void init(Context context, AttributeSet attrs) {

}

public void setArrays(int day,int hours,int mmin,int second){
this.day = day;
this.hours = hours;
this.mmin = mmin;
this.second = second;
}
public void onStart(){
flagRun = true;
run();
}

public boolean isRun(){
return flagRun;
}

public void onstop(){
flagRun = false;
}

@Override
public void run() {
if (flagRun){
boolean b = runScripty();
if (b){
setText("倒计时结束");
    }else {
     setText(day + " " + hours + " 小时 " + mmin + " 分钟 " + second + "");
      postDelayed(this,1000);
      }
   }else {
   removeCallbacks(this);
   }
   }

private boolean runScripty() {
second--;
if (second < 0){
mmin--;
second = 59;
if (mmin < 0){
hours--;
mmin = 59;
if (hours < 0){
day--;
hours = 23;
if (day < 0){
return true;
}
}
}
}
return false;
}
}
直接拿到项目中用就可以了,自定义控件使用大家都懂的。只是具有了自动更新的功能,这里的自动更新的实现当然只通过线程来实现了,所以要继承Runnable接口。
开启调用 onStart()方法。 暂停 onStop()方法, 设置时间通过 setArrays()来完成就OK了;



posted @ 2017-06-27 15:42  wlwqnj  阅读(153)  评论(0编辑  收藏  举报