Android ProgressBar 样式大全
封面图
•
2025-12-14
•
Android开发
215
0
0
0
在 Android 开发中,`ProgressBar` 是一个常用的 UI 组件,用于表示加载状态或进度。Android 提供了多种内置的 `ProgressBar` 样式(Style),同时也支持自定义样式以满足不同的设计需求。 以下是 **Android `ProgressBar` 的样式大全**,包括系统默认样式和一些常见自定义方式。 --- ## 🧾 一、系统默认的 ProgressBar 样式 ### 1. `@android:style/Widget.ProgressBar` - 默认样式,适用于大部分场景。 - 通常显示为圆形旋转动画(如“加载中”)。 - 可以通过 `android:indeterminate="true"` 来控制是否为“不确定进度”模式。 ```xml <ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminate="true" /> ``` ### 2. `@android:style/Widget.ProgressBar.Horizontal` - 水平进度条,常用于下载、播放等需要显示具体进度的场景。 - 需要设置 `android:max` 和 `android:progress` 属性。 ```xml <ProgressBar android:id="@+id/horizontalProgressBar" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" android:indeterminate="false" /> ``` ### 3. `@android:style/Widget.ProgressBar.Small` - 小尺寸的圆形进度条,适合放在按钮或图标旁边。 ```xml <ProgressBar android:id="@+id/smallProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?attr/progressBarSmallStyle" /> ``` ### 4. `@android:style/Widget.ProgressBar.Large` - 大尺寸的圆形进度条,常用于全屏加载提示。 ```xml <ProgressBar android:id="@+id/largeProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" style="?attr/progressBarLargeStyle" /> ``` --- ## 🎨 二、自定义 ProgressBar 样式(使用 XML 定义) 你可以通过 `styles.xml` 文件自定义 `ProgressBar` 的外观。 ### 示例:自定义水平进度条样式 ```xml <style name="CustomHorizontalProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal"> <item name="android:progressDrawable">@drawable/custom_progress_horizontal</item> <item name="android:indeterminateDrawable">@drawable/custom_progress_indeterminate</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">8dp</item> </style> ``` 然后在布局中使用: ```xml <ProgressBar style="@style/CustomHorizontalProgressBar" android:layout_width="match_parent" android:layout_height="8dp" android:max="100" android:progress="50" /> ``` --- ## 🖼️ 三、使用自定义 Drawable 图片 你可以用 `progressDrawable` 或 `indeterminateDrawable` 自定义进度条的外观。 ### 1. 使用 `progressDrawable`(水平进度条) ```xml <ProgressBar android:id="@+id/customProgressBar" android:layout_width="match_parent" android:layout_height="8dp" android:progressDrawable="@drawable/custom_progress_horizontal" /> ``` ### 2. 使用 `indeterminateDrawable`(不确定进度条) ```xml <ProgressBar android:id="@+id/customIndeterminateProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateDrawable="@drawable/custom_progress_indeterminate" /> ``` 你可以在 `res/drawable/` 目录下创建对应的 `custom_progress_horizontal.xml` 和 `custom_progress_indeterminate.xml` 文件来定义进度条的样式。 --- ## 🌈 四、Material Design 中的 ProgressBar 如果你使用的是 Material Design,可以使用以下样式: ### 1. `Widget.MaterialComponents.ProgressBar.Indeterminate` - Material Design 风格的不确定进度条。 ```xml <ProgressBar android:id="@+id/materialIndeterminate" style="Widget.MaterialComponents.ProgressBar.Indeterminate" android:layout_width="wrap_content" android:layout_height="wrap_content" /> ``` ### 2. `Widget.MaterialComponents.ProgressBar.Horizontal` - Material Design 风格的水平进度条。 ```xml <ProgressBar android:id="@+id/materialHorizontal" style="Widget.MaterialComponents.ProgressBar.Horizontal" android:layout_width="match_parent" android:layout_height="8dp" android:max="100" android:progress="50" /> ``` --- ## ✅ 五、其他常用属性 | 属性 | 说明 | |------|------| | `android:indeterminate` | 是否是不确定进度(如旋转动画) | | `android:progress` | 当前进度值(仅在确定模式下有效) | | `android:max` | 最大进度值 | | `android:progressDrawable` | 自定义进度条背景图 | | `android:indeterminateDrawable` | 自定义不确定进度条动画 | --- ## 📦 六、使用第三方库(可选) 如果你希望有更丰富的样式,可以考虑使用第三方库,如: - **Lottie**:添加动画效果 - **CircularProgressView**:自定义圆环进度条 - **Material Components Library**:提供丰富组件 --- ## 📝 总结 | 类型 | 样式名称 | 说明 | |------|----------|------| | 圆形进度条 | `Widget.ProgressBar` | 默认样式 | | 水平进度条 | `Widget.ProgressBar.Horizontal` | 常用于下载、播放等 | | 小型进度条 | `Widget.ProgressBar.Small` | 小尺寸 | | 大型进度条 | `Widget.ProgressBar.Large` | 大尺寸 | | Material 风格 | `Widget.MaterialComponents.ProgressBar.*` | Material Design 支持 | --- 如果你需要具体的代码示例或想要实现某种特定风格的进度条,欢迎继续提问!
上一篇:
Android - SIP Protocol教程
下一篇:
android Spinner控件详解
标题录入,一次不能超过6条
留言
评论