Android多种进度条使用详解

一、ProgressBar

ProgressBar是Android中最基本的进度条控件,用于显示任务的进度。ProgressBar分为两种,水平进度条和圆形进度条。水平进度条通常用来显示任务的进度百分比,而圆形进度条则通常用来显示转动的进度,例如:等待某个联网请求的结果。

1. 水平进度条使用方法

先上代码:

XML布局文件

```xml

android:id="@+id/progress_horizontal"

style="@android:style/Widget.ProgressBar.Horizontal"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:padding="10dp" />

```

Java代码

```java

ProgressBar progressBar = findViewById(R.id.progress_horizontal);

progressBar.setMax(100); // 设置最大进度值

progressBar.setProgress(0); // 设置当前进度值

```

效果图:

![水平进度条](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/progress_horizontal.png)

可以看到,ProgressBar的样式有所不同,它们是由style属性来定义的。style有三个值:Widget.ProgressBar.Horizontal、Widget.ProgressBar.Inverse和Widget.ProgressBar.Small。其中,Widget.ProgressBar.Horizontal为水平进度条,Widget.ProgressBar.Inverse为反向进度条,Widget.ProgressBar.Small为小进度条。通过style属性,可以自定义进度条的样式。例如,设置为蓝色将style改为以下值:

```xml

style="@android:style/Widget.ProgressBar.Horizontal"

android:progressDrawable="@drawable/progress_bar_blue"

```

其中,@drawable/progress_bar_blue为ProgressBar的渐变色,可以根据自己的需求设置。

除此之外,还有一些属性可以帮助我们定义ProgressBar,比如:

- android:indeterminate:设置进度条是否为不确定模式,如果设置为true,ProgressBar会无限旋转,否则为默认的水平进度条。

- android:indeterminateDrawable:设置ProgressBar在不确定模式下的图像,通常是Drawable文件。

- android:minHeight和android:minWidth:设置最小高度和宽度值,以防止进度条过小而无法正确显示。

2. 圆形进度条使用方法

圆形进度条的使用方法与水平进度条类似,均需要在XML布局文件中声明,并设置其样式和其他属性。

```xml

android:id="@+id/progress_circular"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="10dp"

android:layout_centerInParent="true"

android:visibility="visible"

style="?android:attr/progressBarStyleLarge"

android:indeterminate="true" />

```

通过style属性来设置Style,进而控制ProgressBar的样式。以下为常用的样式类型:

- android:progressBarStyle:普通样式;

- android:progressBarStyleHorizontal:水平进度条样式;

- android:progressBarStyleLarge:大号圆形进度条样式;

- android:progressBarStyleSmall:小号圆形进度条样式;

- android:progressBarStyleSmallTitle:小号圆形样式,带标题。

至此已经简单介绍了水平进度条和圆形进度条的使用方法,需要注意的是,ProgressBar控件只能在主线程中更新进度,否则会报“Only the original thread that created a view hierarchy can touch its views”异常。

二、NumberProgressBar

NumberProgressBar是对Android自带的ProgressBar控件的拓展,增加了数字进度显示,支持自定义颜色和动画效果。

1. 使用方法

在项目中引入依赖,然后在XML布局文件中创建控件。

```java

repositories {

maven { url "https://jitpack.io" }

}

dependencies {

implementation 'com.github.daimajia.NumberProgressBar:library:1.4.2'

}

```

```xml

android:id="@+id/number_progress_bar"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:padding="10dp"

app:progress_current="0" // 设置当前进度

app:progress_max="100" // 设置最大进度

app:progress_reached_bar_height="6dp" // 设置进度条高度

app:progress_reached_color="@color/colorAccent" // 设置进度条已达到的颜色

app:progress_text_color="@color/colorPrimary" // 设置进度条字体颜色

app:progress_text_size="10sp" // 设置进度条字体大小

app:progress_unreached_bar_height="6dp" // 设置进度条未达到的颜色

app:progress_unreached_color="@color/colorPrimaryDark" // 设置进度条未达到的颜色 />

```

Java代码中获取控件并更新进度。

