Android常用界面控件——ProgressBar

06-01 1538阅读

ProgressBar

目录

ProgressBar

在XML中定义ProgressBar

ProgressBar风格样式

ProgressBar常用XML属性

在Java代码中控制ProgressBar

实例 


什么是ProgressBar?

ProgressBar是Android中的一个视图控件,主要用于表示一个任务的进度情况,比如文件下载的进度、音乐播放的进度等。它通常以水平条或圆圈的形式展示,允许用户了解任务的当前状态和进度百分比。

如何在Android中使用ProgressBar?

在Android中,可以通过XML布局文件或者Java代码来创建和配置ProgressBar。

在XML中定义ProgressBar

                              
  • android:id: 设置ProgressBar的唯一标识符。
  • android:layout_width和android:layout_height: 设置ProgressBar的宽度和高度。
  • : 设置ProgressBar的样式为水平进度条。
  • android:max: 设置ProgressBar的最大值。
  • android:progress: 设置ProgressBar的当前进度值。

    ProgressBar风格样式

    Android支持多种风格的进度条,通过style属性可以为ProgressBar指定风格。该属性可支持如下几个属性值:

    @android:style/Widget.ProgressBar.Horizontal:水平进度条。
    @android:style/Widget.ProgressBar.Inverse:普通大小的环形进度条。
    @android:style/Widget.ProgressBar.Large:大环形进度条。
    @android:style/Widget.ProgressBar.Large.Inverse:大环形进度条。
    @android:style/Widget.ProgressBar.Small:小环形进度条。
    @android:style/Widget.ProgressBar.Small.Inverse:小环形进度条。
    

    在Android开发中,ProgressBar的样式设定有两种方式,另一种可以通过如下方式使用:

    ?android:attr/progressBarStyle
    ?android:attr/progressBarStyleHorizontal
    ?android:attr/progressBarStyleInverse
    ?android:attr/progressBarStyleLarge
    ?android:attr/progressBarStyleLargeInverse
    ?android:attr/progressBarStyleSmall
    ?android:attr/progressBarStyleSmallInverse
    ?android:attr/progressBarStyleSmallTitle

    ProgressBar常用XML属性

    android:max:进度条的最大值
    android:progress:进度条已完成进度值
    android:progressDrawable:设置轨道对应的Drawable对象
    android:indeterminate:如果设置成true,则进度条不精确显示进度
    android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象
    android:indeterminateDuration:设置不精确显示进度的持续时间
    android:secondaryProgress:二级进度条,类似于视频播放的一条是当前播放进度,一条是缓冲进度,前者通过progress属性进行设置!

    在Java代码中控制ProgressBar

    然后,在Activity或Fragment的Java代码中,可以通过findViewById方法获取ProgressBar的实例,并根据需要更新其进度:

    public class MainActivity extends AppCompatActivity {
        private ProgressBar progressBar;
        private ProgressBar progressBar2;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            EdgeToEdge.enable(this);
            setContentView(R.layout.activity_main);
            ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
                Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
                v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
                return insets;
            });
            progressBar=findViewById((R.id.pb));
            progressBar2=findViewById((R.id.pb2));
        }
        public void leoClick(View view){
            if(progressBar.getVisibility()==view.GONE){
                progressBar.setVisibility((View.VISIBLE));
            }else{
                progressBar.setVisibility(View.GONE);
            }
        }
        public void load(View view){
            int progress = progressBar2.getProgress();
            progress+=10;
            progressBar2.setProgress(progress);
        }
    }
    • ProgressBar progressBar = findViewById();: 通过findViewById方法获取ProgressBar的实例。
    • progressBar.setProgress();: 在UI线程中更新ProgressBar的当前进度。如果ProgressBar是水平的,进度值是一个0到100的整数;如果是圆形的,进度值是一个0到10000的整数。
    • setVisibility();:控制ProgressBar的显示与隐藏。

      需要注意的是,如果进度是由一个任务的执行进度决定的,为了避免UI线程阻塞,应该将该任务放在子线程中执行,然后使用runOnUiThread()方法在UI线程中更新ProgressBar的进度。

      实例 

      自定义控件,要求有模糊模式(圆形)的多种样式;模糊模式(水平)且点击按钮进度条消失;精确模式(水平)且点击按钮进度条进度增加10%;精确模式(水平)且进度条进度为18%。

      XML代码

      
          
          
          
          
          
          
          
           
      

      JAVA代码

      package com.example.myprogressbar;
      import android.os.Bundle;
      import android.view.View;
      import android.widget.ProgressBar;
      import androidx.activity.EdgeToEdge;
      import androidx.appcompat.app.AppCompatActivity;
      import androidx.core.graphics.Insets;
      import androidx.core.view.ViewCompat;
      import androidx.core.view.WindowInsetsCompat;
      public class MainActivity extends AppCompatActivity {
          private ProgressBar progressBar;
          private ProgressBar progressBar2;
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              EdgeToEdge.enable(this);
              setContentView(R.layout.activity_main);
              ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
                  Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
                  v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
                  return insets;
              });
              progressBar=findViewById((R.id.pb));
              progressBar2=findViewById((R.id.pb2));
          }
          public void leoClick(View view){
              if(progressBar.getVisibility()==view.GONE){
                  progressBar.setVisibility((View.VISIBLE));
              }else{
                  progressBar.setVisibility(View.GONE);
              }
          }
          public void load(View view){
              int progress = progressBar2.getProgress();
              progress+=10;
              progressBar2.setProgress(progress);
          }
      }

       运行截图

      Android常用界面控件——ProgressBar          Android常用界面控件——ProgressBar         Android常用界面控件——ProgressBar

                                                    (点击按钮隐藏/显示进度条)       (点击按钮增加进度)

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码