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

首頁 > 系統 > Android > 正文

Android自定義view倒計時60秒

2019-10-21 21:41:35
字體:
來源:轉載
供稿:網友

一個簡單的自定義view。在里面封裝了時間的倒計時,以及距離現在時間的時間計算

public class TimerTextView extends LinearLayout{  // 時間變量  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();    // 在控件被銷毀時移除消息    handler.removeMessages(0);  }   private boolean isRun = true; // 是否啟動了  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;  }   /**   * 開始計時   */  public void start() {    isRun = true;    handler.removeMessages(0);    handler.sendEmptyMessage(0);  }   /**   * 結束計時   */  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";    //按照傳入的格式生成一個simpledateformate對象    SimpleDateFormat sd = new SimpleDateFormat(format);     long nd = 1000 * 24 * 60 * 60;//一天的毫秒數    long nh = 1000 * 60 * 60;//一小時的毫秒數    long nm = 1000 * 60;//一分鐘的毫秒數    long ns = 1000;//一秒鐘的毫秒數long diff;try {    //獲得兩個時間的毫秒時間差異    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;//計算差多少天      if (day > 0) {        tv_Time.setText(String.valueOf(day));        tv_Unit.setText("天");      } else {        long hour = diff % nd / nh;//計算差多少小時        if (hour > 0) {          tv_Time.setText(String.valueOf(hour));          tv_Unit.setText("小時");        } else {          long min = diff % nd % nh / nm;//計算差多少分鐘          if (min > 0) {            tv_Time.setText(String.valueOf(min));            tv_Unit.setText("分鐘");          } else {            second = diff%nd%nh%nm/ns;//計算差多少秒//輸出結果//            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);  } }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。 


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邛崃市| 襄樊市| 萝北县| 卓资县| 台东县| 内江市| 盐池县| 三明市| 玉林市| 剑河县| 雷波县| 苗栗市| 汽车| 游戏| 镇康县| 丹棱县| 合川市| 奉新县| 昌平区| 元氏县| 陕西省| 千阳县| 涿鹿县| 大邑县| 静海县| 奈曼旗| 确山县| 江油市| 永平县| 洞口县| 广灵县| 青海省| 柞水县| 扶风县| 长沙县| 新疆| 永和县| 措勤县| 昆山市| 原阳县| 宜州市|