Android控件--ProgressBar

1、简介

ProgressBar 是进度条组件,通常用于向用户展示某个耗时操作完成的进度,而不让用户感觉是程序失去了响应,从而更好地提升用户界面的友好性。

就像我现在进行的 apk 下载的任务,它都是通过进度条通知用户下载的进度,如果没有了这个进度条,不能实时地呈现下载进度的话,用户就会想是不是程序失去响应,而要下载的文件比较大的话,用户肯定会想知道下载到了什么地方,什么时候会完成,有了进度条都可以打消用户的这些疑虑。

2、显示样式

用 Style 属性来给 ProgressBar 确定样式,有两种方式,第一种就是 API文档中说明的方式:

  • Widget.ProgressBar.Horizontal
  • Widget.ProgressBar.Small
  • Widget.ProgressBar.Large
  • Widget.ProgressBar.Inverse
  • Widget.ProgressBar.Small.Inverse
  • Widget.ProgressBar.Large.Inverse

设置的方式如下:

style="@android:style/Widget.ProgressBar.Horizontal"

第二种就是使用系统的attr,下面的方式是系统的style:

  • style=”?android:attr/progressBarStyle”
  • style=”?android:attr/progressBarStyleHorizontal”
  • style=”?android:attr/progressBarStyleInverse”
  • style=”?android:attr/progressBarStyleLarge”
  • style=”?android:attr/progressBarStyleLargeInverse”
  • style=”?android:attr/progressBarStyleSmall”
  • style=”?android:attr/progressBarStyleSmallInverse”
  • style=”?android:attr/progressBarStyleSmallTitle”
style="?android:attr/progressBarStyleHorizontal"  
style="@android:style/Widget.ProgressBar.Horizontal"

这两种都能实现水平ProgressBar样式,但效果并不一样。

我们可以通过你的SDK目录下…\platforms\android-25\data\res\values\styles.xml 查看系统的样式源码。如果是使用Android Studio的朋友就不需要这样了,可以Ctrl + 左键进入指定样式的源码。

系统自带的样式中最常用的就是以下三种了,分别代表小环形进度条,大环形进度条,水平进度条。这里并没有中型环形进度条,因为如果不设置 style 属性或者设置为 progressBarStyle 就显示为中等大小。

  • style=”?android:attr/progressBarStyleSmall”
  • style=”?android:attr/progressBarStyleLarge”
  • style=”?android:attr/progressBarStyleHorizontal”

3、ProgressBar分类

ProgressBar分为精确的和不精确的:

  • 精确的是我们能明确看到进度(可以显示刻度或者百分比)
  • 不精确的就是不确定一个操作需要多长时间来完成,这个时候就需要用的就是不精确的ProgressBar了,比如过场动画,刷新进度。

android:indeterminate 就是关于设置不精确的属性,因为 indeterminate 是不明确的意思,所以如果设置为true的话,滚动条的当前值会自动在最小到最大值之间来回移动,形成这样一个动画效果,这个只是告诉别人“我正在工作”,但不能提示工作进度到哪个阶段。主要是在进行一些无法确定操作时间的任务时作为提示。而设置为 false 就是根据我们的进度可以设置现在的进度值。

设置为true时,ProgressBar可能是圆形的滚动条或者水平的滚动条(由样式决定),但是我们一般时候,是直接使用Style类型来区分圆形还是水平ProgressBar的。

我们不仅可以在面板中显示不同风格的 ProgressBar,也可以在标题栏上设置,接下来就通过一个小案例来说明如何显示精确与不精确的两种 ProgressBar:

public class ProgressBar extends Activity {
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 启用窗口特征,启用带进度和不带进度的进度条
        requestWindowFeature(Window.FEATURE_PROGRESS);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.activity_progress_bar);

        // 显示两种进度条
        setProgressBarVisibility(true);
        setProgressBarIndeterminateVisibility(true);
        // Max=10000
        
  • 15
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值