欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  技术分享

Android滑动菜单_安卓高仿酷狗音乐菜单_TranslateAnimation做滑动菜单

程序员文章站 2022-03-01 16:19:50
...

简介

在最近的Android应用程序,它从屏幕的左侧滑动,这种菜单如今已经越来越流行

这篇文章将为你讲解安卓程序如何使用TranslateAnimation类的简单方法创建一个类似的菜单

先给大家看一下菜单的截图、

Android滑动菜单_安卓高仿酷狗音乐菜单_TranslateAnimation做滑动菜单


选择菜单之后的截图

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