一、何时需要使用安卓线程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提高流畅度
在安卓中主界面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提高流畅度