zoukankan      html  css  js  c++  java
  • progressbar

    顾名思义,就是进度条。

    <?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>
    my_bar.xml
    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
        }
    }
    主程序
  • 相关阅读:
    命令行参数解析
    业务
    从0开始架构二
    从0开始架构读书笔记
    增加ldl
    工具论
    go的web框架的context回调的原理
    id生成器雪花算法和雪花算法的sony实现
    软件架构师应该知道的97件事(六)
    进程通信简介
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/11497753.html
Copyright © 2011-2022 走看看