欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android基于CountDownView的時間控件擴(kuò)展

 更新時間:2017年02月08日 14:21:14   作者:騎蝸??词澜? 
這篇文章主要為大家詳細(xì)介紹了Android基于CountDownView的時間控件擴(kuò)展,具有一定的參考價值,感興趣的小伙伴們可以參考一下

首先,新年的一年里祝大家,心想事成,雞年大吉。去年的時候,我們做時間控件的時候一直遺留一個問題那就是正計時控件一直沒有好的解決方案,我們很想把CountDownView既支持正計時又能支持倒計時?;谶@個想法,便有了今天這篇文章,原理不在介紹,其實很簡單,主要是我們知道怎么用,此控件的優(yōu)點有:

* 實現(xiàn)了正計時倒計時的統(tǒng)一
* 優(yōu)化了Adapter,不再綁定控件Id
* 一個屬性實現(xiàn)正倒計時
* 不在為具體的時間屬性設(shè)置別名

具體用法

1、xml文件

屬性 app:isCountUp=”false”代表倒計時 true為正計時

<com.delta.library.CountTimeView
    android:id="@+id/cv_countView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_gravity="center_horizontal"
    android:layout_marginTop="20dp"
    app:isCountUp="false"
    app:isShowDay="true"
    app:isShowHour="true"
    app:isShowMillisecond="false"
    app:isShowMinute="true"
    app:isShowSecond="true"
    app:suffixDay="天"
    app:suffixDayRightMargin="10dp"
    app:suffixGravity="center"
    app:suffixHour=":"
    app:suffixMinute=":"
    app:suffixTextColor="#e61010"
    app:suffixTextSize="17sp"
    app:timeTextColor="#e60b0b"
    app:timeTextSize="20sp" />

2、實體類

要繼承TimeEntity
eg:

package com.delta.counttimeview;

/**
 * @description :正計時的
 * @autHor : V.Wenju.Tian
 * @date : 2017/2/6 15:31
 */


public class ItemEntity extends TimeEntity {

  private String title;

  private Long time;

  public ItemEntity() {
  }

  public ItemEntity(int id, long endTime, long createTime, String title, Long upTime) {
    super(id, endTime, createTime);
    this.title = title;
    this.time = upTime;
  }

  public Long getTime() {
    return time;
  }

  public void setTime(Long time) {
    this.time = time;
  }

  public void setTitle(String title) {
    this.title = title;
  }

  public String getTitle() {
    return title;
  }
}

3、Adapter如下

倒計時 主要是==要注意在數(shù)據(jù)源的時候初始化endTime屬性,也就是截止時間還有相應(yīng)的EntityId==

public class CountDownActivity extends AppCompatActivity {


  private RecyclerView rv;
  private List<ItemEntity> datas = new ArrayList<>();
  private ItemCountViewAdapter<ItemEntity> mMyAdapter;

  @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_count_down);
    rv = ((RecyclerView) findViewById(R.id.rv));
    long time =System.currentTimeMillis();
    for (int i = 0; i < 100; i++) {
      ItemEntity entity = new ItemEntity();
      entity.setEntityId(i);
      entity.setTitle("第" + i);
      entity.setTime(i *60 *1000l);
      entity.setEndTime(time + entity.getTime());
      datas.add(entity);
    }
    mMyAdapter = new ItemCountViewAdapter<ItemEntity>(this, datas) {
      @Override
      protected int getCountViewId() {
        return R.id.cv_countView;
      }

      @Override
      protected int getLayoutId() {
        return R.layout.item_count_down;
      }

      @Override
      protected void convert(ItemTimeViewHolder holder, ItemEntity itemEntity, int position) {

        holder.setText(R.id.tv_title, itemEntity.getTitle());
      }
    };
    rv.setLayoutManager(new LinearLayoutManager(this));
    rv.setAdapter(mMyAdapter);

  }

  @Override
  protected void onResume() {
    super.onResume();
    if (null != mMyAdapter) {
      mMyAdapter.startRefreshTime();
    }
  }

  @Override
  protected void onPause() {
    super.onPause();
    if (null != mMyAdapter) {
      mMyAdapter.cancelRefreshTime();
    }
  }

  @Override
  public void onDestroy() {
    super.onDestroy();
    if (null != mMyAdapter) {
      mMyAdapter.cancelRefreshTime();
    }
  }
}

正計時 ==主要是在獲得數(shù)據(jù)源的時候初始化createTime,也就是起始時間和EntityId==

public class CountUpActivity extends AppCompatActivity {


  private RecyclerView rv;
  private List<ItemEntity> datas = new ArrayList<>();
  private ItemCountViewAdapter<ItemEntity> mMyAdapter;

