`

使用handler处理progressbar

阅读更多

1.设置布局文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<ProgressBar 
android:id="@+id/ProgressBar" 
style="?android:attr/progressBarStyleHorizontal" 
android:layout_width="200dp" 
android:layout_height="wrap_content" 
android:visibility="gone" 
/> 
<Button 
android:id="@+id/Button" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="开始"/> 
</LinearLayout> 

 

2.处理progressbar的类

public class ProgressBarTestActivity extends Activity {
	/** Called when the activity is first created. */

	private ProgressBar bar;
	private Button startButton;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		// 得到ProgressBar
		bar = (ProgressBar) findViewById(R.id.ProgressBar);
		startButton = (Button) findViewById(R.id.Button);

		// 当按钮按下时开始执行
		startButton.setOnClickListener(new ButtonListener());
	}

	class ButtonListener implements OnClickListener {
		public void onClick(View v) {
			bar.setVisibility(View.VISIBLE);
			updateBarHandler.post(updateThread);
		}
	}

	Handler updateBarHandler = new Handler() {
		@Override
		public void handleMessage(Message msg) {

			bar.setProgress(msg.arg1);
			updateBarHandler.post(updateThread);
		}
	};

	Runnable updateThread = new Runnable() {
		int i = 0;

		public void run() {
			System.out.println("begin thread");
			i = i + 10;
			// 得到一个消息对象
			Message msg = updateBarHandler.obtainMessage();
			msg.arg1 = i;
			try {
				Thread.sleep(1000);
			} catch (Exception e) {
				e.printStackTrace();
			}
			updateBarHandler.sendMessage(msg);
			if (i == 100) {
				updateBarHandler.removeCallbacks(updateThread);
			}
		}
	};

}

 效果如图:



 

  • 大小: 10.8 KB
分享到:
评论

相关推荐

    android Handler和ProgressBar的用法举例

    一个简单的小例子,用来学习android Handler和ProgressBar的用法

    android mars视频代码 Handler 源码 ProgressBarHandler

    www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 Handler ProgressBarHandler(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)

    Progressbar进度条的使用

    本教程将深入探讨如何利用`Handler`消息机制来实现`ProgressBar`的动态更新,展示进度条中进度和数值的变化。 `ProgressBar`有两种主要类型:线性(Linear)和圆形(Circular)。线性`ProgressBar`通常用于表示任务...

    Android应用源码之ProgressBar 几乎全部的用法

    可以使用Handler或CountDownTimer来控制进度条的显示和隐藏,比如在后台任务开始时显示,任务完成时隐藏。 9. **动画效果** Android提供了`android:animationDuration`属性,可以控制进度条动画的持续时间。同时...

    Handler的使用

    本示例中,“Handler的使用”主要是讲解如何利用`Handler`来更新`ProgressBar`的进度,使得进度条每秒钟能动态地显示进度变化。 `Handler`的工作原理基于消息队列(Message Queue)和Looper。当在一个线程(如主线...

    ProgressBar的使用

    在Android开发中,ProgressBar的使用广泛,无论是文件下载、数据加载还是长时间运算,都可以用到它来提升用户体验。本教程将深入探讨ProgressBar的使用方法。 首先,ProgressBar分为两种类型:水平进度条...

    android-Handler的使用

    在示例代码 `HandlerActivity` 中,可以看到 `MyThread` 类可能用于执行后台任务,然后通过 Handler 回调到主线程更新 UI(例如 `TextView` 和 `ProgressBar`)。按钮点击事件启动了新的线程,并创建了一个新的 ...

    Android progressBar的简单使用例子

    ProgressBar结合Android的其他机制,如Handler或AsyncTask,可以提供更好的用户体验。 在提供的`ProgressBarDemo`压缩包文件中,应该包含了一个简单的Android项目示例,你可以通过解压并导入Android Studio来运行和...

    AndroidTest_ProgressBar_DialogProgress_AlertDialog

    3) Service使用ProgressBar,使用Handler调用主线程的资源 2、主线程使用ProgressDialog进行显示 3、启动Service,然后创建AlertDialog.build创建,确认后跳转到Activity,再动态生成ProgressBar 备注: Service...

    ProgressBar的简单应用

    可以使用AsyncTask或者Handler来实现: ```java new AsyncTask, Integer, Void&gt;() { @Override protected Void doInBackground(Void... voids) { for (int i = 0; i ; i++) { publishProgress(i); // 模拟...

    Handler使用相关的三个实例

    主线程的Handler接收到Message后,在`handleMessage()`方法内,可以安全地使用这些数据来更新UI组件,如TextView、ProgressBar等。 4. **Message的使用** Message是消息的载体,包含了消息的类型(`what`)、附加...

    Android中Intent和ProgressBar的结合使用

    在TargetActivity或Service中,你可以使用AsyncTask、Thread或Handler来执行后台任务,并通过回调或者BroadcastReceiver的方式更新主线程中的ProgressBar。 例如,使用AsyncTask: ```java private class MyTask ...

    ProgressBar单独线程执行案例

    5. **Java Swing或Windows Forms的ProgressBar使用**: - **控件添加**:在设计界面时,将ProgressBar拖放到窗体上,设置其最小值、最大值等属性。 - **后台任务与事件**:使用`BackgroundWorker`类(Windows ...

    android - progressBar

    为了实现自动增量,可以使用`Handler`或者`CountDownTimer`。例如,使用`Handler`的代码可能如下: ```java ProgressBar progressBar; @Override protected void onCreate(Bundle savedInstanceState) { ...

    ProgressBar的实例

    对于水平样式,使用`&lt;ProgressBar&gt;`标签,并设置`android:indeterminate="false"`以启用确定性进度: ```xml &lt;ProgressBar android:id="@+id/progressBar" android:layout_width="wrap_content" android:...

    android关于ProgressBar和ProgressDialog的使用

    同时,要注意在Android API 26及更高版本中,`ProgressDialog`已被弃用,建议使用`AlertDialog`配合`ProgressBar`来替代。 通过以上讲解,你应该对在Android中使用`ProgressBar`和`ProgressDialog`有了深入的理解。...

    进度条对话框:通过Handler实现

    注意,自Android 6.0(API级别23)起,ProgressDialog已被弃用,推荐使用ProgressBar结合ProgressBar的父布局(如AlertDialog)来实现相同功能。不过,理解ProgressDialog和Handler的配合使用仍然是Android开发中的...

    ProgressBar.rar

    这个"ProgressBar.rar"压缩包很可能是你在实践中创建的一个小应用示例,用于练习和理解ProgressBar的使用。 在Android中,ProgressBar分为两种主要类型:Horizontal(水平)和Circular(圆形)。Horizontal ...

    Android:Handler学习实例1

    Android中Handler的学习实例,在本示例中,在主线程外开启子线程(使用匿名内部类Runnable),使用Handler中的Message传递消息(高效),操作一个ProgressBar的进度。适合初学者学习和了解Handler以及ProgressBar的...

    Android:ProgressBar的初步学习

    本项目是一个针对初学者的`ProgressBar`初步学习实例,旨在帮助开发者理解如何在Android应用中集成和使用`ProgressBar`。 `ProgressBar`的基本使用: 1. **XML布局文件中的声明**:在`res/layout`目录下的XML布局...

Global site tag (gtag.js) - Google Analytics