ProgressBar-进度条案例

本文介绍了一种在Android应用中使用不同类型的进度条的方法,包括大、中、小尺寸的环形进度条及水平进度条,并展示了如何通过代码动态更新进度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


content_main.xml布局
<? 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 :layout_width= "wrap_content"
            android :layout_height= "wrap_content"
            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/ok"
        style= "@android:style/Widget.ProgressBar.Horizontal"
        />
</LinearLayout>


drawable/my_bar.xml
<? 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>



主程序ProgressBar
package com.eson.progressbar ;

import android.os.Bundle ;
import android.os.Handler ;
import android.os.Message ;
import android.support.v7.app.AppCompatActivity ;
import android.widget.ProgressBar ;

public class ProgressBarTest extends AppCompatActivity {
    //该程序模拟填充长度为100的数组
    private int [] data= new int [100 ] ;
    int hasData = 0;
    //记录ProgressBar的进度
    int status =0 ;
    ProgressBar bar ,bar2 ;
    //创建一个负责更新的进度表
    Handler handler =new Handler(){

        @Override
        public void handleMessage (Message msg) {
          if (msg. what== 0x111 ){
              bar.setProgress( status );
              bar2.setProgress( status );
          }
        }
    };

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super .onCreate(savedInstanceState) ;
        setContentView(R.layout. content_main );

        bar = (ProgressBar) findViewById(R.id. bar );
        bar2 = (ProgressBar) findViewById(R.id. bar2 );
        //启动线程来执行任务
        new Thread() {
            @Override
            public void run () {

                while ( status <100 ){
                    //获取耗时操作的百分比
                    status=doWork() ;
                    //发送消息
                    handler.sendEmptyMessage( 0x111 );

                }
            }

        }.start();
    }
    //模拟一个耗时的操作
   public int doWork () {
       //为数组元素赋值
       data [ hasData++]= ( int ) (Math.random ()*100 ) ;
       try{
           Thread.sleep (100 ) ;
       } catch (Exception e){
           e.printStackTrace() ;
       }
        return hasData ;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值