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

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

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

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

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

具體用法

1、xml文件

屬性 app:isCountUp=”false”代表倒計(jì)時(shí) true為正計(jì)時(shí)

<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、實(shí)體類

要繼承TimeEntity
eg:

package com.delta.counttimeview;

/**
 * @description :正計(jì)時(shí)的
 * @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如下

倒計(jì)時(shí) 主要是==要注意在數(shù)據(jù)源的時(shí)候初始化endTime屬性,也就是截止時(shí)間還有相應(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();
    }
  }
}

正計(jì)時(shí) ==主要是在獲得數(shù)據(jù)源的時(shí)候初始化createTime,也就是起始時(shí)間和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();
    }
  }
}

下載源碼

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

相關(guān)文章

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

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

    這篇文章主要介紹了詳解Android 利用Iptables實(shí)現(xiàn)網(wǎng)絡(luò)黑白名單(防火墻),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    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)程獲取圖片并本地緩存方法,對(duì)于遠(yuǎn)程圖片等相對(duì)比較大的資源采用異步線程中去獲取本地做緩存,感興趣的小伙伴們可以參考一下
    2016-02-02
  • Android仿QQ、微信聊天界面長(zhǎng)按提示框效果

    Android仿QQ、微信聊天界面長(zhǎng)按提示框效果

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

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

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

    圖文詳解Android屬性動(dòng)畫

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

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

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

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

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

    Android顏色配置器配置方法

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

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

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

最新評(píng)論