```java

NumberProgressBar numberProgressBar = findViewById(R.id.number_progress_bar);

numberProgressBar.setProgress(currentProgress);

```

2. 效果图

通过上述步骤创建的NumberProgressBar效果如下:

![NumberProgressBar](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/number_progress_bar.gif)

三、CircleProgress

CircleProgress是一个圆形进度条控件,可以设置进度颜色、背景颜色、宽度和画笔颜色等。它支持在默认模式下或动态展示进度的模式下设置进度值。

1. 使用方法

在项目中引入依赖,然后在XML布局文件中创建控件。

```java

dependencies {

implementation 'com.github.lzyzsd:circleprogress:1.2.1'

}

```

```xml

android:id="@+id/circle_progress"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:layout_alignParentTop="true"

android:padding="10dp"

app:circle_progress="0" // 设置进度值

app:circle_progress_color="@color/holo_green_light" // 进度条颜色

app:circle_background_color="@color/holo_green_dark" // 背景颜色

app:circle_stroke_width="8dp" // 进度条宽度

app:circle_stroke_cap="round" // 画笔的线冒样式

app:circle_textColor="@color/holo_orange_light" // 进度文本颜色

app:circle_textSize="24sp" // 进度文本大小

app:circle_unit="Km/h" // 进度单位

app:circle_unit_size="14sp" // 进度单位大小

app:circle_unit_color="@color/holo_purple" // 进度单位颜色 />

```

在Java代码中获取控件并更新进度。

```java

CircleProgress circleProgress = findViewById(R.id.circle_progress);

circleProgress.setProgress(currentProgress);

```

2. 效果图

通过上述步骤创建的CircleProgress效果如下:

![CircleProgress](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/CircleProgress.gif)

四、ArcProgress

ArcProgress也是一个圆形进度条控件,可以设置圆形宽度、圆形宽度的颜色、进度环颜色、进度环宽度和进度百分比。

1. 使用方法

在项目中引入依赖,然后在XML布局文件中创建控件。

```java

dependencies {

implementation 'com.github.lzyzsd:circleprogress:1.2.1'

}

```

```xml

android:layout_marginTop="20dp"

android:layout_width="120dp"

android:layout_height="120dp"

android:id="@+id/arc_progress"

app:arc_progress="0"

app:arc_bottom_text_color="@android:color/black"

app:arc_bottom_text_size="14sp"

app:arc_progress_color="@color/colorPrimary"

app:arc_progress_width="10dp"

app:arc_max="100"

app:arc_unfinished_color="@color/text_gray"

app:arc_unfinished_width="10dp"

app:arc_text_color="@android:color/black"

app:arc_text_size="40sp"

app:arc_suffix_text="%"

app:arc_suffix_text_size="20sp"

/>

```

在Java代码中获取控件并更新进度。

```java

ArcProgress arcProgress = findViewById(R.id.arc_progress);

arcProgress.setProgress(currentProgress);

```

2. 效果图

通过上述步骤创建的ArcProgress效果如下:

![ArcProgress](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/ArcProgress.gif)

五、VerticalProgressBar

VerticalProgressBar是一个竖向的进度条控件,适合多种场景下使用;例如:音量控制、电量显示等。

1. 使用方法

在XML布局文件中声明目标控件。

```xml

android:id="@+id/vpb"

android:layout_width="wrap_content"

android:layout_height="200dp"

android:layout_gravity="center"

android:layout_marginTop="20dp"

android:background="@android:color/holo_blue_bright"

app:ProgressBgColor="@android:color/holo_blue_light"

app:ProgressHeight="200dp"

app:ProgressWidth="20dp"

app:SecondBgColor="@android:color/holo_blue_dark"

app:ShowText="Left"

app:TextOrientation="VERTICAL"

app:TextColor="@android:color/white"

app:TextSize="18sp"

app:progress="0"

app:progressMax="100" />

```

在Java代码中获取控件并更新进度。

```java

VerticalProgressBar verticalProgressBar = findViewById(R.id.vpb);

verticalProgressBar.setProgress(currentProgress);

```

2. 效果图

