android 中 Chronometer 计时器的使用

本文介绍了一种基于Chronometer控件实现的计时器功能,包括开始计时、停止计时、重置计时等操作,并详细展示了如何通过代码控制计时器的快进、快退及跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布局:

<Chronometer
    android:id="@+id/played_time"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:textSize="13sp"
    android:textColor="@color/music_text_white"
    android:text="00:00"/>
代码:

private void countTime() {
    if ( mRecordTime != 0 ){
        //暂停后继续计时
        played_time_view.setBase( played_time_view.getBase() + (SystemClock.elapsedRealtime()-mRecordTime) );
    }else if ( isForward ){
        //快进 seekTime秒 默认+20s
        if ( seekTime > 0 ){
            played_time_view.setBase( played_time_view.getBase() - seekTime*1000 );
        }else {
            played_time_view.setBase( played_time_view.getBase() - 20*1000 );
        }
        isForward = false;
    }else if ( isReverse ){
        //快退seekTime秒 默认-20s
        long time = 0l;
        if ( seekTime > 0 ){
            time = played_time_view.getBase() + seekTime*1000;
        }else {
            time = played_time_view.getBase() + 20*1000;
        }

        if ( time > SystemClock.elapsedRealtime() ){
            played_time_view.setBase( SystemClock.elapsedRealtime() );
        }else {
            played_time_view.setBase( time );
        }
        isReverse = false;
    }else if ( isJump ){
        played_time_view.setBase( SystemClock.elapsedRealtime() - seekTime*1000);
        isJump = false;
    }else {
        //设置时间基点
        played_time_view.setBase( SystemClock.elapsedRealtime() );
    }
    played_time_view.start();

}

private void stopCountTime(){
    played_time_view.stop();
    mRecordTime = SystemClock.elapsedRealtime();
}

private void resetCountTime(){
    played_time_view.setBase( SystemClock.elapsedRealtime() );
    played_time_view.stop();
    mRecordTime = 0L;
    mRecordTime = SystemClock.elapsedRealtime();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值