123下一页
返回列表 发新帖

[原创][Android开发] 自定义RelativeLayout实现侧滑栏

[复制链接]

79

主题

2087

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4989
好评
8
信誉
100

考神MT论坛帅哥MT论坛新人

发表于 2023-11-4 23:15:33 来自手机  | 显示全部楼层 | 阅读模式  来自 广东
本帖最后由 ~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 + 1 不错不错

查看全部评分 总评分:好评 +1  金币 +1 

回复

使用道具 举报

79

主题

2087

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4989
好评
8
信誉
100

考神MT论坛帅哥MT论坛新人

发表于 2023-11-5 14:50:00 来自手机  | 显示全部楼层  来自 广东
网盘链接提取码I和l易搞混抱歉我的问题,已更换新链接
回复

使用道具 举报

51

主题

4282

回帖

1万

积分

博士生

念空

Rank: 7Rank: 7Rank: 7

金币
785
好评
29
信誉
121

MT论坛最佳新人考神MT论坛新人MT论坛活跃会员

发表于 2023-11-4 23:19:24 来自手机  | 显示全部楼层  来自 北京
学习一下
回复

使用道具 举报

1

主题

1807

回帖

8913

积分

硕士生

Rank: 6Rank: 6

金币
3815
好评
1
信誉
100
发表于 2023-11-4 23:19:31 来自手机  | 显示全部楼层  来自 广西
可以可以,学习了
回复

使用道具 举报

40

主题

1541

回帖

4133

积分

大学生

Rank: 5Rank: 5

金币
2159
好评
8
信誉
98
发表于 2023-11-4 23:26:29 来自手机  | 显示全部楼层  来自 江苏
学习一下
回复

使用道具 举报

1

主题

3987

回帖

2万

积分

博士后

刘亦菲

Rank: 8Rank: 8

金币
6461
好评
13
信誉
150

考神MT论坛帅哥MT论坛最佳新人MT论坛新人挂机大佬

发表于 2023-11-4 23:29:48 来自手机  | 显示全部楼层  来自 山东
厉害厉害
回复

使用道具 举报

79

主题

2087

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
4989
好评
8
信誉
100

考神MT论坛帅哥MT论坛新人

发表于 2023-11-4 23:30:21 来自手机  | 显示全部楼层  来自 广东
点击空白关闭抽屉速度有点快是因为播放的动画时间较短,不喜欢可以调长些,或者根据手指速度做不同速度的回收动画都可以
回复

使用道具 举报

0

主题

7274

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
2247
好评
8
信誉
124

考神

发表于 2023-11-4 23:32:00 来自手机  | 显示全部楼层  来自 广东
感谢分享
回复

使用道具 举报

49

主题

1599

回帖

7940

积分

硕士生

Rank: 6Rank: 6

金币
4008
好评
75
信誉
134

MT论坛活跃会员考神MT论坛新人

QQ
发表于 2023-11-4 23:40:24 来自手机  | 显示全部楼层  来自 四川
感谢分享
回复

使用道具 举报

1

主题

3656

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
7754
好评
24
信誉
241
发表于 2023-11-4 23:41:59 来自手机  | 显示全部楼层  来自 广东
牛批
回复

使用道具 举报

23

主题

1133

回帖

4584

积分

大学生

Rank: 5Rank: 5

金币
3305
好评
23
信誉
100
发表于 2023-11-4 23:45:36 来自手机  | 显示全部楼层  来自 广东
厉害
回复

使用道具 举报

0

主题

1152

回帖

2540

积分

大学生

Rank: 5Rank: 5

金币
517
好评
0
信誉
100

MT论坛新人MT论坛帅哥考神

发表于 2023-11-5 00:18:30 来自手机  | 显示全部楼层  来自 江西
感谢分享
回复

使用道具 举报

0

主题

3808

回帖

9577

积分

硕士生

Rank: 6Rank: 6

金币
6749
好评
8
信誉
113
发表于 2023-11-5 00:26:59 来自手机  | 显示全部楼层  来自 广西
这个厉害
回复

使用道具 举报

19

主题

2483

回帖

9178

积分

硕士生

在论坛话都不敢说 收敛极其内向

Rank: 6Rank: 6

金币
6613
好评
15
信誉
98
发表于 2023-11-5 00:30:14 来自手机  | 显示全部楼层  来自 江苏
大佬牛逼,下载了
回复

使用道具 举报

41

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
6148
好评
3
信誉
98
发表于 2023-11-5 00:32:28 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

22

主题

6592

回帖

2万

积分

博士后

超级至尊VIP

Rank: 8Rank: 8

金币
6092
好评
6
信誉
99

考神MT论坛新人MT论坛帅哥MT论坛最佳新人MT论坛活跃会员挂机大佬

发表于 2023-11-5 00:50:26 来自手机  | 显示全部楼层  来自 甘肃
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表