《Android应用开发入门经典(第3版)》——第6.4节ProgressBar和SeekBar

6.4 ProgressBar和SeekBar
Android应用开发入门经典(第3版)
ProgressBar(android.widget.Progressbar) 和SeekBar(android.widget.SeekBar)能够揭示当前发生的事件状态。例如当用户界面是一个图像文件下载时,可能需要展示一个ProgressBar。圆形的并且揭示当前正在发生一些事情的ProgressBar被称为不确定的进度栏。横向的ProgressBar能够揭示事件的完成情况。SeekBar与横向的ProgressBar类似,但用户可以将SeekBar设置到某个具体的位置。例如SeekBar可用于设置VideoView中的位置。

本节在介绍 ProgressBar 和 SeekBar 的细节之前,将首先介绍如何使用AsyncTask(android.os.AsyncTask)。AsyncTask用于后台的处理。将紧张的任务移到后台是非常重要的。本节将介绍后台任务如何在 UI 线程中与ProgressBar进行通信。来自AsyncTask的更新将会使用横向的ProgressBar和SeekBar揭示出来。

图6.10给出了一个ProgressBar、一个横向的ProgressBar以及一个SeekBar。

6.4.1 AsyncTask
使用AsyncTask类可以管理后台操作,这些后台操作最终会将结果返回给UI线程。

要使用AsyncTask,必须要创建一个AsyncTask的子类,并实现相应的回调方法。

onPreExecute()——后台处理开始之前在UI线程中运行。
doInBackground()——运行在后台,所有实际的工作都在这个方法中完成。
publishProgress()——这个方法由doInBackground()方法调用,它定期将后台进程的进度通知给UI线程。这个方法将信息发送到UI进程。使用这个机会将更新的进度发送到进度栏,这样用户就能够看到进度了。
onProgressUpdate()——当doInBackground()调用publishProgress()时,在UI线程中运行。这个方法从后台进程中接收信息。使用这个机会跟新ProgressBar控件,这样用户就能够看到进度了。
当使用execute()方法启动之后,AsyncTask类会在后台线程中进行处理,不会阻塞UI线程。

onPostExecute()——后台处理结束之后在UI线程中运行。
AsyncTask使用3个泛型,它们分别表示传入任务的参数、所使用的进度值以及任务最重的返回值。读者可以像下面这样使用这些泛型来定义类:

在onPreExecute()方法中将一个不确定的ProgressBar方法的可见性设置为了可见。换句话说,在第4行,应用显示了一个不确定的ProgressBar。在第26行的onPostExecute()方法中将同一个ProgressBar设置成了不可见。将ProgressBar与这些方法联系起来之后就能够使得它在后台任务运行的时候变得可见。

在ShowProgressTask中,doInBackround()方法递增一个整数值并将这个值作为参数来调用publishProgess()。第 10 行的 sleep()方法用来模拟一些复杂任务的延时。它仅用于演示。onProgressUpdate()方法接受这个值并对横向的ProgressBar和SeekBar做出相应的更新。执行ShowProgressTask可按照下面的方法:

6.4.2 ProgressBar
程序清单6.4给出了AsyncTask所做的工作,即更新两个不同的ProgressBar。在ProgressActivity的onCreate()方法中定义了两个ProgressBar:

6.4.3 SeekBar
在本例中,SeekBar 与横向的进度条类似。也可以设定一个监听器来监听和响应发生在SeekBar上的变化。

在本例中,SeekBar是在代码中进行定义了,其最大值被设置成了100:

时间: 2024-10-31 13:42:51

《Android应用开发入门经典(第3版)》——第6.4节ProgressBar和SeekBar的相关文章

《Android应用开发入门经典(第3版)》——第6.8节作业

6.8 作业 Android应用开发入门经典(第3版) 6.8.1 测验 1.EditView中的提示的作用是什么? 2.要实现一个定制的按钮必须要做哪些工作? 3.不确定的ProgressBar和确定的ProgressBar之间的差别是什么? 4.在讨论AsyncTask时publishProgess的含义是什么? 6.8.2 答案 1.在 EditText 视图中显示的提示是对用户的提醒,它会被用户的输入所覆盖. 2.要实现一个定制的按钮必须要使用一个 XML 文件作为一个可绘制的资源.这个

《Android应用开发入门经典(第3版)》——第1.1节建立开发环境

1.1 建立开发环境 Android应用开发入门经典(第3版) 要进行Android开发,首先需要创建一个可工作的开发环境.Android开发使用的是Java开发语言,用于支持Android开发的重要工具都是内置于Eclipse集成开发环境(IDE)中的,当然IntelliJ和基于IntelliJ的Android Studio也是不错的工具.本书使用的工具是Eclipse.要安装Eclipse和支持Android的Eclipse插件(Android Developer Tools),需要下载一个

