Android实现简单倒计时

26 篇文章 0 订阅
26 篇文章 0 订阅

Android实现倒计时:

  • 01.使用Handler机制
  • 02.使用Google官方的CountDownTimer

实现倒计时:

class MainActivity : AppCompatActivity() {


    private var countDownHandler = Handler()
    private var countDownTime: Int? = null

    private val countDown = object : Runnable {
        override fun run() {
            if (countDownTime!! > 0) {
                countDownHandler.postDelayed(this, 1000)//每秒
                countDownTime = countDownTime!! - 1
                findViewById<TextView>(R.id.txt).text = countDownTime.toString()
            } else {
                //停止的逻辑
                Toast.makeText(this@MainActivity, "计时结束", Toast.LENGTH_SHORT).show()
            }

        }
    }
    
    var time: Long = 2*1000
    var countDownTimer = object : CountDownTimer(time, 1000){
        override fun onFinish() {
            Toast.makeText(this@MainActivity, "计时结束", Toast.LENGTH_SHORT).show()
        }
        override fun onTick(millisUntilFinished: Long) {
            var hour=millisUntilFinished/1000/60/60
            var minute=millisUntilFinished/1000/60%60
            var second=millisUntilFinished/1000%60
            findViewById<TextView>(R.id.txt).text = "倒计时"+hour+"小时"+minute+"分"+second+"秒"
        }
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        findViewById<Button>(R.id.btn1).setOnClickListener {
            countDownTime = 2
            findViewById<TextView>(R.id.txt).text = countDownTime.toString()
            //开始执行倒计时逻辑
            countDownHandler.postDelayed(countDown, 0)
        }
        findViewById<Button>(R.id.btn2).setOnClickListener {
            findViewById<TextView>(R.id.txt).text = "倒计时:${time/1000/60/60}小时:${time/1000/60%60}分:${time/1000%60}秒"
            //开始执行倒计时逻辑
            countDownTimer.start()
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android实现圆形倒计时进度,可以使用自定义View和计时器来实现。下面是实现的步骤: 1. 创建一个自定义的View类,继承自View,用于绘制圆形进度。 2. 在自定义View类中添加一个计时器,用于更新倒计时的进度。 3. 在onDraw方法中绘制圆形进度条,可以使用Canvas和Paint类来实现。 4. 在计时器中更新倒计时的进度,并调用invalidate方法来触发View的重绘。 下面是一个简单的示例代码: ```java public class CountdownCircleView extends View { private Paint mPaint; private int mProgress; private CountDownTimer mCountDownTimer; public CountdownCircleView(Context context) { super(context); init(); } public CountdownCircleView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); init(); } private void init() { mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setStyle(Paint.Style.STROKE); mPaint.setStrokeWidth(10); mPaint.setColor(Color.BLUE); mProgress = 100; mCountDownTimer = new CountDownTimer(60000, 1000) { @Override public void onTick(long millisUntilFinished) { mProgress = (int) (millisUntilFinished / 1000); invalidate(); } @Override public void onFinish() { mProgress = 0; invalidate(); } }; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int centerX = getWidth() / 2; int centerY = getHeight() / 2; int radius = Math.min(centerX, centerY) - mPaint.getStrokeWidth() / 2; RectF rectF = new RectF(centerX - radius, centerY - radius, centerX + radius, centerY + radius); float sweepAngle = 360f * mProgress / 60; canvas.drawArc(rectF, -90, sweepAngle, false, mPaint); } public void startCountdown() { mCountDownTimer.start(); } } ``` 使用方式: ```java CountdownCircleView countdownView = findViewById(R.id.countdown_view); countdownView.startCountdown(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值