通过上述步骤创建的VerticalProgressBar效果如下:

![VerticalProgressBar](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/verticalProgressBar.gif)

六、StepView

StepView是一个用于显示步骤进度的控件,图形美观,并且实用,支持StepView的数目自定义,内容默认固定。使用方法如下:

1. 使用方法

在项目中引入依赖,然后在XML布局文件中创建控件。

```java

dependencies {

implementation 'com.baoyachi:StepView:1.2.7'

}

```

```xml

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/horizontalStepView"

app:selectedTextColor="@android:color/darker_gray"

app:textColor="@android:color/darker_gray"

app:unSelectedTextColor="@color/colorPrimary"

app:doneTextColor="@android:color/white"

app:lineColor="@android:color/darker_gray"

app:doneLineColor="@color/colorPrimary"

android:layout_marginTop="20dp"

app:stepViewNumber="4">

```

在Java代码中获取控件并更新进度。

```java

HorizontalStepView stepView = findViewById(R.id.horizontalStepView);

List list = new ArrayList<>();

list.add("步骤1");

list.add("步骤2");

list.add("步骤3");

list.add("步骤4");

stepView.setSteps(list);

stepView.setCompletedPosition(currentProgress);

```

2. 效果图

通过上述步骤创建的StepView效果如下:

![StepView](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/StepView.png)

七、LiquidLoader

LiquidLoader是一个基于SVG文件实现的进度条控件,支持自定义颜色、动画模式和速度等。使用方法如下:

1. 使用方法

在项目中引入依赖,然后在XML布局文件中创建控件。

```java

dependencies {

implementation 'com.github.imdroids:LiquidLoader:1.0.0'

}

```

```xml

android:id="@+id/liquid_loader"

android:layout_width="200dp"

android:layout_height="200dp"

android:layout_gravity="center"

android:layout_marginTop="20dp"

app:LLiquidColor="#ff9800"

app:LStrokeWidth="12dp"

app:animationSpeed="1000"

app:animationMode="OVERDRAW"

app:LiquidShape="RECT"

app:LoadingText="loading..."

app:LoadingTextColor="#ff9800"

app:LoadingTextSize="18sp" />

```

在Java代码中获取控件并更新进度。

```java

LiquidLoader liquidLoader = findViewById(R.id.liquid_loader);

liquidLoader.setProgress(currentProgress);

```

2. 效果图

通过上述步骤创建的LiquidLoader效果如下:

![LiquidLoader](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/LiquidLoader.gif)

八、WaveLoadingView

WaveLoadingView是一个带波浪效果的进度条控件,支持自定义波浪颜色和周期等。使用方法如下:

1. 使用方法

在项目中引入依赖,然后在XML布局文件中创建控件。

```java

dependencies {

implementation 'com.github.gelitenight.WaveView:waveview:1.0.0'

}

```

```xml

android:id="@+id/waveLoadingView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:layout_marginTop="20dp"

app:wlv_border_width="0dp"

app:wlv_progressValue="0"

app:wlv_shapeType="CIRCLE"

app:wlv_centerTitle="loading..."

app:wlv_waveAmplitude="40"

app:wlv_waveColor="@color/colorPrimary"

app:wlv_waveload_direction="LEFT"

app:wlv_waveLength="600"

app:wlv_circle_color="@android:color/white"

app:wlv_centerColor="@android:color/transparent"

app:wlv_duration="2000"

app:wlv_borderColor="@android:color/transparent"

app:wlv_circle_radius="25dp"

app:wlv_centerTitleColor="@color/colorPrimary"

app:wlv_centerTitleSize="16sp"

/>

```

在Java代码中获取控件并更新进度。

```java

WaveLoadingView waveLoadingView = findViewById(R.id.waveLoadingView);

waveLoadingView.setProgressValue(currentProgress);

```

2. 效果图

通过上述步骤创建的WaveLoadingView效果如下:

![WaveLoadingView](https://pic-1255092067.cos.ap-guangzhou.myqcloud.com/learn-img/WaveLoadingView.gif)

以上就是Android多种进度条的使用详解,希望对大家有所帮助。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(46) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部