clipChildren与canvas的关系,导致有background属性时会遮住
来源:互联网 发布:ubuntu调出终端快捷键 编辑:程序博客网 时间:2024/06/09 14:41
费了好大的力气才把clipChildren属性为false时,当view有background属性时会遮住的问题解决掉,在这个问题解决前,还有个也是关于clipChildren属性的问题:clipChildren属性无效的解决方法,不过这个问题还好,没费多大劲,当我解决了第一个问题后,我想这回应该可以了吧,就在手机上跑了一下,突然发现有background属性和没background属性的显示有点不一样啊!没background属性的view显示在最下层,自己画的显示在中间层,有background属性的view显示在上层,当时我就纳闷了,为啥会这样???然后我就各种找原因分析,然后在网上找到了这个:Canvas的saveLayer理解,里面有一句话引起了我的注意:Layer入栈时,后续的DrawXXX操作都发生在这个Layer上,而Layer退栈时,就会把本层绘制的图像“绘制”到上层或是Canvas上,然后我就瞬间明白了,原来viewGroup在draw的时,就是一层一层的layer画在了canvers上面,因为我的view先画了,所以后面的就覆盖在了上面,于是我在网上找到了这个:getChildDrawingOrder属性的理解,就解决了这个问题。思路是如果当前draw的view是我自定义的view,那么就放到后面画,这样就在最上层啦,解决代码如下:
private int[] mDrawViews;@Overrideprotected int getChildDrawingOrder(int childCount, int i) {if(i==0){mDrawViews=new int[childCount];for(int k=0;k<childCount;k++){mDrawViews[k]=k;}}if(mDrawViews[i]==i&&(getChildAt(mDrawViews[i]) instanceof ShadowDMLayout)){for(int j=childCount-1;j>i;j--){if(!(getChildAt(j) instanceof ShadowDMLayout)){mDrawViews[i]=j;mDrawViews[j]=i;break;}}}return mDrawViews[i];}
0 0
- clipChildren与canvas的关系,导致有background属性时会遮住
- Android的clipChildren属性
- clipChildren属性的使用
- 神奇的android:clipChildren属性
- 神奇的android:clipChildren属性
- 神奇的android:clipChildren属性
- 神奇的android:clipChildren属性
- clipChildren属性无效的解决方法
- Android的android:clipChildren属性
- 神奇的android:clipChildren属性
- 神奇的android:clipChildren属性
- android:clipChildren属性的用法
- clipChildren属性
- 【Android】神奇的android:clipChildren属性
- 【Android】神奇的android:clipChildren属性
- 【Android】神奇的android:clipChildren属性
- 【Android】神奇的android:clipChildren属性
- 【Android】神奇的android:clipChildren属性
- BufferedReader and BufferedWriter基本用法。
- WPF 获取 ListView DataTemplate 中控件值
- 直接拿来用!十大Material Design开源项目
- Android开发总结笔记 AsyncTask 5-2
- Enum枚举类型
- clipChildren与canvas的关系,导致有background属性时会遮住
- 我的MYSQL学习心得(十三) 权限管理
- Sublime Text2安装Package Control和插件
- QT xml转ini的实现(从C#转到QT)
- java集合-List
- ios中使用自己添加的字体
- 在新窗口打开链接
- activity 任务栈
- ajax格式