[Android实例] 【小木桩】继承viewgroup实现左侧菜单(半原创)

本帖最后由 小木桩 于 2013-3-13 11:58 编辑

                    前几天一直看到一个viewgroup实现的特效,觉得比较炫。
          于是就想学习学习这个东西,现在看来viewgroup确实是一个好东西。在自定义复杂view方面确实没话说。不过入门比别的控件稍微难了一点点。


在学这个的时候看到一篇帖子,也是左侧的菜单,原帖地址如下:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=212634

这个例子是我学习的入门篇,从头到尾我也仔仔细细的看了。上面也说到里面有一个小bug没有解决。
原话如下:

(我把源码上传网上,大家可以下载运行,如有不足请留言.说明一点:listview上下左右滑动冲突没有解决,
      不过我运行看过很多应用,要么listview不能左右滑动,要么能左右滑动但是listview不到一屏)

   现在我就为上面的疑问给大家分享一下我的做法,完善了之前的小bug,界面完全是以前的。不过代码改动稍微过大。
一,将之前的手势监听改成了onTouch方法监听(算法略复杂,优点是监听更准确,可操控性更强)
二,去除了回调接口(减少不必要的回调)
三,修改测量view的方法。


下面这个方法是比较主要的一个方法,即将viewgroup里面的子view按照要求布局(很重要,这将被视为所有view的初始状态)
protected void onLayout(boolean changed, int l, int t, int r, int b) {
  if (changed) {
                 viewMenu = getChildAt(0);// 获取滑动菜单的view
                viewContent = getChildAt(1);// 获得主页view
                  measureView(viewContent);
                  measureView(viewMenu);//对传进来的子view进行测量,这个很重要  在源码里面会有相应代码
                width = getWidth();//获得控件所拥有的宽度
                  height = getHeight();//获得控件所拥有的高度
                // 四个参数分别为:左边的位置,上边的位置,右边的位置,底边的位置
                   viewMenu.layout(-viewMenu.getMeasuredWidth(), 0, 0, getHeight());
                  viewContent.layout(0, 0, getWidth(), getHeight());
       }
}

本帖隐藏的内容


其它的就不多介绍了,请看源码。



05.png (244.34 KB, 下载次数: 1)

05.png

01.png (312.25 KB, 下载次数: 0)

01.png

02.png (232 KB, 下载次数: 0)

02.png

03.png (151.1 KB, 下载次数: 0)

03.png

04.png (232.55 KB, 下载次数: 0)

04.png

小木桩.rar

296.38 KB, 下载次数: 687, 下载积分: e币 -2 元

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值