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部分
相关推荐
`CircleList`就是这样一种特殊布局,它将传统的ListView转换为圆弧形状,为用户展示数据提供了新颖的方式。本篇文章将深入探讨`CircleList`的概念、实现原理以及如何在Android项目中应用它。 `CircleList`,...
在提供的压缩包文件"CircleList"中,可能包含了实现弧形ListView的相关代码示例或者库文件。通过研究这些代码,开发者可以更好地理解弧形ListView的实现原理,并将其应用于自己的项目中,创造出富有创新和吸引力的...
首先,我们需要理解的是"CircleList"项目,这是一个在GitHub上公开的开源项目,用于实现弧形排列的列表。开发者通过对源代码进行一些修改,实现了将列表中的元素沿着抛物线轨迹显示的功能。这涉及到对Android的基础...
在这个项目中,开发者尝试将这种效果应用到ListView的每个半圆形列表项上,使得用户滚动列表时,每个条目呈现出动态的弧形变形。 【描述】中提到,“太多无法一一验证是否可用”,意味着这个压缩包可能包含多个示例...
本文参考了github项目CircleList(地址),修改部分代码后实现了Android弧形列表显示图片,真实的轨迹是抛物线.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。