Android滑动菜单_安卓高仿酷狗音乐菜单_TranslateAnimation做滑动菜单
程序员文章站
2022-03-01 16:19:50
...
简介
在最近的Android应用程序,它从屏幕的左侧滑动,这种菜单如今已经越来越流行
这篇文章将为你讲解安卓程序如何使用TranslateAnimation类的简单方法创建一个类似的菜单
先给大家看一下菜单的截图、
选择菜单之后的截图
背景
我们需要先了解如何使用TranslateAnimation类的功能。它的构造函数接收四个参数
前两个涉及到X坐标和最后涉及到Y坐标、第一次在每种情况下是动画的起点,第二个是动画的终点
用它自己的后,我发现有问题的对象移回原来的位置。在进一步的检查代码
我意识到物体的位置需要来使用的LayoutParams类被改变。这确保了动画对物体的位置的永久效应
使用代码
一个只需要确定相对于菜单,即该内容的位置是菜单可见
在我来说,我使用的内容和一个布尔值的左边距来跟踪这一点,并确定哪些参数将被传递给TransalteAnimation构造函数
if(contentParams.leftMargin == -(menu.getLayoutParams().width)) { // Menu is hidden (slide out parameters) animateFromX = 0; animateToX = (menu.getLayoutParams().width); marginX = 0; menuOpen = true; } else { // Menu is visible (slide in parameter) animateFromX = 0; animateToX = -(menu.getLayoutParams().width); marginX = -(menu.getLayoutParams().width); menuOpen = false; }为了确保动画正常,内容的左边缘位置需要更改如下:
slide.setAnimationListener(new AnimationListener() { public void onAnimationEnd(Animation animation) { // Make movement of content permanent after animation has completed contentParams.setMargins(marginX, 0, 0, 0); // by positioning its left margin content.setLayoutParams(contentParams); } public void onAnimationRepeat(Animation animation) { } public void onAnimationStart(Animation animation) { } });离开位置可以是0或菜单的宽度。获得菜单的宽度如下:
menu.getLayoutParams().width // this is an integer value一旦这些参数已经确定,下面定义的函数被调用的菜单,无论是幻灯片或滑出:
slideMenuIn(animateFromX, animateToX, marginX);
技术点
最好是通过代码获取菜单的宽度,而不是固定的整数值来设置内容的左边距
这将避免在不同设备上不同的屏幕尺寸发行
你也可以防止用户不小心关闭一个应用程序试图通过按返回按钮,如下所示隐藏菜单:
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) { if(keyCode == KeyEvent.KEYCODE_BACK) { if(menuOpen) { // Slide the menu back if visible and one does not wish to close app but slide it back slideMenuIn(0, -(menu.getLayoutParams().width), -(menu.getLayoutParams().width)); // Pass slide in paramters menuOpen = false; return true; } } return super.onKeyDown(keyCode, keyEvent); }最后还在把源码贴出来、以供大家参考、下载链接: http://dwtedx.com/download.html?bdkey=s/1c0hDhHA 密码: 7v4r