消息机制3

来源:互联网 发布:微信小说网站源码 编辑:程序博客网 时间:2024/04/19 06:38

消息机制

main.xml文件代码。

<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="${relativePackage}.${activityClass}" >        <ProgressBar        android:id="@+id/progressBar1"        style="?android:attr/progressBarStyle"        android:visibility="gone"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <ProgressBar        android:id="@+id/progressBar2"        style="?android:attr/progressBarStyleHorizontal"        android:visibility="gone"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <ProgressBar        android:id="@+id/progressBar3"        style="?android:attr/progressBarStyleLarge"        android:visibility="gone"        android:layout_width="match_parent"        android:layout_height="wrap_content" />    <ProgressBar        android:id="@+id/progressBar4"        style="?android:attr/progressBarStyleSmall"        android:layout_width="match_parent"        android:visibility="gone"//让进度条在一开始的时候处于隐藏状态        android:layout_height="wrap_content" />    <ProgressBar        android:id="@+id/progressBar5"        style="?android:attr/progressBarStyleSmallInverse"        android:layout_width="match_parent"        android:visibility="gone"        android:layout_height="wrap_content" />    <Button         android:id="@+id/but"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="显示进度条"        /></LinearLayout>
下面先对进度条属性进行以下说明:

1、style="?android:attr/progressBarStyleSmall"代表小号圆形进度条。

2、style="?android:attr/progressBarStyleLarge"代表超大号圆形进度条。

3、style="?android:attr/progressBarStyleHorizontal"代表长形进度条。


MainActivity.java文件内容。

package com.example.inforcontact3;import android.app.Activity;import android.content.res.Resources.Theme;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ProgressBar;public class MainActivity extends Activity {//定义事件处理标示public static final int CONTINUE = 1;public static final int STOP = 2;//定义进度条组件private ProgressBar bar1, bar2, bar3, bar4, bar5;private Button but;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);bar1 = (ProgressBar)findViewById(R.id.progressBar1);bar2 = (ProgressBar)findViewById(R.id.progressBar2);bar3 = (ProgressBar)findViewById(R.id.progressBar3);bar4 = (ProgressBar)findViewById(R.id.progressBar4);bar5 = (ProgressBar)findViewById(R.id.progressBar5);but = (Button)findViewById(R.id.but);but.setOnClickListener(new OnClickListenerImpl());}private class OnClickListenerImpl implements OnClickListener {@Overridepublic void onClick(View v) {//显示进度条bar1.setVisibility(View.VISIBLE);bar2.setVisibility(View.VISIBLE);bar3.setVisibility(View.VISIBLE);bar4.setVisibility(View.VISIBLE);bar5.setVisibility(View.VISIBLE);//设置进度条的长度bar1.setMax(120);bar2.setMax(120);//设置进度条开始的位置bar1.setProgress(0);bar2.setProgress(0);//创建一个子线程new Thread(new Runnable() {@Overridepublic void run() {int count = 0;for (int i = 0; i < 10; i++) {//让进度快一点count = (i + 1) * 20;try {//设置进度条增加的时间间隔Thread.sleep(200);} catch (InterruptedException e) {e.printStackTrace();}if (i == 6) {//i == 6时隐藏进度条Message msg = new Message();msg.what = STOP;//立即发送信息,并且调用handleMessage()方法处理信息MessageHandler.sendMessage(msg);} else {Message msg = new Message();msg.what = CONTINUE;msg.arg1 = count;MessageHandler.sendMessage(msg);}}}}).start();//开启线程}}private Handler MessageHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {switch (msg.what) {case STOP:bar1.setVisibility(View.GONE);bar2.setVisibility(View.GONE);bar3.setVisibility(View.GONE);bar4.setVisibility(View.GONE);bar5.setVisibility(View.GONE);//线程中断Thread.currentThread().isInterrupted();break;case CONTINUE://表示当前线程没有中断if (!Thread.currentThread().isInterrupted()) {bar1.setProgress(msg.arg1);bar2.setProgress(msg.arg1);}break;}}};}




1 0
原创粉丝点击