zoukankan      html  css  js  c++  java
  • Android开发自学笔记(Android Studio)—4.5 ProgressBar及其子类

    一、前言

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

    image

    从图中我们是可以直接看到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" 

    例如如下的代码:

    image

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

    image

    而显示效果却是:

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

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

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

    progressbar

    示例的位置在&AndroidSDK&samplesandroid-19legacyApiDemossrccomexampleandroidapisview 这个文件夹下,可以看到

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

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

    7N]80L_$)E67F72AUPD(B68

    三、SeekBar

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

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

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

    简单的效果:

    seekbarseekbar

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

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

    image

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

    image

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

    image

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

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

    imageimage

    示例链接:

    1.自定义Seekbar

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

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

    四、RatingBar

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

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

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

    同样先看一下效果:

    ratingbar

    然后我们给出布局文件:

    image

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

    image

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

    五、后记

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

  • 相关阅读:
    简单的ajax的结构
    Sencha touch 中的一段源码匿名中定义Function并调用
    js使用闭包时,内部函数是直接访问外部函数的实际变量而非复制一份新变量
    rd /q /s 删除文件
    两种定义Function的方式 JavaScript
    DOC @echo off call
    Function 对象,javascript中双括号的运行机制
    抽象的力量
    Hash算法,及HashMap使用
    如何使用EnumSet实现基于bit field的enum set?
  • 原文地址:https://www.cnblogs.com/boyliupan/p/5020185.html
Copyright © 2011-2022 走看看