Android开发自学笔记(Android Studio)—4.5 ProgressBar及其子类

一、前言

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中示例代码的位置。不再在博客上浪费空间了。加快学习进度。

时间: 2024-08-27 18:05:15

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

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

一.引言 Android应用开发最重要的一份内容就是界面的开发,无论你程序包含的内容多么优秀,如若没有一个良好的用户交互界面,最终也只是会被用户所遗弃.Android SDK提供了大量功能丰富的UI组件,开发者只需要拖拖拽拽就能完成简单的应用,这些只是界面的展示,如果要完成优秀的用户交互,事件响应机制当然也是重点,这是后话. Android SDK中绝大部分UI组件都在androd.widget及其子包.android.view及其子包下,Android应用中的所有UI组件都继承了View类,V

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

一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说Android开发五大布局和四大组件,这五大布局就是: LinearLayout 线性布局 FrameLayout 单帧布局,也有中文翻译为帧布局.框架布局. RelativeLayout 相对布局 AbsoluteLayout 绝对布局 TableLayout 表格布局 而在Android4.0之

Android开发自学笔记(Android Studio)—4.5 ProgressBar及其子类

一.前言 ProgressBar本身代表了进度条组件,它还派生出了两个常用的组件:SeekBar和RatingBar,他们的使用方法类似,只是显示界面有一定的区别.我们看一下API文档中的说明: 从图中我们是可以直接看到ProgressBar继承自View类,直接子类有AbsSeekBar和ContentLoadingProgressBar,间接子类有RatingBar和SeekBar.下面依次介绍一下这几个控件的使用方法. 二.ProgressBar ProgressBar是界面用于与用户交互

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

一.R文件是什么?      如上图所示,我们可以通过findViewById方法通过传入R.id.show找到我们的TextView元素,findViewById方法也很好理解,从View中通过Id找到,那么R是什么呢?      资源文件的使用分为在代码中使用和在其他资源文件中引用该资源文件.在我们编译一个Android应用时,Android会自动生成一个R类,在该类中根据不同的资源类型又生成了相应的内部类,该类包含了系统中使用到的所有资源文件的标示,在Android Studio编译环境下

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

开发环境如下: 操作系统:Windows 10 Pro IDE:Android Studio 1.3.X 或更高版本 其它请参见文章说明. 1.环境搭建 1.1(番外)AndroidStudio常用功能介绍 2.开始第一个Android应用 3.Android应用结构解析 4.界面编程与View组件简单介绍 4.1布局组件 有待更新…

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

一.引言 ImageView继承自View组件,主要功能用来显示图片,实际上他能显示的不仅是图片,Drawable对象都可以用ImageView来显示. ImageView派生了ImageButton.ZoomButton等组件,具体的派生和继承关系可以查看API文档,我这边打开实在慢,就不再截图了. 本地API打开太慢了,本想放弃截图,不过在网上看到android api中文网站,打开速度不错,所以继承关系如下图: 在这里我们可以看到,ImageView继承自View,直接子类是ImageBu

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

一.引言 TextView是我们最常用的一个控件了,它类似于C# Winform程序中的Lable,Java Swing编程中的JLable,不过相对功能更强大些,但从功能上看,它其实就是个文字编辑器,只是默认关闭了编辑功能,而EditText这个编辑框控件就是它的直接子类.我们查看一下API(API Level23)中关于TextView的继承关系: 从API文档我们可以看出,TextView直接继承了View类,同时又是我们常用的EditText.Button.CheckBox.RadioB

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

一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试.    笔者没有怎么使用过Eclipse做Android学习,但是基于Android Studio类似于VS的项目架构,还是偏爱Android Studio这个IDE,没

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

一.引言    本套学习笔记的开发环境是Windows 10 专业版和Android Studio 的最新版1.3.1. Android Studio 是一个Android开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试.    笔者没有怎么使用过Eclipse做Android学习,但是基于Android Studio类似于VS的项目架构,还是偏爱Android Studio这个IDE,没