一、前言

ProgressBar本身代表了进度条组件,它还派生出了两个常用的组件:SeekBar和RatingBar,他们的使用方法类似,只是显示界面有一定的区别。我们看一下API文档中的说明:

从图中我们是可以直接看到ProgressBar继承自View类,直接子类有AbsSeekBar和ContentLoadingProgressBar,间接子类有RatingBar和SeekBar。下面依次介绍一下这几个控件的使用方法。

二、ProgressBar

ProgressBar是界面用于与用户交互的一个组件,用来提升用户友好度,通常用于向用户展示某个耗时操作时,用于展示完成的百分比,不至于让用户觉得程序失去了响应。在API文档中,我们看到他所支持的XML属性有如下:

xml属性名称 说明
android:animationResolution 动画超时时间,必须是整数值,比如“100”
android:indeterminate 该属性设置为true,表示不精确显示进度
android:indeterminateBehavior 设置当选择不精确显示进度时,如何描述到达最大值
android:indeterminateDrawable 设置当选择不精确显示进度时,所绘制的drawable对象
android:indeterminateDuration 设置不精确显示进度的持续时间
android:indeterminateOnly 设置只采用不精确显示进度模式(状态保持模式将不会工作)
android:interpolator  
android:max 设置进度可以达到的最大值
android:maxHeight 可选参数 设置View的最大高度
android:maxWidth 可选参数 设置View的最大宽度
android:minHeight 可选参数 设置View的最小高度
android:minWidth 可选参数 设置View的最小宽度
android:mirrorForRtl 定义如果是否需要反映在RTL模式的相关画板,默认为false
android:progress 设置该进度已完成的进度值
android:progressDrawable 设置该进度条轨道对应的drawable对象
android:secondaryProgress 二级进度条,主要用于缓存使用的场景

该表格取自API19文档

进度条支持多种风格,可以直接通过设置style属性来设置,API中也给出了如下的属性:

另外一种使用方式就是可以使用系统的ATT属性例如:

  • 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" 

例如如下的代码:

对于疯狂讲义3上的示例,我实际操作并没有成功,自定义进度条虽然按照书上的示例操作, 但是显示上两个图标重叠,并不能按照进度情况显示,代码如下:

而显示效果却是:

而在实际运行效果也是后台的模拟线程在更新UI上也是没有按照预想的结果执行,一开始显示的都是底部红色图片,一直不动,然后一下全更新成这种重叠图片了。

找了半天原因也不知道哪里出了问题,这个问题暂时记录一下,等抽空再解决。(API22的模拟器出现的显示问题)

网上找了进度条的示例,感觉也不是很完整,学起来不是很系统,想想android自带的sdk中有示例,就把它找出来了,我们先看一下效果:

示例的位置在&AndroidSDK&\samples\android-19\legacy\ApiDemos\src\com\example\android\apis\view 这个文件夹下,可以看到

这4个JAVA文件,就是对应的4个进度条代码。

而对应的布局文件可以向上级res文件夹下去找。代码这里不再附上了。自己去找DEMO吧,我承认这个,我学的有点郁闷,标记一下。

三、SeekBar

SeekBar是滑动条,他与进度条的不同时一般进度条都是用颜色填充进度,而滑动条则是用滑块表示进度数值,而且允许用户通过拖动滑块来改变数值,例如Windows的音量调节:

就是一个滑动条。滑块的样式则是通过android:thumb属性来指定。

下面做一个简单的小例子,显示结果就是在textView上显示拖动滑块改变的值。

简单的效果:

获取拖动的值需要设置他的  setOnSeekBarChangeListener  这个监听器,重写他的方法。上方右边的示例则是自定义了他的滑道,代码在下面一块给出。

首先给出滑道的样式定义(progress_drawable.xml):

下面是示例主页面的样式布局:

如果想模仿windows的调整音量的滑块,只需要在内部的线性布局的最前面再加个ImageView就可以做出差不多的效果。

这是后台代码,主要是监听器的实现。

这些只是SeekBar的基本用法,当然也可以多种实现,如下是在网上看到的网友做的效果:

 

示例链接:

1.自定义Seekbar

2.Android使用SeekBar时动态显示进度且随SeekBar一起移动

3.可以显示浮动文字提示的ProgressBar或者SeekBar

四、RatingBar

星级评分条,其实也是一种拖动条,只是与拖动条的区别在于它提供星星来表示进度。常见的属性如下:

属性 说明
android:isIndicator 设置该星级评分是否允许用户该表(true为不允许改变)
android:numStars 设置该星级评分条总共有多少星星
android:rating 设置该星级评分条默认的星级
android:stepSize 设置每次最少需要改变多少个星级

我们来做一个简答的例子来演示这些属性:

同样先看一下效果:

然后我们给出布局文件:

其中max和progress是进度条中的属性,因为RatingBar本身就是一个特殊的进度条,设置了最大值是100,5颗星显示,说明一颗星是20,步进0.5,说明一次至少可以选择半颗星。

后台主要是处理了改变时的监听器。

 

五、后记

最近杂事繁多,学习的进度减慢了,遇到问题也卡了很久,有些问题需要多深入的学习一下,多看看SDK中的示例和API文档。下面的章节会跳过一些简单控件的使用,给出SDK中示例代码的位置。不再在博客上浪费空间了。加快学习进度。

