一、ProgressBar
ProgressBar是Android中最基本的进度条控件,用于显示任务的进度。ProgressBar分为两种,水平进度条和圆形进度条。水平进度条通常用来显示任务的进度百分比,而圆形进度条则通常用来显示转动的进度,例如:等待某个联网请求的结果。
1. 水平进度条使用方法
先上代码:
XML布局文件
```xml
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: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: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: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_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: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_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.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: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: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内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。 我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复