Android开发十:Handler学习记录


这次学习了Handler,这篇博客只为记录只用。

一、使用Handler每隔五秒钟弹出一个Toast消息

布局两个button

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <Button
8 android:id="@+id/btnstart"
9 android:layout_width="fill_parent"
10 android:layout_height="wrap_content"
11 android:text="Start Handler" />
12
13 <Button
14 android:id="@+id/btnend"
15 android:layout_width="fill_parent"
16 android:layout_height="wrap_content"
17 android:text="EndHandler" />
18
19 </LinearLayout>

过程实现

 1 package com.yyj.Handler1;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.os.Handler;
6 import android.view.View;
7 import android.view.View.OnClickListener;
8 import android.widget.Button;
9 import android.widget.Toast;
10
11 public class Handler1Activity extends Activity {
12 /** Called when the activity is first created. */
13 Handler handler=new Handler();
14 @Override
15 public void onCreate(Bundle savedInstanceState) {
16 super.onCreate(savedInstanceState);
17 setContentView(R.layout.main);
18
19 Button buttonstart=(Button)findViewById(R.id.btnstart);
20 Button buttonend=(Button)findViewById(R.id.btnend);
21
22 buttonstart.setOnClickListener(new OnClickListener() {
23
24 @Override
25 public void onClick(View v) {
26 handler.post(newthread);
27 }
28 });
29 buttonend.setOnClickListener(new OnClickListener() {
30
31 @Override
32 public void onClick(View v) {
33 handler.removeCallbacks(newthread);
34 }
35 });
36 }
37 Runnable newthread =new Runnable(){
38
39 @Override
40 public void run() {
41 Toast.makeText(Handler1Activity.this, "By newthread!", Toast.LENGTH_SHORT).show();
42 handler.postDelayed(newthread, 5000);
43 }
44 };
45 }

二、使用Handler控制进度条

布局一个水平进度条,和一个按钮

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="fill_parent"
4 android:layout_height="fill_parent"
5 android:orientation="vertical" >
6
7 <ProgressBar
8 android:id="@+id/progressBar"
9 style="?android:attr/progressBarStyleHorizontal"
10 android:layout_width="200dp"
11 android:progress="0"
12 android:layout_height="wrap_content"
13 android:visibility="gone" />
14
15 <Button
16 android:id="@+id/button1"
17 android:layout_width="wrap_content"
18 android:layout_height="wrap_content"
19 android:text="Start" />
20
21 </LinearLayout>

功能实现

package com.yyj.Hander2;

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;

public class Hander2Activity extends Activity {
    /** Called when the activity is first created. */
	Button start;
	ProgressBar progressBar;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        start=(Button)findViewById(R.id.button1);
        progressBar=(ProgressBar)findViewById(R.id.progressBar);
        
        start.setOnClickListener(new OnClickListener() {
			
			public void onClick(View v) {
				progressBar.setVisibility(View.VISIBLE);
				handler.post(newthread);
			}
		});
    }
    Handler handler=new Handler(){

		@Override
		public void handleMessage(Message msg) {
			progressBar.setProgress(msg.arg1);
			handler.post(newthread);
			super.handleMessage(msg);
		}
    	
    };
    Runnable newthread=new Runnable() {
		int i=0;
		public void run() {
			i+=10;
			
			Message message=handler.obtainMessage();
			//还有可以用setData来实现
			message.arg1=i;
			
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			handler.sendMessage(message);
			if (i==100) {
				handler.removeCallbacks(newthread);
			}
		}
	};
}

 因为这个学的感觉有些乱,所以不做讲解只做记录、查询之用





免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM