美文网首页Android自定义View
Android--Canvas绘制优化

Android--Canvas绘制优化

作者: 特大碗牛肉面 | 来源:发表于2018-09-10 09:56 被阅读90次

onDraw( ) 是同步方法 ,如果同时绘制的数据量太大就会卡顿 (例如100万个坐标点);

优化方法如下:

  1. 数据量太大的时候,可以考虑在UI效果和流畅度上面平衡一下;
    例如:
    A. setAntiAlias( ) 抗锯齿功能,会消耗较大资源,绘制图形速度会变慢;
    B. setDither(boolean dither); setFilterBitmap(boolean filter) 等...
    显示的效果越好 ,效率越差....

2.异步加载, 数据量大但是你界面也不能卡啊 ,加载到数据后用线程池维护一下,创建线程也是个耗资源的事情;

3.onDraw() 方法里面尽量不要用for循环 ,onDraw()是同步的,主线程的, for循环会导致卡顿,可以用path去装载要绘制的点,然后drawPath()来代替for循环,如果自定义view是随手势滑动,那么也就是会频繁刷新界面、频繁调用onDraw(), 如果是频繁刷新onDraw(),那么使用drawPath()也会比在onDraw()里面使用for循环绘制效率高;

4.用Canvas生成bitmap , 再到这个bitmap上面drawPath( ), 最后将这个bitmap传递给你自己的view的onDraw( )方法上面去执行drawBitmap( ) , 这样相当于主线程上只绘制一张图而已;

5.用Canvas生成的bitmap,每次执行canvas.drawXXX() 都会生成新的bitmap, 绘制增量数据的时候只需要再次调用canvas.drawXXX(),然后就可以生成新的bitmap,这时候将bitmap传递给你自己的view的onDraw( )就可以生成新的效果;

6.RGB_565 替换 ARGB_8888 , 先创造个小的bitmap , drawBitmap的时候将bitmap拉大;例如:屏幕是10241024, 如果使用Bitmap.createBitmap(Width(), Height() , Bitmap.Config.RGB_565);那么bitmap的大小是: (10241024*2) / (1024 *1024 )= 2M;
将bitmap宽高缩小, matrix.setScale(float sx, float sy) 放大;

 public void drawBitmap(@NonNull Bitmap bitmap, @NonNull Matrix matrix, @Nullable Paint paint) {
        super.drawBitmap(bitmap, matrix, paint);
    }

7.避免多次遍历, 遍历的时候尽量少换算;

8.终极大招: 拿到数据后用将数据解析成byte[] 二进制流, 固定BMP文件头和BMP文件信息头,将二进制流转成BMP图片, 最后将这张图片设置为底图;

9.最后销毁的时候记得将所有的资源回收一下就欧了;

参考博文:https://blog.csdn.net/wulazula/article/details/51337497

相关文章

  • Android--Canvas绘制优化

    onDraw( ) 是同步方法 ,如果同时绘制的数据量太大就会卡顿 (例如100万个坐标点); 优化方法如下: 数...

  • android优化

    布局优化 避免过度绘制 绘制优化 内存泄漏优化 响应速度优化 ListView/RecycleView及Bitma...

  • Android--canvas绘制、完善画笔功能

    接着上一篇文章的学习我们来绘制一下画板的内容: 首先 创建一个类管理绘制的画板 这里不再赘述 注意!我们这里要搞...

  • android性能优化全方面解析(二)

    补昨天UI优化后半段,前半段点开主页就有啦 一 绘制优化 那么什么是绘制优化?绘制优化主要是指View的Ondra...

  • 性能优化

    Android UI性能优化实战 识别绘制中的性能问题性能优化(二) UI 绘制优化 通过Hierarchy Vi...

  • Android UI渲染优化

    Android UI渲染优化 1. 过度绘制优化 什么是过度绘制? Overdraw(过度绘制)描述的是屏幕上的某...

  • (十五)Android性能优化

    15.1 Android的性能优化方法 15.1.1 布局优化 15.1.2 绘制优化 15.1.3 内存泄露优化...

  • Android进阶之性能优化

    一、性能优化分类 布局优化 绘制优化 内存泄漏优化 响应速度优化 ListView优化 Bitmap优化 线程优化...

  • Android开发艺术探索之性能优化笔记

    Android性能优化 一,优化内容 布局优化、绘制优化、内存泄漏优化、响应速度优化、ListView优化、Bit...

  • Android性能优化

    Android性能优化包括布局优化、绘制优化、内存优化、线程优化、响应速度优化、Bitmap优化和ListView...

网友评论

本文标题:Android--Canvas绘制优化

本文链接:https://www.haomeiwen.com/subject/onacgftx.html