最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
ListView中倒计时的实现问题集锦
时间:2016-06-18 编辑:简简单单 来源:一聚教程网
关于Android实现倒计时呢,对于很多人来说一直是一个头疼的问题,当然我也一样,在开发倒计时功能的时候会遇到很多棘手甚至奇葩的问题或者bug,我在开发倒计时的时候,如果当前页面只有一个倒计时,那么就不是很复杂,开发出来的效果也不是会非常糟糕,网上会有很多的教程实现。如果要在ListView或者GridView中实现倒计时呢,真的是一个很头疼的问题,我在这其中吃了很多苦头和走了很多弯路,还有死了很多脑细胞。下面我来总结一下在ListView中开发倒计时的问题。
先来展示一下我开发出来的效果图,这是在GridView中实现的:
一:数据混乱
描述一下什么叫数据混乱,比如说我有二十个倒计时在运行,第一个已经结束了,其他的都没有结束,我在往下滑动的时候,发现下面的某些倒计时也已经结束了,再循环滑动,又有不同的倒计时结束了,然后有时候本来已经结束的倒计时又开始倒计时了,这些就是在滑动过程中引发的数据混乱的问题。
二:倒计时重新开始:
描述一下什么叫倒计时重新开始,比如我的listview的第一个item在进行倒计时,从60秒开始减少,当减少到假如说40秒的时候,我往下滑动,使第一个item超出屏幕可见之外,再往上滑回第一个item,这时候你会发现倒计时又开始从60秒重新开始倒计时了,这是因为你的倒计时的时间如果是死的,在滑动回来的时候界面重绘,数据重新加载,所以倒计时又开始重新倒计时。
三:卡顿,超时,甚至崩溃:
这个就不用描述了,倒计时很多的话,就会出现卡顿的情况,如果非常多,手机就会死机崩溃,我在下载其他知名APP存在倒计时的界面进行使用时,一直上拉加载更多数据,出现很多的倒计时,发现也会卡顿,最后界面不能操作死机了。
四:倒计时不易控制和判断:
既然进行倒计时,那么我们就得需要监听倒计时什么时候结束,结束之后进行相应的操作,这是其一。其二,我们需要灵活的使用倒计时,比如是显示“年”、“天”、“时”、“分”、“秒”、“毫秒”等等,都要比较好控制和修改最好。
要解决这些问题呢,其实是很困难的,我查过很多的方式来实现发现都不是很好,甚至不能解决问题。最后呢,我找到了一个第三方依赖库,在github上也有,具体地址我找不到了,不过在it蓝豹上也有,这
在使用这个方式实现倒计时的时候,只解决了第三和第四的问题,说实话卡顿和控制方面解决了就好多了。另外我在使用的时候发现也会出现第一和第二个问题,当然在他的项目里也有在listview中的Demo,不过有点复杂我就没有深度研究,按照最基本的继承BaseAdapter和ViewHolder优化实现的方式来开发会出现数据错乱和重新开始的bug,最后我就在想能不能把倒计时时间来转化成本地时间进行倒计时,最后的结果是完全可以,不过可能会有一点误差,神奇的是连同数据混乱的bug也消失了。
比如说倒计时需要100秒,那么我就拿本地的时间加上这100秒作为结束时间,然后在倒计时需要开始的时候,拿上这结束时间减去本地时间就是需要倒计时的时间。
具体的代码如下:
具体的代码如下:
本地时间:long curTime = System.currentTimeMillis();//注意:单位毫秒
结束时间:curTime +(100*1000);//注意:单位毫秒,把100秒转化为毫秒
在需要倒计时的地方开启倒计时:
cv_countdownView.start(itemData.getEndtime() - System.currentTimeMillis());
同时,在监听方面,此依赖提供了一个接口:
代码如下:
cv_countdownView.setOnCountdownEndListener(new CountdownView.OnCountdownEndListener() {
@Override public void onEnd(CountdownView cv) {
//时间结束 }
});
在布局中使用也非常简单,
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
app:isShowDay="false"
app:isShowHour="false"
app:isShowMillisecond="true"
app:isShowMinute="true"
app:isShowSecond="true"
app:suffixGravity="center"
app:suffixTextColor="#FFFFFF"
app:suffixTextSize="14sp"
app:timeTextColor="#FFFFFF"
app:timeTextSize="14sp" />;
需要显示什么就写为true,否则false就可以了。
我觉得最关键的还是流畅不卡顿最重要。
好了,这就是我在开发倒计时的时候遇到的问题总结,希望能帮助到更多的人。谢谢,此文章是我一字一字打出来的,转载请注明。谢谢
原文来自 :http://blog.it985.com/16781.html
相关文章
- 魅族PRO 7发布会倒计时 邀请函正式发布 07-17
- iOS倒计时的实现方法 06-21
- ppt添加宏倒计时的方法 ppt怎么添加宏倒计时 04-28
- ios 实现倒计时的两种方式 03-01
- 2015年高考倒计时:山东省高考冲刺模拟卷作文 04-17
- 2015年高考倒计时:江西省南昌市十所省重点中学模拟作文题 04-17