易妖游戏网
您的当前位置:首页android开发教程画图避免屏幕闪烁

android开发教程画图避免屏幕闪烁

来源:易妖游戏网
本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。

android画图避免屏幕闪烁

在处理一些复杂的界面时,往往要用view,SurfaceView来自己处理画图。比如用SurfaceView来贴两张图,并控制他们左右平移,基本代码如下: Java代码

 Canvasc=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代码

 finalBitmapmemBm=Bitmap.createBitmap(screenWidth,screenHeight,Bitmap.Config.RGB_565);



 finalCanvasc=newCanvas(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);//第二张图画在第一张旁边 

 Canvasrender=null;

 try{

 render=mSurfaceHolder.lockCanvas();  if(render!=null){

 render.drawBitmap(memBm,0,0,null);  }

本文由麦可网http://www.microoh.com/ 收集整理,转载请注明出处。

 }finally{     

if(render!=null)

mSurfaceHolder.unlockCanvasAndPost(render); }

memBm.recycle();//记得回收内存位图

这样处理后,view刷新将变得平滑,眼睛看着舒服多了。

因篇幅问题不能全部显示,请点此查看更多更全内容