android中invalidate()的自动清屏含义以及屏幕刷新
来源:互联网 发布:淘宝号几单有一心 编辑:程序博客网 时间:2024/05/18 00:57
android中invalidate()的自动清屏含义以及屏幕刷新
对于屏幕刷新有以下集中情况可以考虑:
1.不使用多线程和双缓冲
这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在Activity中显式地调用View对象中的invalidate()方法即可。系统会自动调用 View的onDraw()方法。
2.使用多线程和不使用双缓冲
这种情况需要开启新的线程,新开的线程就不好访问View对象了。强行访问的话会报:android.view.ViewRoot$CalledFromWrongThreadException:Only the original thread that created a view hierarchy can touch its views.
这时候你需要创建一个继承了android.os.Handler的子类,并重写handleMessage(Message msg)方法。android.os.Handler是能发送和处理消息的,你需要在Activity中发出更新UI的消息,然后再你的Handler(可以使用匿名内部类)中处理消息(因为匿名内部类可以访问父类变量, 你可以直接调用View对象中的invalidate()方法 )。也就是说:在新线程创建并发送一个Message,然后再主线程中捕获、处理该消息。
3.使用多线程和双缓冲
Android中SurfaceView是View的子类,她同时也实现了双缓冲。你可以定义一个她的子类并实现SurfaceHolder.Callback接口。由于实现SurfaceHolder.Callback接口,新线程就不需要android.os.Handler帮忙了。SurfaceHolder中lockCanvas()方法可以锁定画布,绘制玩新的图像后调用unlockCanvasAndPost(canvas)解锁(显示),还是比较方便得。
0 0
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android中invalidate()的自动清屏含义以及屏幕刷新
- android 中invalidate()的自动清屏含义以及屏幕刷新
- 安卓开发——invalidate()自动清屏和屏幕刷新
- android中刷新Invalidate和postInvalidate的区别
- Android中View绘制流程以及invalidate()
- Android中View绘制流程以及invalidate()
- view, surfaceView, invalidate, postInvalidate, 刷新屏幕
- 找出500以内相加等于500的连续整数
- 第四周项目一三角形类的构造函数(2)
- 第三周项目4——指向学生类的指针
- 存储性 XSS
- React Native使用初探 --------- OpenGL应用
- android中invalidate()的自动清屏含义以及屏幕刷新
- NOJ 网络赛 L题 送花
- 1.9
- maven开发环境的配置
- 【LeetCode】Search in Rotated Sorted Array II 解题报告
- Android NDK开发(一)环境搭建及运行示例
- 游戏中的随机间隔
- 【深入浅出IOS开发】UITabBarController和UINavigationController混合使用
- linux main.c中的初始化