在android应用开发过程中,常常涉及到需要自己来重写一个view。一般情况下,只需要重写view中的onDraw方法就能够实现绘制的工作,但是有的时候,涉及到多层且动态的效果的话,不加处理而直接在onDraw中直接绘制的开销会十分大,这种情况下,应用缓存技术就十分有必要了。
缓存技术的原理其实十分简单,就是事先将需要展现的界面全部绘制完成,然后在onDraw里面直接将缓存好的界面展示出来就可以了, 不需要涉及太多的开销。
在这里,可以采用bitmap做为缓存的介质,需要事先创建对应大小的bitmap对象,然后在其上面套个Canvas对象,之后直接在Canvas上面绘制,绘制完成后,bitmap中存的就是最终需要显示的界面了。
下面就是制作缓存的过程,一般只在自定义view创建的时候运行一次就可以了,得到缓存holder
//创建缓存图片
Bitmap bitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
//将缓存图片设置为画布
Canvas canvas = new Canvas(bitmap);
//canvas进行绘制
......
//绘制完成之后,记录下缓存
holder = bitmap;
调用的时候,只需要在onDraw方法里面,直接将holder绘制出来就可以了。
canvas.drawBitmap(holder,x,y,new Paint());