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
        }
    }
    主程序
  • 相关阅读:
    python3.6+requests实现接口自动化4
    python3.6+requests实现接口自动化3
    Druid学习之路 (五)Druid的数据摄取任务类型
    Druid学习之路 (四)Druid的数据采集格式
    Druid学习之路 (三)Druid的数据源和段
    Druid学习之路 (二)Druid架构
    Druid学习之路 (一)Druid初识
    Hive sql和Presto sql的一些对比
    Pyspark的HBaseConverters详解
    Pyspark访问Hbase
  • 原文地址:https://www.cnblogs.com/superxuezhazha/p/11497753.html
Copyright © 2011-2022 走看看