当前位置: 代码迷 >> Android >> Android中Intent跟ProgressBar的结合使用
  详细解决方案

Android中Intent跟ProgressBar的结合使用

热度:45   发布时间:2016-05-01 19:23:36.0
Android中Intent和ProgressBar的结合使用

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
?<string name="app_name">IntentProgressBar</string>
?<string name="start">开始</string>
</resources>

main.xml

<?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/progressBarId"
??android:layout_width="fill_parent" android:layout_height="wrap_content"
??style="@android:style/Widget.ProgressBar.Horizontal" android:max="200"
??android:visibility="gone" />

?<Button android:id="@+id/startButtonId" android:layout_width="fill_parent"
??android:layout_height="wrap_content" android:text="@string/start" />

</LinearLayout>

?

IntentProgressBarActivity.java

package com.duoguo.android;

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;

/**
?* Intent在ProgressBar中的使用
?*
?* @author shyboy(
[email protected])
?*
?*/
public class IntentProgressBarActivity extends Activity {

?private ProgressBar progressBar;// 声明ProgressBar控件
?private Button startButton;// 声明Button控件

[email protected]
?public void onCreate(Bundle savedInstanceState) {

??super.onCreate(savedInstanceState);
??setContentView(R.layout.main);

??progressBar = (ProgressBar) findViewById(R.id.progressBarId);// 根据控件id获取ProgressBar控件对象
??startButton = (Button) findViewById(R.id.startButtonId);// 根据控件id获取Button控件对象
??startButton.setOnClickListener(new StartButtonClickListener());// 为startButton按钮控件添加单击事件监听器

?}

?// 声明startButton控件的事件监听器
?class StartButtonClickListener implements OnClickListener {

[email protected]
??public void onClick(View v) {

???progressBar.setVisibility(View.VISIBLE);// 设置progressBar进度条为可见
???handler.post(runnable);// 将线程添加到线程队列中

??}

?}

?// 实例化Handler对象,通过handleMessage用来接收队列中的消息
?Handler handler = new Handler() {

[email protected]
??public void handleMessage(Message msg) {

???progressBar.setProgress(msg.arg1);// 设置progressBar进度条的第一进度值
???handler.post(runnable);// 将线程添加到线程队列当中

??}

?};

?// 实例化线程runnable对象
?Runnable runnable = new Runnable() {

??int i = 0;

[email protected]
??public void run() {

???System.out.println("thread start");
???i += 10;

???Message message = handler.obtainMessage();// 获取消息对象
???message.arg1 = i;// 用成员变量arg1来存放i的值

???try {

????Thread.sleep(1000);// 线程休眠1s

????handler.sendMessage(message);// 将消息添加到消息队列的尾端

????if (i == progressBar.getMax()) {
?????handler.removeCallbacks(runnable);// 将线程对象从消息队列中移除
?????progressBar.setVisibility(View.GONE);
?????i = 0;
????}

???} catch (InterruptedException e) {

????e.printStackTrace();

???}

??}
?};

}

?

希望对你有所帮助,呵呵……

  相关解决方案