canvas教程

Android画图避免屏幕闪烁

字号+ 作者:H5之家 来源:H5之家 2015-10-05 14:09 我要评论( )

大家看见这个标题就应该明白了,我们这个实例就是来说怎么才能让画图在屏幕上闪烁,我就遇到过这种情况,当闪烁的时候,看了一会眼睛就受不了,所以大家在开发的时候也会遇到这种情况,那么我们怎么样才能避免那,那就来看看我们这个实例,大家就应该明白了


       大家看见这个标题就应该明白了,我们这个实例就是来说怎么才能让画图在屏幕上闪烁,我就遇到过这种情况,当闪烁的时候,看了一会眼睛就受不了,所以大家在开发的时候也会遇到这种情况,那么我们怎么样才能避免那,那就来看看我们这个实例,大家就应该明白了。在处理一些复杂的界面时,往往要用view,SurfaceView来自己处理画图。比如用SurfaceView来贴两张图,并控制他们左右平移,基本代码如下:

Java代码:
Canvas c = null;

try {
c = mSurfaceHolder.lockCanvas(null);
if (c != null) {
c.setDrawFilter(mFilter);
c.drawRect(0, 0, c.getWidth(), c.getHeight(), mBGPaint); //画背景
c.drawBitmap(bm1, 0, 0, null);
c.drawBitmap(bm2,bm1.getWidth(), 0, null); //第二张图画在第一张旁边
}
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}

      控制它左右平移时,会发现屏幕非常闪烁,眼睛看着会非常累。研究以后发现,这是因为两张图是依次一张一张贴到屏幕上的,如果刷新频率高的话,会使屏幕非常的闪烁。

       解决的办法其实非常简单,想起windows下开发解决画图闪烁的办法,先把要画的图先画好放在一张大的内存位图上,然后一下贴到屏幕。android其实也是一样的,上面的问题解决方法如下:

Java代码:
final Bitmap memBm = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.RGB_565);
final Canvas c = new Canvas(memBm);
c.setDrawFilter(mFilter);
c.drawRect(0, 0, c.getWidth(), c.getHeight(), mBGPaint); //画背景
c.drawBitmap(bm1, 0, 0, null);
c.drawBitmap(bm2,bm1.getWidth(), 0, null); //第二张图画在第一张旁边
Canvas render = null;
try {
render = mSurfaceHolder.lockCanvas();
if (render != null) {
render.drawBitmap(memBm, 0, 0, null);
}
} finally {
if (render != null)
mSurfaceHolder.unlockCanvasAndPost(render);
}
memBm.recycle(); //记得回收内存位图

你有遇到过玩游戏时切换出来查看攻略,不幸导致游戏崩溃的情况吗?下载攻略秘册,边玩游戏边用手机看攻略,轻松愉快,大家都在用。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Canvas与ValueAnimator

    Canvas与ValueAnimator

    2017-04-28 18:00

  • Android Bitmap和Canvas学习笔记(转)

    Android Bitmap和Canvas学习笔记(转)

    2017-04-28 17:00

  • HTML5 canvas 作画板画图 可以做电子白板

    HTML5 canvas 作画板画图 可以做电子白板

    2017-04-27 12:02

  • 21天学习android开发教程之SurfaceView与多线程的混搭

    21天学习android开发教程之SurfaceView与多线程的混搭

    2017-04-27 12:00

网友点评
)