|
|
本帖最后由 ~xiaohui~ 于 2023-11-5 14:48 编辑
效果图(不会录gif,先这样吧)
侧滑栏,都见过吧。侧滑栏已经深入app中了,几乎哪里都可以见到它的身影。Google的androidx库提供了DrawerLayout一类方便了更多开发者实现侧滑栏效果,可谓是很便利了。
出于好奇,想参透其中的原理,网上涌出了不少自定义布局实现侧滑栏的文章。比较出名的应该是hongyang大佬的仿qq侧滑栏了,csdn也有不少转载和讲解,这里不赘述了。
这里主要是仿md的侧滑栏,准确的应该叫抽屉,
细节包括:
1.手指在边缘才能滑出
2.滑出抽屉无法点击后面的内容(网上绝大数没有这个),且背景alpha值会随滑动发送变化
3.当抽屉滑出时,点击空白的地方可以关闭抽屉
4.短距离快速滑动可以完全打开抽屉
实现思路:自定义类继承RelativeLayout,为什么继承RelativeLayout而不是ViewGroup?因为RelativeLayout自身的特性,可以实现"遮盖"。
中间是滑动逻辑,这个网上一堆,就不讲了。
在侧边才触发打开抽屉,判断x坐标是否小于自己设定的值就行,比如我设置的是屏幕宽的4%
要实现背景变化和空白关闭,第一想到的肯定是添加一个背景布局控制alpha,因为我们总不可能改变主布局的alpha吧,会被打(划掉)。然后监听抽屉的滑动同时控制背景View的alpha值,接着判断抽屉是否打开设定onClickListener即可。
短距离快速滑动使用GestureDetector,用于检测飞速滑动。
第一次写类似blog的文章,写的不好,请见谅,有不懂的欢迎一起学习。
下面是完整源代码,整个文件是独立的。开发不易,谢谢你的观看!
考虑到代码较长,就放附件了。
网盘链接: https://www.123pan.com/s/Tibpjv-UwnB.html提取码:pUnA |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:好评 +1
金币 +1
|