
Android日记
liuwons
混,也是一种追求
展开
-
Android线程通信
在第一次启动一个Android程序时,Android会自动创建一个称为主线程的线程,即UI线程。该线程主要是负责控制UI界面的显示、更新和控件交互。例如,在屏幕上按下一个按钮后,UI线程会把这个事件分发给被按按钮,接着按钮设置它自身为被按下状态并向事件队列发送一个无效请求。UI线程会把这个请求移出事件队列并通知按钮在屏幕上重新绘制自身。 在开发Android应用程序时必须遵守单线程模型的原则原创 2012-12-05 18:24:45 · 18974 阅读 · 0 评论 -
SurfaceView绘制触摸轨迹时的闪烁问题
今天在处理触屏轨迹的绘制时,用到了SurfaceView,建立Path对象,在点击时开始设置Path对象,滑动过程中记录触摸点,离开后重新设置Path对象,因不能阻塞主线程,所以新建了一个子线程来不断刷新屏幕,也就是将path不断绘制。但是,接着就出现了一个问题:屏幕中每条轨迹线的终点都会有一小段直线段不断闪烁。猜测可能是lockCanvas()获取的对象区域不一样,就试着使用了lockCanva原创 2012-12-05 18:24:48 · 20588 阅读 · 1 评论 -
SurfaceView闪烁问题的根源-双缓存机制
上篇中提到了SurfaceView绘制触摸轨迹时出现的闪烁问题,这里就说明下产生这种困扰的根源——双缓存机制。 Android中的SurfaceView在更新视图时,为了提高更新效率,加强用户体验,采用了双缓存机制。 Android的官方说明有:Note: On each pass you retrieve the Canvas from the SurfaceHolder,原创 2012-12-05 18:24:50 · 29135 阅读 · 2 评论 -
SurfaceView绘制触摸轨迹出现闪烁的解决方法一
这里利用两个path保留对上一个canvas绘制内容,代码如下:package com.tobacco.touchdraw;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android原创 2012-12-05 18:24:52 · 20655 阅读 · 0 评论 -
SurfaceView绘制触摸轨迹闪烁的解决方法二
这里利用一个Path对象保存所有的触摸轨迹:package com.tobacco.touchdraw;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.原创 2012-12-05 18:24:54 · 20194 阅读 · 0 评论 -
SurfaceView绘制触摸轨迹闪烁问题的最终解决方案
由于SurfaceView使用双缓存机制,两张画布轮流显示到屏幕上。那么,要存储触摸轨迹并避免两张画布内容不一致造成的闪烁问题,完全可以利用保存绘制过程并不断重新绘制的方法解决闪烁,而且这样还顺带解决了多次试验中偶尔出现的因为moveTo()函数不能读取到参数执行默认设置(参数设为上次的触摸点)而出现的断线连接闪烁问题,详细代码如下:package com.tobacco.touchdraw;原创 2012-12-05 18:24:56 · 21529 阅读 · 1 评论 -
vs2010下QString::toStdString()崩溃
vs2010下ReleaQString::toStdString()原创 2014-07-09 16:25:25 · 22890 阅读 · 0 评论