Android项目实战(十):自定义倒计时的TextView
项目总结
--------------------------------------------------------------------------------------------
有这么一个需求:

我有一个ListView,每一个列表项 布局如上图,顶部一个大图片展示,中部一个音频播放,底部一个描述文字。
在这个界面,一次只能点击一个列表项的播放按钮,那么我直接在ListView所属的activity创建了唯一的一个MediaPlayer,然而,这不是问题,所有的音频方面的播放冲突都解决了
问题就在中部的音频播放,我需要点击左边的播放按钮,然后右边有一个剩余时间要跟随着变化,当然点击暂停的时候,剩余时间也要暂停
首先,这里运用了购物车功能的原理实现按钮的操作。Android 购物车功能的实现
怎么实现某一个列表项中的TextView 显示的剩余时间也跟随着变化呢?
找寻了很多方法,最后问了一个Android交流群的群主得以解决。
怎么实现呢:
即自定义一个TextView在列表项中来显示剩余时间,只要每次刷新适配器的时候,给这个自定义的TextView 一个初始值,然后TextView就可以自己自定来把初始值每秒减一,显示在TextView上面。
那么看下这个自定义TextView
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.TextView; public class ShowTiemTextView extends TextView implements Runnable{ private boolean run = false; //觉得是否执行run方法
private int time;
public ShowTiemTextView(Context context) {
super(context);
} public ShowTiemTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setTime(int time){ //设定初始值
this.time = time;
}
public boolean isRun(){
return run;
}
public void beginRun(){
this.run = true;
run();
}
public void stopRun(){
this.run = false;
}
@Override
public void run() {
if (run){
ComputeTime();
this.setText(time / + "'" + time % );
postDelayed(this, );
}else{
removeCallbacks(this);
}
} private void ComputeTime(){
time--;
if (time==)
stopRun();
}
}
适配器调用关键代码:
//holder.list_detail_music_play是一个TextView
holder.list_detail_music_play.setTime(audiolength);
if (list.get(position).isPlaying()){ //如果音频正在播放
holder.list_detail_music_play.beginRun(); //TextView内部线程开始运行
}else{ //如果音频停止播放
holder.list_detail_music_play.stopRun(); //TextView内部线程停止运行
}
学习内容来自:
Android项目实战(十):自定义倒计时的TextView的更多相关文章
- Android项目实战(五):TextView自适应大小
对于设置TextView的字体默认大小对于UI界面的好看程度是很重要的,小屏幕设置的文字过大或者大屏幕设置的文字过小都造成UI的不美观 现在就让我们学习自适应大小的TextView控件,即当文字长度变 ...
- (转载)Android项目实战(三十二):圆角对话框Dialog
Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话 ...
- Android项目实战(三十二):圆角对话框Dialog
前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角 ...
- (转载)Android项目实战(二十八):Zxing二维码实现及优化
Android项目实战(二十八):Zxing二维码实现及优化 前言: 多年之前接触过zxing实现二维码,没想到今日项目中再此使用竟然使用的还是zxing,百度之,竟是如此牛的玩意. 当然,项目中 ...
- (转载)Android项目实战(二十八):使用Zxing实现二维码及优化实例
Android项目实战(二十八):使用Zxing实现二维码及优化实例 作者:听着music睡 字体:[增加 减小] 类型:转载 时间:2016-11-21我要评论 这篇文章主要介绍了Android项目 ...
- Android项目实战(二十九):酒店预定日期选择
先看需求效果图: 几个需求点: 1.显示当月以及下个月的日历 (可自行拓展更多月份) 2.首次点击选择"开始日期",再次点击选择"结束日期" (1).如果&qu ...
- Android项目实战(四十九):Andoird 7.0+相机适配
解决方案类似: Android项目实战(四十):Andoird 7.0+ 安装APK适配 解决方法: 一.在AndroidManifest.xml 文件中添加 四大组件之一的 <provider ...
- Android项目实战(四十四):Zxing二维码切换横屏扫描
原文:Android项目实战(四十四):Zxing二维码切换横屏扫描 Demo链接 默认是竖屏扫描,但是当我们在清单文件中配置横屏显示的时候: <activity android:name=&q ...
- Android项目实战(四十):在线生成按钮Shape的网站
原文:Android项目实战(四十):在线生成按钮Shape的网站 AndroidButton Make 右侧设置按钮的属性,可以即时看到效果,并即时生成对应的.xml 代码,非常高效(当然熟练的话 ...
- (转载)Android项目实战(二十七):数据交互(信息编辑)填写总结
Android项目实战(二十七):数据交互(信息编辑)填写总结 前言: 项目中必定用到的数据填写需求.比如修改用户名的文字编辑对话框,修改生日的日期选择对话框等等.现总结一下,方便以后使用. 注: ...
随机推荐
- 用CSS让未知高度内容垂直方向居中
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...
- tcp为什要三次握手
准备知识: 单工:信息只能单向传递.发送-->接收,单向,不能返回响应. 双工:指的是信息可双向发送. 全双工:信息可同时双向传递. 半双工:不能同时,单行道,一边传输完了,另一边才能发起传输. ...
- Transactional replication 的Snapshot 文件在什么情况下会被清除
Snapshot agent负责收集publication database的信息,将article的内容存储在snapshot文件中.而distribuiton cleanup job(后文简称清除 ...
- Registering iOS Devices for Testing - 注册测试设备
http://support.smartbear.com/viewarticle/63764/ Applications developed using the iOS Developer Progr ...
- Hql查询结果动态组装 List(map),List(bean),List(list),List(set)等格式(转)
1.//查询整个对象String hql="from Users";Query query = session.createQuery(hql);List<Users> ...
- 【转载】Unix Shell中用[-n]判断字符串不为NULL
转载自:http://blog.sina.com.cn/s/blog_541086430100mosm.html 在Unix Shell中,可以使用-n来判断一个string不是NULL值,但是之前却 ...
- 网站跨站点单点登录实现--cookie
至于什么是单点登录,举个例子,如果你登录了msn messenger,访问hotmail邮件就不用在此登录.一般单点登录都需要有一个独立的登录站点,一般具有独立的域名,专门的进行注册,登录,注销等操作 ...
- 免费下载!Twitter Bootstrap V3 矢量界面素材
Bootstrap 3 Vector UI Kit 包含所有矢量格式的 Twitter Bootstrap 3 界面控制元素.Glyphicons 以及额外的一些界面素材,而且基本的图形元素都切好图了 ...
- 使用 PSD Validator 在线校验 PSD 文件的质量
PSD Validator 可以帮助你在线校验 PSD 文件的质量,使用的规则来自 Photoshop Etiquette.Photoshop Etiquette 整理了 PSD 文件的规范,例如删 ...
- C#序列化JSON
public static string ConvertToJsonString<T>(T instance) { using (MemoryStream stre ...