Kotlin06.progressBarTest进度条

MainActivity.kt

package com.example.progressbartest

import android.os.Bundle
import android.os.Handler
import android.os.Message
import android.widget.ProgressBar
import androidx.appcompat.app.AppCompatActivity
import java.lang.ref.WeakReference

class MainActivity : AppCompatActivity() {

    private val data = IntArray(100)
    private var hasData = 0
    // 记录ProgressBar当前进度
    internal var status = 0
    private var bar : ProgressBar? = null
    private var bar2 : ProgressBar? = null
    class MyHandler(private val activity:WeakReference) : Handler()
    {
        override fun handleMessage(msg: Message) {
            if (msg.what == 0X111)
            {
                activity.get()?.bar?.progress = activity.get()?.status!!
                activity.get()?.bar2?.progress = activity.get()?.status!!
            }
        }
    }
    internal val mHandler = MyHandler(WeakReference(this))
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        bar = findViewById(R.id.bar)
        bar2 = findViewById(R.id.bar2)
        // 启动线程来执行任务
        object : Thread()
        {
            override fun run() {
                while (status < 100) {
                    // 获取耗时操作的完成百分比
                    status = doWork()
                    //发送消息
                    mHandler.sendEmptyMessage(0x111)
                }
            }
        }.start()
    }

    // 模拟一个耗时的操作
    fun doWork() : Int
    {
        data[hasData++] = (Math.random() * 100).toInt()
        Thread.sleep(100)
        return hasData
    }
}

acitivity_main.xml



    
        
        
        
        
        
        
    
    
    
    
    
    

my_bar.xml



	
	
	
	

效果

Kotlin06.progressBarTest进度条_第1张图片

你可能感兴趣的:(Kotlin)