一、ProgressBar的使用
ProgressBar是Android系统中用于展现进度的控件,可根据不同的样式、颜色和进度值进行自定义。一般来说,ProgressBar分为两种样式:水平进度条、圆形进度条。
1、水平进度条
在布局文件中引用ProgressBar即可,系统会选择默认的样式:
```
android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" /> ``` 其中,xml属性`android:max`定义ProgressBar的最大值,`android:progress`定义当前进度。 如果需要自定义样式,可以通过修改样式文件来实现,以下是自定义样式的例子: 首先在`res/values`文件夹下新建一个名为`attrs.xml`的文件,并在文件中定义styleable: ``` ``` 然后在`res/drawable`文件夹下新建一个名为`progress_horizontal.xml`的文件,定义进度条的背景和前景: ``` android:centerColor="#ff5a5d5a" android:centerY="0.75" android:endColor="#ff747674" android:angle="270" /> android:endColor="@color/yellow" android:angle="270" /> ``` 接下来在`res/values`文件夹下新建一个名为`styles.xml`的文件,定义ProgressBar的样式: ``` ``` 最后在布局文件中引用自定义ProgressBar: ``` android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" style="@style/MyProgressBar" app:progressColor="@color/green" /> ``` 需要注意的是,自定义ProgressBar的样式文件名和属性名与系统自带的不同,因此在引用时需要注意。 2、圆形进度条 在布局文件中引用CircularProgressBar即可,系统会选择默认的样式: ``` android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:indeterminate="false" android:max="100" android:progress="50" app:cpb_progressColor="@color/green" app:cpb_progressBackgroundColor="@color/gray" app:cpb_progressStrokeWidth="8dp" /> ``` 其中,`app:cpb_progressColor`定义进度条颜色,`app:cpb_progressBackgroundColor`定义背景颜色,`app:cpb_progressStrokeWidth`定义进度条宽度。 如果需要自定义样式,可以在`res/drawable`文件夹下新建一个名为`progress_circular.xml`的文件,并定义进度条的背景和前景: ``` xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/circular_progress_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:indeterminate="false" android:max="100" android:progress="50" app:cpb_progressColor="@color/green" app:cpb_progressBackgroundColor="@color/gray" app:cpb_progressStrokeWidth="8dp" /> ``` 然后在布局文件中引用自定义CircularProgressBar即可: ``` android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:indeterminate="false" android:max="100" android:progress="50" app:cpb_progressColor="@color/green" app:cpb_progressBackgroundColor="@color/gray" app:cpb_progressStrokeWidth="8dp" style="@style/MyCircularProgressBar" /> ``` 二、ProgressDialog的使用 ProgressDialog是Android系统中提供的标准对话框(Dialog),可用于展示一个进度条和一段文本信息,通常在需要耗时操作时展示以提示用户等待。 以下是ProgressDialog的使用方法: ``` private ProgressDialog mProgressDialog; //声明 //创建ProgressDialog private void createProgressDialog() { mProgressDialog = new ProgressDialog(this); mProgressDialog.setMessage("Loading..."); mProgressDialog.setCanceledOnTouchOutside(false); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.show(); } //销毁ProgressDialog private void destroyProgressDialog() { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.dismiss(); } } ``` 其中,`ProgressDialog.setMessage`设置ProgressDialog中显示的文本,`ProgressDialog.setCanceledOnTouchOutside`设置ProgressDialog是否可点击背景取消,`ProgressDialog.setProgressStyle`设置ProgressDialog的样式。 三、NumberProgressBar的使用 NumberProgressBar是一个自定义的ProgressBar,实现了数字进度和渐变动画效果,可以用于展示进度,并支持自定义样式。 以下是NumberProgressBar的使用方法: 首先,在`build.gradle`文件中添加依赖: ``` implementation 'com.daimajia.numberprogressbar:library:1.4@aar' ``` 然后在布局文件中引用NumberProgressBar即可: ``` android:layout_width="match_parent" android:layout_height="wrap_content" app:progress_current="50" app:progress_max="100" app:progress_reached_bar_height="5dp" app:progress_unreached_bar_height="5dp" app:progress_bar_color="@color/green" app:progress_unreached_bar_color="@color/gray" /> ``` 其中,`app:progress_current`定义当前进度,`app:progress_max`定义最大进度,`app:progress_reached_bar_height`定义已完成部分进度条的高度,`app:progress_unreached_bar_height`定义未完成部分进度条的高度,`app:progress_bar_color`定义进度条颜色,`app:progress_unreached_bar_color`定义未完成部分进度条颜色。 四、案例说明 以下是ProgressBar的实际应用场景: 我们在开发APP时,经常需要向后台请求数据,这一过程可能比较耗时,为了让用户有更好的体验,我们可以在请求数据时展示ProgressBar,待数据请求完成后再隐藏ProgressBar。 例如: ``` public class MainActivity extends AppCompatActivity { private ProgressBar mProgressBar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mProgressBar = findViewById(R.id.progress_bar_horizontal); requestData(); } //请求数据 private void requestData() { showProgressBar(); //展示ProgressBar //模拟耗时操作 new Handler().postDelayed(() -> { hideProgressBar(); //隐藏ProgressBar }, 3000); } //展示ProgressBar private void showProgressBar() { mProgressBar.setVisibility(View.VISIBLE); } //隐藏ProgressBar private void hideProgressBar() { mProgressBar.setVisibility(View.GONE); } } ``` 在此例中,我们首先调用showProgressBar函数展示ProgressBar,然后模拟请求数据耗时操作,并在Handler中写下操作完成后需要执行的代码,即hideProgressBar函数,最后在hideProgressBar中隐藏ProgressBar。 如果你喜欢我们三七知识分享网站的文章,
欢迎您分享或收藏知识分享网站文章
欢迎您到我们的网站逛逛喔!https://www.ynyuzhu.com/
发表评论 取消回复