顾名思义,就是进度条。

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <!-- 定义一个大环形进度条 --> <ProgressBar android:id="@+id/lbar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:max="100" style="@android:style/Widget.ProgressBar.Large"/> <!-- 定义一个中等大小的环形进度条 --> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content"/> <!-- 定义一个小环形进度条 --> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Small"/> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="任务完成的进度"/> <!-- 定义一个水平进度条 --> <ProgressBar android:id="@+id/bar" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" style="@android:style/Widget.ProgressBar.Horizontal"/> <!-- 定义一个水平进度条,并改变轨道外观 --> <ProgressBar android:id="@+id/bar2" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progressDrawable="@drawable/my_bar" style="@android:style/Widget.ProgressBar.Horizontal"/> </LinearLayout>

<?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 定义轨道的背景 --> <item android:id="@android:id/background" android:drawable="@drawable/no" /> <!-- 定义轨道上已完成部分的样式 --> <item android:id="@android:id/progress" android:drawable="@drawable/ok" /> </layer-list>

package com.example.processbar import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.os.Message import android.widget.ProgressBar import java.lang.ref.WeakReference class MainActivity : AppCompatActivity() { // 该程序模拟填充长度为100的数组 private val data = IntArray(100) private var hasData = 0 // 记录ProgressBar的完成进度 internal var status = 0 private var bar: ProgressBar? = null private var bar2: ProgressBar? = null private var bar3:ProgressBar?=null class MyHandler(private val activity: WeakReference<MainActivity>) : Handler() { override fun handleMessage(msg: Message) { // 表明消息是由该程序发送的 if (msg.what == 0x111) { activity.get()?.bar?.progress = activity.get()?.status!! activity.get()?.bar2?.progress = activity.get()?.status!! activity.get()?.bar3?.progress=activity.get()?.status!! } } } // 创建一个负责更新的进度的Handler 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) bar3 = findViewById<ProgressBar>(R.id.lbar) // 启动线程来执行任务 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 } }