自界说Chronometer实现定时器

手机软件开发 2024-9-13 02:42:44 98 0 来自 中国
前言

在Android开辟过程中,计时控件是常常回利用到的,在Android控件库中有一个能快捷实现计时功能的控件,它就是Chronometer,本日我们基于它自界说实现一个方便调用的计时控件TimeChronometer。
本日涉及知识有:

  • Chronometer常用方法
  • TimeChronometer在Activity中利用
  • 效果图和项目布局图
  • TimeChronometer源码
一.  Chronometer 常用方法

Chronometer实质是一个TextView,其具备TextView特性,也有以下本身的特性:
//设置是否倒计时setCountDown(boolean countDown)//获取是否倒计时isCountDown()//设置基定时间setBase(long base)//设置时间格式setFormat(String format)//设置定时器监听setOnChronometerTickListener(OnChronometerTickListener listener)//启动start()//克制stop()须要注意的是Chronometer的setFormat(String format)方法并不能改变时间体现格式,Chronometer体现格式为00:00:00
二. TimeChronometer 在 Activity 中利用

这里我继承Chronometer实现了一个方便调用的定时器TimeChronometer,下面给出
TimeChronometer在Activity中利用过程。
先在Activity中引用控件:
<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context=".ui.MainActivity">    <TextView        android:id="@+id/tv_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintVertical_bias="0.08" />    <Button        android:id="@+id/btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="30dp"        android:text="计时"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/tv_name" />    <Button        android:id="@+id/btn2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="30dp"        android:text="倒计时"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/btn" />    <Button        android:id="@+id/btn3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="30dp"        android:text="重置"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/btn2" />    <com.ktdemo.function.TimeChronometer        android:id="@+id/timeChronometer"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginTop="10dp"        app:layout_constraintEnd_toEndOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintTop_toBottomOf="@+id/btn3" /></androidx.constraintlayout.widget.ConstraintLayout>然后在Activity中调用:
@RequiresApi(Build.VERSION_CODES.N)class MainActivity : AppCompatActivity(), View.OnClickListener {    private lateinit var mBingding: ActivityMainBinding    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        mBingding = ActivityMainBinding.inflate(layoutInflater)        setContentView(mBingding.root)        initData()        setListener()    }    private var initData = {        mBingding.tvName.text = "我是谁"    }    private var setListener = {        LogUtil.i("====setListener=====")        mBingding.btn.setOnClickListener(this)        mBingding.btn2.setOnClickListener(this)        mBingding.btn3.setOnClickListener(this)    }    override fun onClick(v: View) {        when (v.id) {            R.id.btn -> {                LogUtil.i("====我点击了=====")                mBingding.timeChronometer.countUp(10*1000,{                    LogUtil.i("=======这是什么======")                    Toast.makeText(this@MainActivity,"竣事了?",Toast.LENGTH_SHORT).show()                })            }            R.id.btn2 -> {                LogUtil.i("====我点击了===2==")                mBingding.timeChronometer.countDown(10*1000,{                    LogUtil.i("=======这是什么======")                    Toast.makeText(this@MainActivity,"竣事了?",Toast.LENGTH_SHORT).show()                })            }            R.id.btn3 -> {                LogUtil.i("====我点击了===3==")                mBingding.timeChronometer.reset()            }            else -> {            }        }    }}三. 效果图和项目布局图

四.  TimeChronometer 源码

下面给出TimeChronometer源码:
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 20:31, Processed in 0.174288 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表