国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android自定義view倒計(jì)時(shí)60秒

2019-12-12 00:35:21
字體:
供稿:網(wǎng)友

一個(gè)簡單的自定義view。在里面封裝了時(shí)間的倒計(jì)時(shí),以及距離現(xiàn)在時(shí)間的時(shí)間計(jì)算

public class TimerTextView extends LinearLayout{  // 時(shí)間變量  private long second;  private TextView tv_Time;  private TextView tv_Unit;  RefreshCallBack refreshCallBack;   public TimerTextView(Context context, AttributeSet attrs, int defStyleAttr) {    super(context, attrs, defStyleAttr);    initView(context);  }   public TimerTextView(Context context, AttributeSet attrs) {    super(context, attrs);    initView(context);  }   public TimerTextView(Context context) {    super(context);    initView(context);  }   private void initView(Context context) {    // 加載布局    LayoutInflater.from(context).inflate(R.layout.timer_text_view, this);    tv_Time = (TextView) findViewById(R.id.countdown_time);    tv_Unit = (TextView) findViewById(R.id.countdown_unit);  }   @Override  protected void onDetachedFromWindow() {    super.onDetachedFromWindow();    // 在控件被銷毀時(shí)移除消息    handler.removeMessages(0);  }   private boolean isRun = true; // 是否啟動(dòng)了  private Handler handler = new Handler(Looper.getMainLooper()) {    @Override    public void handleMessage(Message msg) {      switch (msg.what) {        case 0:          if (isRun) {            if (second > 0) {              second = second - 1;              handler.sendEmptyMessageDelayed(0, 1000);            }else{              if(null != refreshCallBack){                refreshCallBack.refreshCallBack(true);                isRun = false;              }            }          }          break;      }    }  };    public boolean isRun() {    return isRun;  }   /**   * 開始計(jì)時(shí)   */  public void start() {    isRun = true;    handler.removeMessages(0);    handler.sendEmptyMessage(0);  }   /**   * 結(jié)束計(jì)時(shí)   */  public void stop() {    isRun = false;  }   public void diffTime(String endTime) {    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);    String startTime = sdf.format(new Date());    String format = "yyyy-MM-dd hh:mm:ss";    //按照傳入的格式生成一個(gè)simpledateformate對象    SimpleDateFormat sd = new SimpleDateFormat(format);     long nd = 1000 * 24 * 60 * 60;//一天的毫秒數(shù)    long nh = 1000 * 60 * 60;//一小時(shí)的毫秒數(shù)    long nm = 1000 * 60;//一分鐘的毫秒數(shù)    long ns = 1000;//一秒鐘的毫秒數(shù)long diff;try {    //獲得兩個(gè)時(shí)間的毫秒時(shí)間差異    long diff = 0;    try {      diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();    } catch (ParseException e) {      e.printStackTrace();    }    if (diff < 0) {      if(null != refreshCallBack){        refreshCallBack.showCallBack(false);      }      return ;    } else {      if(null != refreshCallBack){        refreshCallBack.showCallBack(true);      }      long day = diff / nd;//計(jì)算差多少天      if (day > 0) {        tv_Time.setText(String.valueOf(day));        tv_Unit.setText("天");      } else {        long hour = diff % nd / nh;//計(jì)算差多少小時(shí)        if (hour > 0) {          tv_Time.setText(String.valueOf(hour));          tv_Unit.setText("小時(shí)");        } else {          long min = diff % nd % nh / nm;//計(jì)算差多少分鐘          if (min > 0) {            tv_Time.setText(String.valueOf(min));            tv_Unit.setText("分鐘");          } else {            second = diff%nd%nh%nm/ns;//計(jì)算差多少秒//輸出結(jié)果//            if(min > 0){//              stringBuffer.append(sec+"秒");//            }            handler.removeMessages(0);            handler.sendEmptyMessage(0);             tv_Unit.setText("即將開始");            tv_Time.setVisibility(GONE);          }        }      }    }  }   public void setTextViewSize(int size){    if(null != tv_Time){      tv_Time.setTextSize(size);    }    if(null != tv_Unit){      tv_Unit.setTextSize(size);    }  }   public void setTextViewSpace(String type){    if("Big".equals(type)){      LinearLayout.LayoutParams lp2 = (LayoutParams) tv_Time.getLayoutParams();      lp2.setMargins(0, 0, DensityUtil.dip2px(tv_Time.getContext(), 12), 0);      tv_Time.setLayoutParams(lp2);         tv_Time.setBackground(getResources().getDrawable(R.drawable.bg_video_count_down));    }else if("Middle".equals(type)){      tv_Time.setPadding(12, 0, 12, 0);      LinearLayout.LayoutParams lp2 = (LayoutParams) tv_Time.getLayoutParams();      lp2.setMargins(0, 0,12, 0);      tv_Time.setLayoutParams(lp2);    }else {      tv_Time.setPadding(8, 0, 8, 0);      LinearLayout.LayoutParams lp2 = (LayoutParams) tv_Time.getLayoutParams();      lp2.setMargins(0, 0, 8, 0);      tv_Time.setLayoutParams(lp2);    }  }   public void setRefreshCallBack(RefreshCallBack refreshCallBack){    this.refreshCallBack = refreshCallBack;  }   public interface RefreshCallBack {    public void refreshCallBack(boolean flag);    public void showCallBack(boolean flag);  } }

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐业县| 萨嘎县| 阳原县| 苏州市| 临漳县| 开化县| 濮阳市| 确山县| 南充市| 广丰县| 北宁市| 金塔县| 桐城市| 八宿县| 花莲市| 海盐县| 南召县| 长顺县| 偏关县| 即墨市| 横峰县| 房产| 稷山县| 施秉县| 东城区| 松溪县| 乐东| 湛江市| 吐鲁番市| 秭归县| 连山| 睢宁县| 新昌县| 南溪县| 凌云县| 高青县| 甘孜县| 神池县| 缙云县| 峨眉山市| 台中县|