Android滑动菜单_安卓高仿酷狗音乐菜单_TranslateAnimation做滑动菜单
2014-08-08 16:35:15  By: dwtedx

简介

在最近的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

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+