android surfaceview里onTouchEvent 画图闪屏是怎么回事?
16lz
2021-01-22
下面是主要代码:
publicclassGameSurfaceviewextendsSurfaceViewimplements
SurfaceHolder.Callback{
...........................................
publicbooleanonTouchEvent(MotionEventevent){
if(event.getAction()==MotionEvent.ACTION_DOWN){
intx=getIndex(event.getX());
inty=getIndex(event.getY());
Canvascanvas=holder.lockCanvas();
canvas.drawBitmap(blackchess,x,y,paint);
holder.unlockCanvasAndPost(canvas);
}
returnsuper.onTouchEvent(event);
}
...............................
}
点击屏幕时总是会黑屏当再次点击时才会回复正常然后再点击又会黑屏............
Canvascanvas=holder.lockCanvas();
canvas.drawBitmap(blackchess,x,y,paint);
holder.unlockCanvasAndPost(canvas);
把画图抽取个draw方法,放到线程中,你的是每点一次刷一次屏幕,如果放到线程中就不停的刷,就不会这样了!
publicclassGameSurfaceviewextendsSurfaceViewimplements
SurfaceHolder.Callback{
...........................................
publicbooleanonTouchEvent(MotionEventevent){
if(event.getAction()==MotionEvent.ACTION_DOWN){
intx=getIndex(event.getX());
inty=getIndex(event.getY());
Canvascanvas=holder.lockCanvas();
canvas.drawBitmap(blackchess,x,y,paint);
holder.unlockCanvasAndPost(canvas);
}
returnsuper.onTouchEvent(event);
}
...............................
}
点击屏幕时总是会黑屏当再次点击时才会回复正常然后再点击又会黑屏............
3 个解决方案
#1
Canvascanvas=holder.lockCanvas();
canvas.drawBitmap(blackchess,x,y,paint);
holder.unlockCanvasAndPost(canvas);
把画图抽取个draw方法,放到线程中,你的是每点一次刷一次屏幕,如果放到线程中就不停的刷,就不会这样了!
更多相关文章
- Android学习笔记(三一):线程:Message和Runnable
- android多线程数据存储 - ThreadLocal的工作原理
- java基础---多线程---java内存模型
- java 使用Callable和Future返回线程执行的结果
- Java多线程聊天对话框
- Android 多线程下载文件原理霸气解析介绍 (完结版)-----greendao
- Java多线程六:线程优先级和yield()让步函数
- java多线程爬虫
- javafx 和netty 混合使用出现线程不一致问题,求大神指点