android processbar

来源:互联网 发布:淘宝客流量来源 编辑:程序博客网 时间:2024/05/22 15:53

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <ProgressBar        android:id="@+id/ProgressBar01"        style="?android:attr/progressBarStyleHorizontal"        android:layout_width="200dp"        android:layout_height="wrap_content"        android:visibility="gone" />    <ProgressBar        android:id="@+id/ProgressBar02"        style="?android:attr/progressBarStyleLarge"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:max="100"        android:progress="50"        android:secondaryProgress="70"        android:visibility="gone" />    <Button        android:id="@+id/Button01"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="开始" /></RelativeLayout>

MainActivity.java

package com.example.processbardemo;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.Window;import android.widget.Button;import android.widget.ProgressBar;public class MainActivity extends Activity {//声明ProgressBar对象private ProgressBar xh_ProgressBar;private ProgressBar xh_ProgressBar2;private Button xh_Button;protected static final int GUI_STOP_NOTIFIER = 0x108;protected static final int GUI_THREADING_NOTIFIER = 0x109;public int intCounter = 0;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//设置窗口模式,因为需要显示进度条在标题栏requestWindowFeature(Window.FEATURE_PROGRESS);setProgressBarVisibility(true);setContentView(R.layout.activity_main);//得到ProgressBarxh_ProgressBar = (ProgressBar) findViewById(R.id.ProgressBar01);xh_ProgressBar2 = (ProgressBar) findViewById(R.id.ProgressBar02);xh_Button = (Button) findViewById(R.id.Button01);//设置进度条 不为 不确定模式xh_ProgressBar.setIndeterminate(false);xh_ProgressBar2.setIndeterminate(false);//当按钮按下时开始执行xh_Button.setOnClickListener(new Button.OnClickListener() {@Overridepublic void onClick(View v) {//设置ProgressBar为可见状态xh_ProgressBar.setVisibility(View.VISIBLE);xh_ProgressBar2.setVisibility(View.VISIBLE);//设置ProgressBar的最大值xh_ProgressBar.setMax(100);//设置ProgressBar当前值xh_ProgressBar.setProgress(0);xh_ProgressBar2.setProgress(0);//通过线程来改变ProgressBar的值new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < 10; i++) {try {//设置进度值intCounter = (i + 1) * 20;//睡眠1000毫秒Thread.sleep(1000);if (i == 4) {Message m = new Message();m.what = MainActivity.GUI_STOP_NOTIFIER;MainActivity.this.myMessageHandler.sendMessage(m);break;} else {Message m = new Message();m.what = MainActivity.GUI_THREADING_NOTIFIER;MainActivity.this.myMessageHandler.sendMessage(m);}} catch (Exception e) {e.printStackTrace();}}}}).start();}});}Handler myMessageHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {//ProgressBar已经是最大值case MainActivity.GUI_STOP_NOTIFIER:xh_ProgressBar.setVisibility(View.GONE);xh_ProgressBar2.setVisibility(View.GONE);Thread.currentThread().interrupted();break;case MainActivity.GUI_THREADING_NOTIFIER:if (!Thread.currentThread().isInterrupted()) {//改变ProgressBar的当前值xh_ProgressBar.setProgress(intCounter);xh_ProgressBar2.setProgress(intCounter);//设置标题栏中前景的一个进度条进度值setProgress(intCounter * 100);}break;}super.handleMessage(msg);}};}


0 0
原创粉丝点击