Displaying list items in a semi-circle with a nice fish eye effect
source code:
https://github.com/dkmeteor/CircleList
Canvas和Matrix实现的效果,具体看源码就行了。
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位 对应
0xfffff8 末尾对应 1000
对应以上4个状态
在该状态下,ViewGroup dispatchDraw 的时候 不会调用 canvas.clipRect
这样ChildView 可以不受bounds限制绘制在ViewGroup任意位置.
具体流程在ViewGroup源码dispatchDraw部分
相关推荐
Android CircleList(圆弧形的ListView)
本文参考了github项目CircleList(地址),修改部分代码后实现了Android弧形列表显示图片,真实的轨迹是抛物线.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
CircleList-master源码,是一个很不错的Android源码,有兴趣的伙伴们抽时间可以看一下把。
本文参考了github项目CircleList(地址),修改部分代码后实现了Android弧形列表显示图片,真实的轨迹是抛物线。
import CircleList from 'react-native-circle-list' ... export class ExampleUsage extends PureComponent { _keyExtractor = item => item.id _renderItem = ({ item }) => <CircleListItem label={`Label $
循环链表实现约瑟夫环 typedef struct cnode { int data,secret; struct cnode* next; }*circlelist,cnode;
循环链表设计与API实现 基本概念 循环链表的定义:将单链表中最后一个数据元素的next指针指向第一个元素 循环链表拥有单链表的...CircleListNode* CircleList_Reset(CircleList* list); 获取当前游标指向的数据元
【循环链表CircleList】单向循环链表、双向循环链表以及约瑟夫环问题 【队列Queue】队列 Queue、双端队列 DeQueue、循环队列 CircleQueue、双端循环队列 CircleDeque 源码实现(Java) 【栈Stack】栈 Stack 源码 ...