Android自定义LinearLayout实现左右侧滑菜单,完美兼容ListViewScrollViewViewPager等滑动控件

Posted HyperionChen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android自定义LinearLayout实现左右侧滑菜单,完美兼容ListViewScrollViewViewPager等滑动控件相关的知识,希望对你有一定的参考价值。

国际惯例,先来效果图



在阅读本文章之前,请确定熟悉【Scroller】相关的知识,如果不熟悉,请小伙伴儿先百度后再来吧。

假如你已经知道【Scroller】了,那么就接着往下看吧。

首先,我们把侧拉菜单的构造给解析出来。多次观看上面的效果图,我们可以得出以下的结论。

  • 整体可以看做是一个ViewGroup,这个ViewGroup包含了最多三个子View(分别是左菜单的红色View、中间正文内容的白色View、右菜单的蓝色View);
  • 三个子View(我称为UI界面,因为代码中的Java类就取名这个)的移动是在ViewGroup的onTouchEvent方法中控制;
  • 每个UI界面都拥有独特的东西,比如子控件布局,因此我们希望用R.layout.*的方式引入;
  • 每个UI界面又都拥有相同的属性,比如都有宽度属性,滑动临界值属性,那么就可以用一个超类来封装所有相似的东西;
  • 最最重要的地方,动态计算出scrollX的值,然后用Scroller来滑动。
理清楚了结构后,我们来开始第一步的设计,也就是封装超类,首先给出代码:

以上是关于Android自定义LinearLayout实现左右侧滑菜单,完美兼容ListViewScrollViewViewPager等滑动控件的主要内容,如果未能解决你的问题,请参考以下文章

Android自定义LinearLayout实现侧滑布局--SwipeLinearLayout

Android学习——LinearLayout布局实现居中左对齐右对齐

LinearLayout源码解析

LinearLayout源码解析

在自定义视图中获取 LinearLayout 参考

Android布局预览器在添加自定义LinearLayout时抛出错误