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部分

更多相关文章

  1. android 开发环境搭建
  2. application全局变量
  3. 安卓屏幕适配
  4. android 开发环境搭建
  5. Android(安卓)网络图片查看器
  6. android tabhost学习
  7. android使用全局变量的方法
  8. ffmepg x264 fdk-aac android ndk全CPU编译
  9. Android(安卓)自定义Dialog时出现成员变量为null的问题

随机推荐

  1. Android:模拟器使用命令安装apk
  2. android 再按一次退出程序
  3. Android 桌面角标在各大品牌机型上的实现
  4. 【Android】Android Studio实战快速高效
  5. Android 的 selector--背景选择器
  6. 在eclipse上开发Android应用程序
  7. 穿越之旅之--android中如何执行java命令
  8. NDK开发历程(一):android native code的调试
  9. Android UI开发专题(一) 之界面设计
  10. Android(安卓)优化开机启动