https://github.com/zzyyppqq/countdowntimerlist
https://github.com/zzyyppqq/countdowntimerlist
countdowntimer handlerthread
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/zzyyppqq/countdowntimerlist
- Owner: zzyyppqq
- Created: 2018-11-05T11:59:28.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-11-14T08:08:16.000Z (over 6 years ago)
- Last Synced: 2024-12-29T15:19:53.361Z (5 months ago)
- Topics: countdowntimer, handlerthread
- Language: Java
- Size: 2.45 MB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CountDownTimerList
CountDownTimerList 单线程(HanderThread)实现列表倒计时
-
builb.gradle
```
implementation 'com.zyp.timerlist:timerlist:1.0.1'
```pom.xml
```com.zyp.timerlist
timerlist
1.0.1
pom```
- 列表倒计时(支持RecyclerView和ListView)
```
// Adapter 中使用示例 ,一般在Adapter构造函数中初始化XListCountDownTimerclass TimeDownAdapter extends BaseAdapter {
private final XListCountDownTimer mXTimeCounter;
public TimeDownAdapter() {
mXTimeCounter = new XListCountDownTimer();
}@Override
protected BaseViewHolder createViewHolder(View view) {
return new TimeDownViewHolder(view, mXTimeCounter);
}@Override
protected int itemLayout() {
return R.layout.item_layout;
}class TimeDownViewHolder extends BaseViewHolder {
private XListCountDownTimer mXTimeCounter;@BindView(R.id.tv_down_time)
TextView tvDownTime;public TimeDownViewHolder(View itemView, XListCountDownTimer xTimeCounter) {
super(itemView);
this.mXTimeCounter = xTimeCounter;
ButterKnife.bind(this, itemView);
}@Override
public void bindData(TimeEntry timeEntry) {
final long time = timeEntry.getTime();
final long id = timeEntry.getId();//ViewWrapper的 第一个参数 id必须唯一,类似每隔商品的订单id ,第二个参数View可以是任何View及ViewGroup
mXTimeCounter.running(new XListCountDownTask(new ViewWrapper(id, tvDownTime)) {
@Override
protected boolean updateView(ViewWrapper viewWrapper) {
final TextView tvDownTime = (TextView) viewWrapper.getView();long remainTime = time - SystemClock.elapsedRealtime();
if (remainTime < 0) {
tvDownTime.setText("剩余 :" + DataUtil.formatDownTime(0));
return false;
}
final String downTime = DataUtil.formatDownTime(remainTime);
tvDownTime.setText("剩余 :" + downTime);
return true;
}});
}
}
}```
- 单个倒计时
```
// 倒计时在UI线程中执行
XCountDownTimer xCountDownTimer = new XCountDownTimer(30 * 1000, 1000) {
@Override
protected void onTick(long millisUntilFinished) {
Log.e(TAG, "millisUntilFinished : " + millisUntilFinished / 1000);
}@Override
protected void onFinish() {
Log.e(TAG, "onFinish" + " , thread:" + Thread.currentThread().getName());
}
};
xCountDownTimer.start();// 倒计时在子线程中执行
XCountDownTimer xCountDownTimer = new XCountDownTimer(30 * 1000, 1000, false) {
@Override
protected void onTick(long millisUntilFinished) {
Log.e(TAG, "millisUntilFinished : " + millisUntilFinished / 1000);
}@Override
protected void onFinish() {
Log.e(TAG, "onFinish" + " , thread:" + Thread.currentThread().getName());
}
};
xCountDownTimer.start();```