Android开发自学笔记(Android Studio)—4.5 ProgressBar及其子类的更多相关文章

  1. Android开发自学笔记(Android Studio) 目录

    开发环境如下: 操作系统:Windows 10 Pro IDE:Android Studio 1.3.X 或更高版本 其它请参见文章说明. 1. 环境搭建 1.1 (番外)AndroidStudio常 ...

  2. Android开发自学笔记(Android Studio)—4.界面编程与View组件简单介绍

    一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组 ...

  3. Android开发自学笔记(Android Studio)—4.1布局组件

    一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说 ...

  4. Android开发自学笔记(Android Studio)—4.4 AdapterView及其子类

    一.引言       AdapterView本身是一个抽象类,而它派生的子类在用法上也基本相似,只是在显示上有一定区别,因此把他们也归为一类.       AdapterView具有如下特征: Ada ...

  5. Android开发自学笔记(Android Studio1.3.1)—3.Android应用结构解析

    一.R文件是什么?      如上图所示,我们可以通过findViewById方法通过传入R.id.show找到我们的TextView元素,findViewById方法也很好理解,从View中通过Id ...

  6. Android开发自学笔记(Android Studio1.3.1)—1.环境搭建

    一.引言 .Google推出的 毫无疑问,这个是它的最大优势,Android Stuido是Google推出,专门为Android"量身订做"的,是Google大力支持的一款基于I ...

  7. Android开发自学笔记(Android Studio1.3.1)—2.开始第一个Android应用

    一.前言      使用Android Studio开发Android应用是一件非常简单的事情,因为它会帮你自动完成很多工作.本篇我们主要完成一个单击按钮在文本框显示当前时间的简单应用,借此来演示一下 ...

  8. Android开发自学笔记(Android Studio)—4.3ImageView及其子类

    一.引言 ImageView继承自View组件,主要功能用来显示图片,实际上他能显示的不仅是图片,Drawable对象都可以用ImageView来显示. ImageView派生了ImageButton ...

  9. Android开发自学笔记(Android Studio)—4.2TextView及其子类

    一.引言 TextView是我们最常用的一个控件了,它类似于C# Winform程序中的Lable,Java Swing编程中的JLable,不过相对功能更强大些,但从功能上看,它其实就是个文字编辑器 ...

随机推荐

  1. 【再探backbone04】单页应用的基石-路由处理

    前言 首先发一点牢骚,互联网公司变化就是快,我去一个团队往往就一年时间该团队就得解散,这不,公司居然把无线团队解散了,我只能说,我那个去!!! 我去年还到处让人来呢,一个兴兴向荣的团队说没就没了啊!我 ...

  2. 【小贴士】关于transitionEnd/animate的一个有趣故事

    前言 在很久之前,我们项目有一个动画功能,功能本身很简单,便是典型的右进左出,并且带动画功能 以当时来说,虽然很简单,但是受限于框架本身的难度,就直接使用了CSS3的方式完成了功能 当时主要使用tra ...

  3. CSS 框模型

    CSS 框模型 CSS 框模型概述 CSS 内边距 CSS 边框 CSS 外边距 CSS 外边距合并 一,CSS 框模型 (Box Model) 规定元素框处理元素内容.内边距.边框 和 外边距 的方 ...

  4. 利用CSS3D效果制作简易旋转木马效果

    最近看一下css3d的一些特性,想着也实验学习一下,制作个小demo之类的.就练习了一下.开发一个粗糙的选择木马效果,如图 其实就是找到角度和位置,计算每根柱子的旋转角度摆放到3d空间的置顶位置即可. ...

  5. Microsoft Dynamics AX 7 新特性探索 - Demo 部署(Part 1)

    Dynamics AX 7已经发布了一段时间了,我们知道这次微软为我们带来了许多令人激动的新特性.在这个系列里,Reinhard将揭开New Dynamics AX的神秘面纱,和大家一起探索这些新的特 ...

  6. Bitset<>用于unordered container时的默认hash函数

    自从c++11起,bitset用于unordered container,将会提供默认的hash函数. 在gcc中,相关代码如下: // DR 1182. /// std::hash speciali ...

  7. MS SQL错误:SQL Server failed with error code 0xc0000000 to spawn a thread to process a new login or connection. Check the SQL Server error log and the Windows event logs for information about possible related problems

          早晨宁波那边的IT人员打电话告知数据库无法访问了.其实我在早晨也发现Ignite监控下的宁波的数据库服务器出现了异常,但是当时正在检查查看其它服务器发过来的各类邮件,还没等到我去确认具体情 ...

  8. 使用TortoiseGit 来进行日常操作

    TortoiseSVN大家应该都很熟悉,相应的,git也有一个工具是TortoiseGit. 下载地址: http://download.tortoisegit.org/tgit/previews/ ...

  9. Java 堆

    特性: 虚拟机启动时创建的线程共享的内存区域,所有实例对象和数组对象分配内存的区域 GC垃圾手机管理器管理的主要区域,GC堆 容量可以固定,也可以动态扩展,自动收缩 -Xmx最大堆大小 -Xms最小. ...

  10. Centos6下安装Hadoop2.6 问题总结

    一. 安装背景:VirtualBox下安装三台Centos6.8虚拟机(一主:master, 两从:slave1,slave2) Centos版本:CentOS-6.8-x86_64 网络配置:三台虚 ...