  @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_count_up);
    rv = ((RecyclerView) findViewById(R.id.rv));

    for (int i = 0; i < 100; i++) {
      ItemEntity entity = new ItemEntity();
      entity.setEntityId(i);
      entity.setTitle("第" + i);
      entity.setTime(i * 60 * 60 * 1000l);
      entity.setCreateTime(System.currentTimeMillis() - entity.getTime());
      datas.add(entity);
    }
    mMyAdapter = new ItemCountViewAdapter<ItemEntity>(this, datas) {
      @Override
      protected int getCountViewId() {
        return R.id.cv_countView;
      }

      @Override
      protected int getLayoutId() {
        return R.layout.list_item;
      }

      @Override
      protected void convert(ItemTimeViewHolder holder, ItemEntity itemEntity, int position) {

        holder.setText(R.id.tv_title, itemEntity.getTitle());
      }
    };
    rv.setLayoutManager(new LinearLayoutManager(this));
    rv.setAdapter(mMyAdapter);

  }
  @Override
  protected void onResume() {
    super.onResume();
    if (null != mMyAdapter) {
      mMyAdapter.startRefreshTime();
    }
  }

  @Override
  protected void onPause() {
    super.onPause();
    if (null != mMyAdapter) {
      mMyAdapter.cancelRefreshTime();
    }
  }

  @Override
  public void onDestroy() {
    super.onDestroy();
    if (null != mMyAdapter) {
      mMyAdapter.cancelRefreshTime();
    }
  }
}

下載源碼

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

相關(guān)文章

  • 詳解Android 利用Iptables實現(xiàn)網(wǎng)絡(luò)黑白名單(防火墻)

    詳解Android 利用Iptables實現(xiàn)網(wǎng)絡(luò)黑白名單(防火墻)

    這篇文章主要介紹了詳解Android 利用Iptables實現(xiàn)網(wǎng)絡(luò)黑白名單(防火墻),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Android UI中TextView的使用方法

    Android UI中TextView的使用方法

    這篇文章主要介紹了Android UI中TextView的使用方法的相關(guān)資料,希望通過本文大家能掌握TextView的使用方法,需要的朋友可以參考下
    2017-09-09
  • Android遠(yuǎn)程獲取圖片并本地緩存

    Android遠(yuǎn)程獲取圖片并本地緩存

    這篇文章主要介紹了Android遠(yuǎn)程獲取圖片并本地緩存方法,對于遠(yuǎn)程圖片等相對比較大的資源采用異步線程中去獲取本地做緩存,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android仿QQ、微信聊天界面長按提示框效果

    Android仿QQ、微信聊天界面長按提示框效果

    最近在工作項目中要實現(xiàn)一個長按提示 “復(fù)制” 的功能,類似于QQ、微信聊天界面長按提示框效果,本來想偷懶在網(wǎng)上找個開源的項目用,但是看了好幾個都不是很滿意,所以就打算按照自己的思路來實現(xiàn)一個。下面分享給大家,有需要的朋友們可以參考借鑒。
    2016-11-11
  • Android編程使用緩存優(yōu)化ListView的方法

    Android編程使用緩存優(yōu)化ListView的方法

    這篇文章主要介紹了Android編程使用緩存優(yōu)化ListView的方法,涉及ListView針對sd卡緩存及內(nèi)存緩存的優(yōu)化技巧,需要的朋友可以參考下
    2015-12-12
  • 圖文詳解Android屬性動畫

    圖文詳解Android屬性動畫

    這篇文章主要以圖文結(jié)合的方式詳細(xì)介紹了Android屬性動畫,本文主要講解如何使用屬性動畫,需要的朋友可以參考下
    2015-12-12
  • android編程實現(xiàn)電話錄音的方法

    android編程實現(xiàn)電話錄音的方法

    這篇文章主要介紹了android編程實現(xiàn)電話錄音的方法,涉及Android監(jiān)聽電話通話及音頻采集的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • Android實現(xiàn)自定義驗證碼輸入框效果(實例代碼)

    Android實現(xiàn)自定義驗證碼輸入框效果(實例代碼)

    這篇文章主要介紹了Android實現(xiàn)自定義驗證碼輸入框效果,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • Android顏色配置器配置方法

    Android顏色配置器配置方法

    這篇文章主要介紹了Android顏色配置器配置方法,非常不錯,具有參考解決價值,需要的朋友可以參考下
    2018-04-04
  • android 拍照和上傳的實現(xiàn)代碼

    android 拍照和上傳的實現(xiàn)代碼

    怎么把拍照好的圖片數(shù)據(jù)放到gallery中顯示又要保存到sdcard上,請看下面的實例
    2013-09-09

最新評論