Handler是什么呢:是Android提供用来更新UI的一套机制,也是一套消息处理的机制,我们可以用它发送消息,也可以通过它处理消息。


Android在设计之初,就封装了一套消息的创建、传递、处理机制。如果不遵循这样的机制,就没有办法更新UI信息的,就会抛出异常。


Handler的使用:

package com.example.handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    //第一步:声明组件    private TextView tv_handler;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv_handler = (TextView) findViewById(R.id.tv_handler);        //创建一个新的线程        new Thread(){            public void run(){                try {                    Thread.sleep(1000);                    tv_handler.setText("更新线程");                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }.start();    }}

默认情况下,Android是不允许在其他线程里面更新UI的,所以会报错:
Android:Handler事件处理机制_第1张图片
这时,我们就需要Handler机制更新UI:

package com.example.handler;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    //第一步:声明组件    private TextView tv_handler;    //创建一个Handler机制    private Handler handler = new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv_handler = (TextView) findViewById(R.id.tv_handler);        //创建一个新的线程        new Thread(){            public void run(){                try {                    Thread.sleep(1000);                    //简单实现Handler的Post方法                    handler.post(new Runnable() {                        @Override                        public void run() {                            tv_handler.setText("更新线程");                        }                    });                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }.start();    }}

这样就完成了更新UI的操作:
Android:Handler事件处理机制_第2张图片


实现Android项目中图片的简单轮播效果:
首先需要添加一个ImageView,这很简单,不多赘述。

package com.example.handler;import android.os.Handler;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ImageView;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    //第一步:声明组件    private TextView tv_handler;    //创建一个Handler机制    private Handler handler = new Handler();    private ImageView iv_handler;    //创建一个图片的数组    private int images[] = {R.drawable.ic_beenhere_black_48dp, R.drawable.ic_directions_ferry_black_36dp, R.drawable.ic_flight_black_48dp};    //创建一个索引    private int index;    private MyRunnable myRunnable = new MyRunnable();    class MyRunnable implements Runnable {        @Override        public void run() {            index++;            index = index % 3;            iv_handler.setImageResource(images[index]);            handler.postDelayed(myRunnable, 1000);        }    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv_handler = (TextView) findViewById(R.id.tv_handler);        iv_handler = (ImageView) findViewById(R.id.iv_handler);        handler.postDelayed(myRunnable,1000);        //随便找三张图片,放到drawable中        /*创建一个新的线程        new Thread(){            public void run(){                try {                    Thread.sleep(1000);                    //简单实现Handler的Post方法                    handler.post(new Runnable() {                        @Override                        public void run() {                            tv_handler.setText("更新UI");                        }                    });                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }.start();*/    }}

利用Handler实现图片轮播,就实现了。

更多相关文章

  1. android IPC 通讯机制
  2. Android中线程的使用方法

随机推荐

  1. Android异步1:Thread+Handler更新UI
  2. Android入门2—创建AVD
  3. Android命令monkey测试
  4. Android程序开发0基础教程(一)
  5. android模拟器管理和使用SD卡
  6. EditText设置更多文字为省略号
  7. Android Java调用ffmpeg命令
  8. android 播放默认铃声和手机振动
  9. Android自适应屏幕大小和layout布局
  10. Android世界:android 线程池