Handler、SurfaceHolder

一、何时需要使用安卓线程Handler、SurfaceHolder
在安卓中主界面activity就是一个线程,在使用线程的图像需要改变主线程界面时,需要通过Handler或SurfaceHolder传递改变的图像


二、Handler的使用
1.定义MyHandler继承Handler类,并且重写handleMessage(Message msg)方法。在方法体内对改变的图像进行操作,别忘了操作后imageview.setImageBitmap(bitmap);   // 用缓冲画在图片上
2.在线程的run()方法中创建Message对象,并将改变的值传入Message对象,并用Handler的sendMessage(Message m)方法发送给处理器


三、SurfaceHolder的使用
    在使用SurfaceHolder前,需要了解什么是回调。
android中预先写好的函数,在使用的时候调用,监听器也是一种回调,在触发事件源时启动,在Callback接口中预定义了三个方法,分别以对应不同状态,在不同状态是调用(纯个人理解,欢迎交流)
1.在布局文件中的画布改为SurfaceView
2. SurfaceView sf = (SurfaceView)this.findViewById(R.id.imageView1); //获取SurfaceView对象
3. SurfaceHolder sfh = sf.getHolder();      //你用SurfaceView对象获得SurfaceHolder对象
4. sfh.addCallback(new MyCallback(sfh));   // 加入回调方法
5. 定义类MyCallback实现Callback接口,在surfaceCreated(SurfaceHolder holder)方法中启动线程
6. 在线程run方法中改变图像的参数值,使之变化。
            canvas = sfh.lockCanvas();              // 锁定画布
   canvas.drawCircle(x++, y++, 10, mpaint);//改变图像
           sfh.unlockCanvasAndPost(canvas);       //解锁画布,将改变的值画在SurfaceView上


四、Handler、SurfaceHolder的区别
Handler:View绘制工作都交给主线程执行
SurfaceHolder:SurfaceView中通过另外一个线程对界面进行绘制
在一般的绘制使用Handler、SurfaceHolder没有太大区别,在游戏界面中对界面进行实时改变的可用SurfaceHolder提高流畅度

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值