今天在写一个自定义view时,加了个ScrollView包裹,发现只要已出现我写的自定义view,此时界面就会异常卡顿。

认真看了一下onDraw方法,发现里面进行了过多的绘制。

问题表象原因

在onDraw中绘制的内容过多,具体原因还未研究



解决方法

将onDraw中绘制的内容提取出来,画到一个bitmap中,然后在onDraw中只绘制这个bitmap

使用一个方法来处理出bitmap,包含如下代码

Bitmap bit= Bitmap.createBitmap(viewPxSize, viewPxSize, Bitmap.Config.ARGB_8888);
  Canvas c= new Canvas(bit);
  c.drawXXX
  postInvalidate();

此时操作我们自己new出来的c,既可以实现绘图到bit中。
然后在onDraw中将bit绘制到onDraw方法的参数canvas中。

主要思想就是这样,不贴代码了