写了一个控件,就是一个圆形,然后里面有波浪,用来展示进度,如下图: https://github.com/liguobing/pic/blob/master/222.png 里面的波浪是使用一个属性动画,循环播放,然后调用 postInvalidateOnAnimation() 方法来实现的
但是发现一个问题,在查看 Profiler 的时候,发现内存占用会缓慢的增长,以大概每秒 0.1M 、0.2M 的速度增加,把这个自定义 View 注释掉,就不增长了,所以问题肯定出现在这里。
我在 onDraw 方法中把所有新建对象的语句都优化掉了,可这个问题还是存在。
这究竟是因为啥呢?
实在找不着头绪,所以我就想着不去继承 View,而是使用 SurfaceView,然后又出现了新的问题:
页面中有一个抽屉菜单 DrawerLayout,当抽屉菜单打开的时候,抽屉将布局向右推开,布局中的控件变暗,但是唯独 SurfaceView 没有变暗,如下图:
https://github.com/liguobing/pic/blob/master/111.png
搞懵了,这又是什么情况?有了解的大神吗?百度谷歌一大圈了,也没找出个所以然来,stackoverflow 上提问了,也没人回答,是真的烦。。。
1
kile 2019-10-16 12:42:52 +08:00
SurfaceView 是用 Zorder 排序的,他默认在宿主 Window 的后面,SurfaceView 通过在 Window 上面“挖洞”(设置透明区域)进行显示
|