圆弧形ListView(CircleList)
来源:互联网 发布:手机免费下载电影软件 编辑:程序博客网 时间:2024/05/18 14:22
代码 : https://github.com/dkmeteor/CircleList
角度/缩放比 可调
angle调至 180度 为半圆形
-------------------
主要效果为Canvas和Matrix实现的效果,具体看源码就行了。
Java代码
这个地方单独解释一下,反射修改了ListView的一个私有成员变量mGroupFlags,该成员变量 最后4位 对应
FLAG_CLIP_CHILDREN , FLAG_CLIP_TO_PADDING , FLAG_INVALIDATE_REQUIRED 和 FLAG_RUN_ANIMATION
0xfffff8 末尾对应 1000
对应以上4个状态
在该状态下,ViewGroup dispatchDraw 的时候 不会调用 canvas.clipRect
这样ChildView 可以不受bounds限制绘制在ViewGroup任意位置.
具体流程在ViewGroup源码dispatchDraw部分
不知有没有更好的实现方式,反射修改私有成员变量总是不太好的....
角度/缩放比 可调
angle调至 180度 为半圆形
-------------------
主要效果为Canvas和Matrix实现的效果,具体看源码就行了。
Java代码
- public void changeGroupFlag(Object obj) throws Exception
- {
- Field[] f = obj.getClass().getSuperclass().getSuperclass().getSuperclass().getDeclaredFields(); // 获得成员映射数组
- for (Field tem : f)
- {
- if (tem.getName().equals("mGroupFlags")) {
- tem.setAccessible(true);
- Integer mGroupFlags = (Integer)tem.get(obj);
- int newGroupFlags = mGroupFlags & 0xfffff8;
- tem.set(obj, newGroupFlags);
- }
- }
- }
这个地方单独解释一下,反射修改了ListView的一个私有成员变量mGroupFlags,该成员变量 最后4位 对应
FLAG_CLIP_CHILDREN , FLAG_CLIP_TO_PADDING , FLAG_INVALIDATE_REQUIRED 和 FLAG_RUN_ANIMATION
0xfffff8 末尾对应 1000
对应以上4个状态
在该状态下,ViewGroup dispatchDraw 的时候 不会调用 canvas.clipRect
这样ChildView 可以不受bounds限制绘制在ViewGroup任意位置.
具体流程在ViewGroup源码dispatchDraw部分
不知有没有更好的实现方式,反射修改私有成员变量总是不太好的....
圆弧形ListView(CircleList)
0 0
- 圆弧形ListView(CircleList)
- 圆弧形ListView(CircleList)
- Android圆弧形ListView的实现
- svg绘制圆弧(一)
- svg绘制圆弧(二)
- 循环链表 CircleList
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- Android 圆弧形进度条 自定义View
- 排名优化:外链有它的益处 更有他的不佳处
- 用popen遭遇ENOMEM (Cannot allocate memory)的问题
- [android篇]android 4.4 短信适配
- 根据DEM生成连续曲面栅格(提取DEM的经纬度)
- highcharts 应用总结
- 圆弧形ListView(CircleList)
- Linux系统环境下关于多进程并发写同一个文件的讨论
- java通过实体类生成dao文件
- 一个CCSprite所需要耗费内存分析
- Qt之文件操作 QFile
- 一夜之间站点从不到1千IP涨到6万IP的开发
- Android 监听wifi广播的两种方式
- DM642 FVID驱动编写小结
- listView.removeFooterView(View)报空指针