圆弧形ListView(CircleList)

Displaying list items in a semi-circle with a nice fish eye effect. Android.

源代码 : https://github.com/dkmeteor/CircleList

角度/缩放比 可调
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部分

不知有没有更好的实现方式,反射修改私有成员变量总是不太好的.....

时间: 2024-11-08 22:32:26

圆弧形ListView(CircleList)的相关文章

制作漂亮的圆弧形彩色集成光束

光束制作的重点是注意好光的层次感,制作的时候先由底部的暗光开始慢慢渲染,逐层加亮光束的亮度,这样做出的光束才明暗分明,非常有穿透性.   最终效果 <点小图查看大图>   1.制作之前先分析好光的构成,大致分为三个部分来完成,首先来制作右半部分,需要完成的效果如下图. <图1> 2.新建一个组,在组里新建一个图层,先来铺底部的光束.用钢笔勾出下图所示的选区,填充暗红色,再适当降低图层不透明度. <图2>   3.新建一个图层,同上的方法勾出稍细的光束,同样填充暗红色,再

CSS3如何实现圆角的outline效果?

一.首先,outline是个很牛逼的东西 温故而知鑫,10年的时候写过一篇可用性方面的文章:"页面可用性之outline轮廓外框的一些研究",还算挺有用的:3年之后,也就是13年,介绍了个没什么使用价值的东西:"纯CSS实现的outline切换transition动画效果". 个把星期前,微博上抛出了个问题: 有没有什么方法利用CSS以及使用一层标签实现下面这个加号效果,[不能使用::before, ::after伪元素实现][box-shadow效果不好,我试过了

apple.com网站有特点的设计

文章描述:我认为apple.com在内容组织.页面版式.交互设计层面没有特别独到之处,纯粹用户界面层次真正把apple的基因发挥到了机制. 以前听同行讲过一次apple.com,在他眼里apple.com就是丰碑,基本没有不好.任何哲学的理论和术语都可以往它身上套,简直就是成就与完美的化身.这问题我觉得需要拆解分层次的看,任何有特... 以前听同行讲过一次apple.com,在他眼里apple.com就是丰碑,基本没有不好.任何哲学的理论和术语都可以往它身上套,简直就是成就与完美的化身.这问题我

Coreldraw的美丽调和

自Coreldraw问世以来,"调和"这一工具就在图象制作中扮演着重要的角色.但很长时期里,人们习惯地认为调和效果仅仅是将两个对象通过调和平滑的组合在一起而已.其实不然,调和效果有着更为广阔的应用空间,它可以说是Coreldraw这款软件的精华所在.本文我们就通过一系列调和效果剖析来探讨它的一些应用原理. 一."调和"的简单应用 首先,我们来了解一下调和是如何将一些简单的几何图形变成美丽而多彩图案的,步骤如下: 使用图形工具绘制一个椭圆(如图1-A). 给椭圆形填入

使用AutoCAD再现不规则材料圆弧边

通常笔者所做的排料图是做在长方形的钢板上,可是有时也会遇到仅仅做小量的排料图的情况,这时使用四米长的整块钢板一定会被老板骂的,怎么办?去车间找边角料呗--找到了边角料又有了难处,不规则钢板如何在CAD上表现出来呢?细看这块钢板,为如下形状(如图). 可是手边只有一把卷尺,怎么能得到它的圆弧形的那一边呢? 不管它,先做出几条直边的长度再说,根据卷尺测量的数值,画出几条直边如下: 可是剩下的这段圆弧的圆心如何确定呢?这个问题困扰了笔者半天,从车间到办公室,从办公室再回到车间跑了两趟才反应过来:为什么

利用CSS3实现圆角的outline效果的教程

  一.首先,outline是个很牛的东西 1. border近亲 outline和border是近亲,为什么这么讲呢?首先,都是给元素外面套框框的;其次,支持的属性值几乎都是一样的,例如,outline-style和border-style值dotted, dashed, solid, ...之类的,一些语法也几乎一样.如果这都不算近亲,你让绝对定位和浮动何言以对. 2. IE8+支持 outline严格来讲属于CSS3属性,但是IE8+浏览器就支持了.外挂一句,IE9+浏览器的outline

HTML5基础,第4部分:点睛之笔Canvas

(译者注:由于yeeyan编辑器对文章中的标签做解析的原因,我在每个标签的<符号之后都加入了一个空格,比如说,左尖括号<+head+右尖括号>,我会写成< head>,以便其能够在文章中正确显示,不便之处敬请谅解.) 使用HTML5来编写代码的人,有着设计者和开发者双重身份的强悍组合,其职责是构造出高效的富互联网应用(rich Internet application,RIA),特别是丰富的用户界面.就高效这个字眼来说,我的意思是指系统级的和系统性的创造力增强,这种增强以数字

PS滤镜制作足球场一角

教程的主体部分是绿草部分的制作,主要用滤镜来完成,先用杂色等滤镜制作一些杂点,然后用模糊及风滤镜把杂点变长做成草地的效果. 最终效果 1.新建一个500 * 300像素的画布. 2.点击图层面板底部的新建图标新建一个图层. 3.把背景填充绿色:#61961d. 4.找到顶部工具栏的滤镜 > 杂色 > 添加杂色,参数设置如下图. 5.选择菜单:滤镜 > 模糊 > 高斯模糊,数值如下图. 6.选择菜单:滤镜 > 风格化 > 风,参数设置如下图. 7.选择菜单:图像 >

PhotoShop液化滤镜使用方法:人物面部液化塑形详解

Liquify液化,怎么解释这个词呢?我都解释不好,我的理解为:用于更改图片中的一些原始内容的位子的工具,说白了就是将原图颜色视为"液体"然后通过你的操作对液体进行局部的修改. "液化"命令可用于通过交互方式拼凑.推.拉.旋转.反射.折叠和膨胀图像的任意区域,创建的扭曲可以是细微的或剧烈的,这就使"液化"命令成为修饰图像和创建艺术效果的强大工具. 注:"液化"命令只适用于 RGB 颜色模式.CMYK 颜色模式.Lab颜色模式和