码迷,mamicode.com
首页 > 其他好文 > 详细

消息机制3

时间:2015-08-10 22:14:40      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:

消息机制

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;
	@Override
	protected 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 {

		@Override
		public 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() {
				@Override
				public 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() {

		@Override
		public 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;
			}
		}
	};
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

消息机制3

标签:

原文地址:http://blog.csdn.net/leng1235/article/details/47404807

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!