android ProgressBar各种用法
### Android ProgressBar 各种用法详解 #### 一、引言 `ProgressBar` 是 Android 开发中最常用的 UI 控件之一,用于表示任务处理进度或等待时间的状态。它可以帮助用户了解应用正在后台执行某些操作,避免因为等待而感到困惑。本文将详细介绍 `ProgressBar` 的不同样式及其使用方法。 #### 二、基本概念 `ProgressBar` 支持两种显示模式: - **确定性模式**(Deterministic mode):用于展示具体进度百分比。 - **不确定性模式**(Indeterminate mode):用于表示正在进行但无法预知进度的任务,如网络加载。 #### 三、不同类型的 ProgressBar 根据样式和用途的不同,`ProgressBar` 可以分为以下几种: ##### 1. 普通圆形 ProgressBar 这是最常见的 `ProgressBar` 类型,常用于表示一个任务正在进行中,但不确定其完成时间,如发送短信、连接网络等场景。 **XML 定义示例**: ```xml <ProgressBar android:id="@+id/widget43" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> ``` ##### 2. 不同大小的圆形 ProgressBar 为了适应不同的界面设计需求,`ProgressBar` 还支持不同大小的样式。 - **超大号圆形 ProgressBar** - **风格**:`style="?android:attr/progressBarStyleLarge"` - **XML 定义**: ```xml <ProgressBar android:id="@+id/widget196" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge" /> ``` - **小号圆形 ProgressBar** - **风格**:`style="?android:attr/progressBarStyleSmall"` - **XML 定义**: ```xml <ProgressBar android:id="@+id/widget108" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleSmall" /> ``` - **标题型圆形 ProgressBar** - **风格**:`style="?android:attr/progressBarStyleSmallTitle"` - **XML 定义**: ```xml <ProgressBar android:id="@+id/widget110" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleSmallTitle" /> ``` ##### 3. 长形进度条 长形进度条适用于需要展示具体进度百分比的场景,例如下载文件或加载数据。 **XML 定义示例**: ```xml <ProgressBar android:id="@+id/progressbar_updown" android:layout_width="200dp" android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal" /> ``` **代码中实现示例**: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); // 获取 ProgressBar 实例 ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressbar_updown); // 设置最大值 progressBar.setMax(100); // 设置当前进度 progressBar.setProgress(50); } ``` #### 四、自定义 ProgressBar 除了使用 Android 提供的默认样式外,还可以通过自定义绘制来创建更个性化的 `ProgressBar`。这通常涉及到使用 `Canvas` 和 `Paint` 类来绘制图形。 **自定义圆形 ProgressBar 示例**: ```java public class CustomProgressBar extends View { private Paint paint; private int progress; public CustomProgressBar(Context context) { super(context); init(); } public CustomProgressBar(Context context, AttributeSet attrs) { super(context, attrs); init(); } public CustomProgressBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.BLUE); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(10f); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); float sweepAngle = 360 * progress / 100f; canvas.drawArc(50, 50, getWidth() - 50, getHeight() - 50, -90, sweepAngle, false, paint); } public void setProgress(int progress) { this.progress = progress; invalidate(); } } ``` #### 五、结论 通过本文介绍,我们了解到 `ProgressBar` 在 Android 开发中的重要性和多样性。无论是基本的圆形 `ProgressBar` 还是长形进度条,或是自定义的样式,都能满足不同场景下的需求。开发者可以根据实际应用场景选择合适的 `ProgressBar` 类型,并通过自定义来实现更加个性化的设计效果。
剩余17页未读,继续阅读
- 粉丝: 0
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
- 1
- 2
- 3
前往页