还是使用Android 2.3.3版本。
一、界面
二、main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/txtInfo" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="2dip" android:gravity="center_horizontal" android:text="进度条演示案例" android:textSize="18sp" /> <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="3dip" android:visibility="gone" > </ProgressBar> <Button android:id="@+id/startButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dip" android:text="开始" > </Button> </LinearLayout>
三、Activity类
package org.e276.progress; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; /** * Handler类 有2个队列,1个线程队列,1个消息队列 * * @author miao * */ public class ProgressBarDemoActivity extends Activity { private ProgressBar progressBar;// 进度条 private Button startButton;// 按钮 private TextView txtInfo;// 文本框 /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 进度条 progressBar = (ProgressBar) findViewById(R.id.progressBar); startButton = (Button) findViewById(R.id.startButton); txtInfo = (TextView) findViewById(R.id.txtInfo); // 为控件设置监听器 startButton.setOnClickListener(new ProgressBarOnClickListener()); } // 使用匿名内部类来充血Handler当中的handlerMessage()方法 Handler handler = new Handler() { @Override // 处理消息,与sendMessage的执行是异步的 public void handleMessage(Message msg) { // 设置进度条的刻度 progressBar.setProgress(msg.arg1); // 更新文本显示 txtInfo.setText("当前进度" + msg.arg1 + "%"); if (msg.arg1 >= 100) { // 将线程对象从队列中移除 handler.removeCallbacks(updateThread); txtInfo.setText("加载完成"); // 按钮可用 startButton.setEnabled(true); } else { // 处理完当前的消息,再放一个线程到队列中 handler.post(updateThread); //如果想把进度的速度调慢,就这样:handler.postDelayed(updateThread,200); } } }; // 声明一线程 Runnable updateThread = null; // 另一个线程,该类使用匿名内部类的方式进行声明 class UpdateThread implements Runnable { int i = 0; public void run() { i++; // 得到一个消息对象 Message msg = handler.obtainMessage(); // 将Message对象的arg1参数的值设置为i msg.arg1 = i;// 用arg1、arg2这两个成员变量传递消息,优点是系统性能消耗较少 // 将Message对象加入到消息队里欸当中 handler.sendMessage(msg); } } // 按钮点击事件 class ProgressBarOnClickListener implements OnClickListener { public void onClick(View v) { // 设置进度条为可见状态,在main.xml中设置为visibility="gone"不可见 progressBar.setVisibility(View.VISIBLE); // 实例化一个线程 updateThread = new UpdateThread(); // 将要执行的线程放入到队列当中 handler.post(updateThread); // 按钮不可用 startButton.setEnabled(false); } } }
四、demo
相关推荐
这个"Android源码——进度条对话框Demo_new_69.zip"应该包含了一个完整的示例项目,展示了如何在Android应用中创建和使用进度条对话框。下面将详细讲解Android进度条对话框的相关知识点。 1. **ProgressDialog 类**...
这个"安卓Android源码——进度条对话框Demo源码.zip"文件包含了一个完整的示例项目,用于演示如何在Android应用程序中实现进度条对话框。 首先,`.classpath`文件是Eclipse(一种常用的Android开发IDE)的工作空间...
本资源包“安卓Android源码——button圆形进度条.zip”包含了一个自定义的按钮控件,它集成了圆形进度条功能,适用于那些需要显示加载状态或执行长时间操作的应用场景。下面将详细解析这个源码中的关键知识点。 1. ...
这个压缩包文件“安卓Android源码——android通过js调用安卓系统功能.zip”很可能包含了一个示例项目,演示了如何在Android应用中通过JavaScript来调用Android系统的各种功能。下面,我们将详细探讨这一技术实现及其...
这份"Android源码——多种android控件的Demo_new_40.7z"资源,正是一个深入学习Android控件应用的宝库。通过分析其中的代码和示例,我们可以深入理解Android开发中的各种控件及其用法,从而提升我们的编程技能。 在...
《安卓Android源码——多种控件的Demo》 在安卓应用开发中,理解并熟练运用各种控件是至关重要的。这份"安卓Android源码——多种控件的Demo"提供了丰富的实例,帮助开发者深入理解Android UI组件的使用。下面将详细...
这个"安卓Android源码——SeekerBarSample.rar"文件很可能是包含了一个示例项目,展示了如何在Android应用中有效地使用SeekBar。下面将详细解释SeekerBar的基本概念、使用方法以及可能在示例代码中涉及到的关键点。 ...
在"安卓Android源码——使用Vitamio打造自己的万能播放器(1)——在线播放.zip"的示例中,可能会包含一个简单的Activity或Fragment,演示如何初始化Vitamio,加载在线视频,并实现基本的播放控制。此外,源码可能还...
这个压缩包文件"安卓Android源码——Mini音乐播放器.zip"提供了一个小型的Android音乐播放器的源代码,对于想要学习Android应用开发,尤其是音频处理和UI设计的开发者来说,这是一个非常宝贵的资源。它包含了一张...
Android设备上的音频文件可能存储在外部存储或内部存储,源码会演示如何正确处理不同情况下的文件读写和路径管理。 **10. ** **错误处理和用户体验** **:** 良好的音乐播放器源码会考虑异常处理,如网络请求失败、...
这个压缩包文件"安卓Android源码——android录音上传到服务器,上传使用AsyncTask异步任务.rar"包含了一个示例,它演示了如何利用Android SDK提供的API来录制音频,并通过AsyncTask异步任务将其上传到服务器。...
这个压缩包“安卓Android源码——垂直SeekBar(拖动条).zip”提供了一个实现垂直Seekbar的解决方案。 垂直SeekBar,正如其名,是将传统的水平 SeekBar 控件转换为垂直方向,使得用户可以沿着屏幕的垂直轴进行滑动...
这个压缩包"AndroidAndroid源码——AsyncTask_Download1.rar"可能包含了一个示例项目,演示如何使用AsyncTask进行文件下载,特别是Android应用程序中的资源下载。下面我们将深入探讨AsyncTask以及如何将其应用于...
这个名为"ProgressDialogSample"的压缩包文件很显然是一个示例项目,用于演示如何在Android应用中正确使用ProgressDialog。让我们深入探讨一下 ProgressDialog 的相关知识。 首先,ProgressDialog 是 Android SDK ...
这个名为"安卓Android源码——AsyncTask_Download2.rar"的压缩包很可能包含了一个使用AsyncTask进行文件下载的示例代码。下面我们将详细探讨AsyncTask及其在Android下载操作中的应用。 AsyncTask是Android提供的一...
本资料包“安卓Android源码——(SeekBar拖动条).zip”应该包含了一个关于如何自定义和使用SeekBar的实例代码。 SeekBar的使用主要涉及以下几个核心知识点: 1. **基本使用**:在布局文件中,我们可以使用`...
VideoViewSample是Android官方提供的一个示例项目,用于演示如何使用VideoView进行视频播放。本文将深入探讨VideoViewSample源码,解析其工作原理,帮助开发者更好地理解和运用这一组件。 一、VideoView概述 ...
这个"Android源码——ListView下拉刷新 Demo_new_09.7z"压缩包文件提供了关于如何实现这一功能的示例代码。 1. 下拉刷新的基本原理: 下拉刷新机制主要基于监听用户的滑动手势,当用户在ListView顶部向下拉动时,...
这个名为"NotificationTest"的简单Demo旨在演示如何在Android系统中实现通知功能。源码分析将帮助开发者深入理解Android通知机制的工作原理,并提供一个实际操作的起点。 1. **Notification简介** Android的通知...