`

[Android]CircleList 圆弧形 ListView

阅读更多

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位 对应
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部分
  • 大小: 497.5 KB
分享到:
评论

相关推荐

    Android CircleList(圆弧形的ListView)

    `CircleList`就是这样一种特殊布局,它将传统的ListView转换为圆弧形状,为用户展示数据提供了新颖的方式。本篇文章将深入探讨`CircleList`的概念、实现原理以及如何在Android项目中应用它。 `CircleList`,...

    弧形ListView

    在提供的压缩包文件"CircleList"中,可能包含了实现弧形ListView的相关代码示例或者库文件。通过研究这些代码,开发者可以更好地理解弧形ListView的实现原理,并将其应用于自己的项目中,创造出富有创新和吸引力的...

    安卓listview相关相关-显示在一个半圆列表项一个不错的鱼眼效果.zip

    在这个项目中,开发者尝试将这种效果应用到ListView的每个半圆形列表项上,使得用户滚动列表时,每个条目呈现出动态的弧形变形。 【描述】中提到,“太多无法一一验证是否可用”,意味着这个压缩包可能包含多个示例...

    Android弧形列表

    首先,我们需要理解的是"CircleList"项目,这是一个在GitHub上公开的开源项目,用于实现弧形排列的列表。开发者通过对源代码进行一些修改,实现了将列表中的元素沿着抛物线轨迹显示的功能。这涉及到对Android的基础...

    CircleList-master源码

    CircleList-master源码是针对Android平台的一个开源项目,旨在提供一种圆形布局的列表视图,让用户可以在一个圆形的界面上浏览列表数据。这种布局模式在许多应用中都很常见,例如音乐播放器的歌曲循环列表或者社交...

    圆形listview

    【圆形ListView】是一种在Android开发中常见的视图组件,它为传统的ListView提供了独特的展示效果,即将列表项排列成一个圆形的布局。这种效果通常用于创建旋转菜单、选择器或者需要吸引用户注意力的特殊界面元素。...

    安卓listview相关相关-本文参考了github项目CircleList地址修改部分代码后实现了Android弧形列表显示图片真实的轨迹是抛物线.zip

    本文参考了github项目CircleList(地址),修改部分代码后实现了Android弧形列表显示图片,真实的轨迹是抛物线.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android代码-显示在一个半圆列表项一个不错的鱼眼效果.zip

    描述中提到的“显示在一个半圆列表项”暗示了这个项目可能涉及自定义视图(Custom View)的创建,开发者可能使用了Android的ListView或RecyclerView等组件,并对其进行了定制,使其能够显示半个圆形的列表项。...

    显示在一个半圆列表项,一个不错的鱼眼效果

    标题中的“显示在一个半圆列表项,一个不错的鱼眼效果”指的是在Android开发中实现的一种特殊的视觉效果,通常称为“鱼眼效果”或者“透视效果”。这种效果常常用于UI设计,能够为用户带来独特的视觉体验,使应用...

    【JavaScript源代码】基于JavaScript实现简单的轮播图.docx

    var circleList = document.querySelector('.circle'); for (var i = 0; i ; i++) { var circle = document.createElement('li'); circle.setAttribute('data-index', i); circleList.appendChild(circle); } ```...

    JavaScript canvas实现跟随鼠标事件

    draw方法用于在canvas上绘制圆形,并且设置了圆的填充色、透明度以及合成模式。update方法则根据圆形对象的速度属性来更新其位置和透明度。 最后,文章中的render函数用于实现动画效果。它首先清除画布上的所有内容...

    C例子:循环链表

    `Ex012_CircleList.c` 和 `Ex012_CircleList.h` 这两个文件是用于实现和操作循环链表的源代码和头文件。下面将详细介绍这两个文件中可能涉及的C语言知识点以及循环链表的相关操作。 1. **链表结构定义**: 在`...

    深入解析C++的循环链表与双向链表设计的API实现

    9. **游标操作**:循环链表引入了游标的概念,`CircleList_Reset()`函数将游标重置到链表的起始位置,`CircleList_Current()`函数返回当前游标指向的节点,而`CircleList_Next()`函数则将游标向前移动一位。...

    react-native-circle-list:React Native 循环列表的 javascript 实现

    import CircleList from 'react-native-circle-list' ... export class ExampleUsage extends PureComponent { _keyExtractor = item => item.id _renderItem = ({ item }) => <CircleListItem label={`Label $

    C语言约瑟夫环

    循环链表实现约瑟夫环 typedef struct cnode { int data,secret; struct cnode* next; }*circlelist,cnode;

    约瑟夫环c语言实现

    Node* circleList = createCircleList(n); josephusProblem(circleList, k); return 0; } ``` 这段C代码实现了约瑟夫环问题,通过创建一个环形链表并使用两个指针模拟剔除过程,最终找出留在环中的最后一个编号...

    微信小程序 摇一摇抽奖简单实例实现代码

    - 圆点列表(`circleList`)和奖品列表(`awardList`)是通过循环生成的,每个元素包含了位置信息(`topCircle` 和 `leftCircle`),方便在页面上绘制。此外,`indexSelect` 用于记录当前选中的奖品,`isRunning` ...

    03_循环链表_链表_循环链表_

    在给定的文件中,`circlelist.c`很可能是实现循环链表的源代码,`main.c`可能包含了测试用例,而`circlelist.h`则可能是头文件,包含了链表节点的定义和相关函数声明。 在`circlelist.h`中,通常会定义链表节点...

Global site tag (gtag.js) - Google Analytics