《Android应用开发入门经典(第3版)》——第1.4节运行应用

1.4 运行应用 Android应用开发入门经典(第3版) 要运行这个应用需要执行下列步骤. 1.选中Hour1App并右击鼠标列出一个选项列表.当然还可以按下Control键并单击Mac.选择Run As,然后选择Android Application,如图1.9所示. 2.在接收到"Android AVD Error"错误消息时可以选择创建一个新的Android虚拟设备.选择Yes. 运行模拟器需要一个Android虚拟设备(AVD),它定义了模拟器中用于测试的设备的参数规格.有很

《Android应用开发入门经典(第3版)》——第1.6节小结

1.6 小结 Android应用开发入门经典(第3版) 本章的目标是开始进行Android开发.第一步是下载和安装Android开发环境.读者使用这个环境生成了一个简单的应用程序并对其进行了修改,通过这一过程学习到了如何以可视化的方式来为Android应用创建用户界面并了解到用户界面本质上是一个XML文件.此外,还向该应用添加了一个简单的动作,这是通过为一个按钮创建一个onClickListener()方法来实现的.

《Android应用开发入门经典(第3版)》——第1.7节问与答

1.7 问与答 Android应用开发入门经典(第3版) 问题:使用ADT包是否是入门的最佳方式? 答案:ADT包是开始进行Android开发的最快和最简单的方式,但读者如果已经有了一个Eclipse实例或者使用的IDE不是Eclipse,那么就需要分别安装Android SDK.平台以及平台工具并继续使用自己熟悉的开发环境. 问题:是否应该使用可视化工具来创建用户界面? 答案:尽管本章仅对这个工具做了一个介绍,但一般来讲需要这样做.随着对Android布局的深入了解,读者可能会发现自己既会使用

《Android应用开发入门经典(第3版)》——第1.8节作业

1.8 作业 Android应用开发入门经典(第3版) 1.8.1 测验 1.在一个activity中,哪个方法用于将一个表示Button的资源与一个类型为Button的变量关联起来? 2.如何使用可视化工具将一个Button添加到屏幕上? 1.8.2 答案 1.一个activity包含一个名为findViewById()方法,该方法将资源与代码中的变量关联起来.特别地,findViewById()接收一个资源id,并返回这个Button或其他与该资源相关联的视图.在这段代码中必须要将返回的视图

《Android应用开发入门经典(第3版)》——第1.9节练习

1.9 练习 Android应用开发入门经典(第3版) 使用可视化编辑工具将其他组件添加到应用中.这些组件应该包括一个CheckBox和一个ImageView,同时这也是一个尝试很多不同的用户界面元素的好机会.

《Android应用开发入门经典(第3版)》——第6.1节创建演示应用

6.1 创建演示应用 Android应用开发入门经典(第3版) 本章内容包括: 使用TextView.EditText.和Button: 使用适配器创建控件: 使用 ProgressBar 揭示进度: 使用 ImageView 显示图像. 本章将详细介绍3种常见的控件.通过使用Button.EditText以及TextView并给其设置不同的属性值,读者在本章中可以学到如何创建不同的用户界面.即使使用了同样的视图,应用的功能和风格也能发生改变.本章还将介绍数据适配器的概念并展示适配器是如何与Sp

《Android应用开发入门经典(第3版)》——第6.2节使用输入控件

6.2 使用输入控件 Android应用开发入门经典(第3版) 在很多应用中,需要向用户收集一些基本信息.在一个布局中最基础的数据输入域是EditText.读者在第 1 章的示例应用中已经使用过了EditText.在设计布局时可以使用TextView作为标签,以清楚地阐明意图或增加指示.使用Button可以启动一个动作. 6.2.1 使用TextView和EditView视图 一个TextView会显示一段用户无法改变的文本.EditText视图用于用户输入.与其他控件一样,可以改变TextVi

《Android应用开发入门经典(第3版)》——第6.3节组合使用控件和适配器

6.3 组合使用控件和适配器 Android应用开发入门经典(第3版) 很多空间只有一个text属性.例如一个按钮可能会显示一个"OK"或者可能会将一行文本作为一个文本视图的标签.其他控件中必须要显示的数据可能会有很多,对于这些控件就可以使用适配器来将复杂的数据与控件联系起来. 6.3.1 适配器 一个 Adapter(android.widget.Adapter)将数据绑定到视图.例如,Spinner 是一个向用户提供一系列选项列表供选择的控件.这一个选项列表是这个视图运行时所需的数