Android多种进度条使用详解

一、ProgressBar的使用

ProgressBar是Android系统中用于展现进度的控件,可根据不同的样式、颜色和进度值进行自定义。一般来说,ProgressBar分为两种样式:水平进度条、圆形进度条。

1、水平进度条

在布局文件中引用ProgressBar即可,系统会选择默认的样式:

```

android:id="@+id/progress_bar_horizontal"

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:startColor="#ff9d9e9d"

android:centerColor="#ff5a5d5a"

android:centerY="0.75"

android:endColor="#ff747674"

android:angle="270"

/>

android:startColor="@color/red"

android:endColor="@color/yellow"

android:angle="270"

/>

```

接下来在`res/values`文件夹下新建一个名为`styles.xml`的文件,定义ProgressBar的样式:

```

```

最后在布局文件中引用自定义ProgressBar:

```

android:id="@+id/progress_bar_horizontal"

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:id="@+id/progress_bar_circular"

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:android="http://schemas.android.com/apk/res/android"

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:id="@+id/progress_bar_circular"

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:id="@+id/progress_bar_number"

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/

点赞(50) 打赏

评论列表 共有 0 条评论

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