axure 侧滑抽屉式菜单_Android实现抽屉式侧滑菜单效果

慕课网大神老师hyman的Android课程:QQ5.0侧滑菜单学习笔记以及总结

​一、概述

一般的侧滑实现:

ViewGroup Menu+Content

onTouchEvent监听器可以用来监听手指抬起,点击等事件

MOVE:不断监听用户的移动距离,改变ViewGroup的leftMargin

UP:对用户的操作进行判断,判断是大于一半还是小于一半,若大于则显示菜单,若小于则隐藏菜单(即根据显示菜单的宽度,决定将其隐藏还是显示)

1、Scroller辅助类实现动画效果

2、LeftMargin+Thread

换个思路:继承HorizontalScrollerView(水平滚动条),好处:无需判断高度只需考虑水平宽度,可以省去MOVE冲突的处理。

二、代码实现及自定义属性

(1)布局文件left_menu.xml:

(2)自定义View:SlidingMenu.java,继承水平滚动控件类

1、首先实现其两个参数的构造方法

2、将自定义的HorizontalScrollView名字改成自定义的属性名 包名+类名

(3)写入用户自定义属性,在values文件夹中创建attr.xml文件

(4)在left_menu所在布局文件下设置名称空间:xmlns:自己起的名字="http://schemas.android.com/apk/res-auto"(见demo.xml

)

PS:以上是在Android

Studio中使用自定义名称空间的方法

(5)自定义属性放在View中使用,设置滑动后主界面剩余显示宽度关键:自己起的名字:rightPadding="80dp"(见demo.xml)

(6)在刚才未使用自定义属性时,调用自身的构造方法,定义之后,需要生成另外两个构造方法:将原来两个参数构造方法中的方法拷贝到三个参数的构造方法之中,然后将两个参数构造方法的第三个参数设置为0,将一个参数的构造方法(传入上下文对象方法)的第二个参数设置为null,即调用两个参数的构造方法。

(7)获取我们定义的属性:在三个参数的构造方法中获取:通过TypedArray这个类获得自定义属性,这里需要注意的是TypedArray这个类用完之后需要进行释放(recycled)。

(8)抽屉式菜单实现:

实现思路:将left_menu放置在主界面的下方,并设置一点偏移量,使得侧滑菜单划出时,既像是在下方不动,却又能看到一点点划出的效果

设置调用动画的时机:ACTION_MOVE,划过的距离大于屏幕的1/2时就会将侧滑菜单整个全部拉出,收回同理。

由于属性动画是从Android 3.0开始才引入进来,则我们需要导入一个兼容性jar包nineoldandroids.jar

在SlidingMenu中重写onScrollChanged()方法,具体详见代码实现

三、给侧滑菜单添加按钮,当用户点击时,菜单自动弹出,再点击时自动消失

(1)首先定义一个bool类型的变量标识当前的状态:

Boolean isOpen;  //默认打开时为false

(2)菜单划出之后设置为true,未划开为flase

(3)新增打开、关闭、切换菜单方法:openMenu(), closeMenu(), toggle()

(4)left_menu所在的布局文件中添加一个Button或者ImageButton,并添加onClick属性

(5)在相关Activity中设置onClick方法:

private SlidingMenu mLeftMenu;

public void toggleMenu(View view) { mLeftMenu.toggle();

}

具体代码实现:

​并不想在此给出:)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值