关于Android调用invalidate()之后不能及时调用ondraw()的解决办法
来源:互联网 发布:qq视频播放器 mac 编辑:程序博客网 时间:2024/04/28 23:21
关于invalidate的解释:当调用线程处于空闲状态时,会调用onDraw,刷新界面,也就是说,该函数仅是标记当前界面过期,并不直接负责刷新界面;这样的结果就是没能及时的刷新界面,导致出现的效果不是你所想要的。
那么怎么实时的刷新view呢?看到SurfaceView能实现实时刷新,代码结构是
public class MapView extends SurfaceView implements Callback {
private static SurfaceHolder holder=null; //控制对象
public MapView(Context context, AttributeSet attr) {
super(context, attr);
// TODO Auto-generated constructor stub
holder=getHolder();
holder.addCallback(this);
}
protected static void Paints(Canvas canvas) {
//这里的代码和处理OnDraw()时的一样
}
public static void RePaint()
{
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
Paints(canvas);
} finally{
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
这样写好之后,只要在以前调用invalidate()的地方调用RePaint()就可以实现Android View的实时刷新了。
- 关于Android调用invalidate()之后不能及时调用ondraw()的解决办法
- invalidate()方法不调用onDraw()方法的原因及解决办法
- OnPaint OnDraw OnPrint 的区别以及invalidate的调用过程
- 刷新View的方法invalidate()手动调用onDraw()
- 刷新View的方法invalidate()手动调用onDraw()
- iOS中NSTimer的invalidate调用之后
- android的onDraw()调用时间
- ViewGroup不调用onDraw的解决办法
- android开发 View的onDraw函数调用
- 自定义view的时候,执行了invalidate()方法后 onDraw()不被调用的解决方法
- 自定义控件invalidate()方法未成功调用onDraw()
- view.draw()以及调用invalidate()没有触发onDraw()
- AppCode下的文件为什么不能及时调用了。
- 关于CScrollView中SetScrollSizes导致的OnDraw的无限调用
- 关于UpdateAllViews以及调用OnDraw函数的一些问题
- 关于View的onMeasure()、onSizeChanged()、onLayout()、onDraw()调用顺序
- 关于View的onMeasure()、onSizeChanged()、onLayout()、onDraw()调用顺序
- CView中OnDraw( )的调用
- Java反射的基础使用
- OpenCV学习笔记(三)—— OpenCV编程起点
- 解决Adb connection Error:远程主机强迫关闭了一个现有的连接
- Oracle笔记(十六) 数据库设计范式
- 1004
- 关于Android调用invalidate()之后不能及时调用ondraw()的解决办法
- 《Java JDK8学习笔记》读书笔记(4)
- 141. Linked List Cycle
- Maven常见错误
- 对称矩阵的缩放存储
- Flaskweb实战开发的总结(前6章)
- Navicat for oracle 提示 cannot load OCI DLL,126 193的解决方法
- C++冒泡排序
- C#枚举类型