Android项目实战(十):自定义倒计时的TextView

简介: 原文:Android项目实战(十):自定义倒计时的TextView项目总结 -------------------------------------------------------------------------------------------- 有这么一个需求: 我有一个ListView,每一个列表项 布局如上图,顶部一个大图片展示,中部一个音频播放,底部一个描述文字。
原文: 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 / 60 + "'" + time % 60);
            postDelayed(this, 1000);
        }else{
            removeCallbacks(this);
        }
    }

    private void ComputeTime(){
        time--;
        if (time==0)
            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内部线程停止运行
}

 

学习内容来自:

自定义倒计时控件

目录
相关文章
|
17天前
|
XML Java Android开发
Android实现自定义进度条(源码+解析)
Android实现自定义进度条(源码+解析)
49 1
|
4月前
|
XML Android开发 数据安全/隐私保护
Android 自定义开源库 EasyView
Android 自定义开源库 EasyView
|
4月前
|
XML Java Android开发
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
40 1
|
7月前
|
API Android开发
Android 自定义最大宽度,高度, 宽高比例 Layout
Android 自定义最大宽度,高度, 宽高比例 Layout
|
4月前
|
XML 搜索推荐 Java
Android App开发之自定义图形中位图与图形互转、剪裁图形内部区域、给图形添加部件的讲解及实战(附源码 简单易懂)
Android App开发之自定义图形中位图与图形互转、剪裁图形内部区域、给图形添加部件的讲解及实战(附源码 简单易懂)
33 0
|
4月前
|
XML 前端开发 Java
Android Studio App自定义控件中自定义视图的绘制讲解及实战(附源码 包括自定义绘制各种图形)
Android Studio App自定义控件中自定义视图的绘制讲解及实战(附源码 包括自定义绘制各种图形)
34 1
|
4月前
|
XML API Android开发
Android 自定义View 之 圆环进度条
Android 自定义View 之 圆环进度条
|
21天前
|
Android开发
Android开发小技巧:怎样在 textview 前面加上一个小图标。
Android开发小技巧:怎样在 textview 前面加上一个小图标。
10 0
|
21天前
|
Android开发
Android 开发 pickerview 自定义选择器
Android 开发 pickerview 自定义选择器
12 0
|
7月前
|
XML Android开发 数据格式
自定义Android titleBar
自定义Android titleBar
26 0