先请注意,这里的菜单并不是按机器上的MENU出现在那种菜单,而是基于Android SDK提供的android.view.animation.TranslateAnimation(extends android.view.animation.Animation)类实例后附加到一个Layout上使之产生的有动画出现和隐藏效果的菜单。
原理:Layout(菜单)从屏幕内(挨着屏幕边沿,其实并非一定,视需要的初态和末态而定)动态的移动到屏幕外(在外面可以挨着边沿,也可以离远点,这个无所谓了),这样就可以达到动态菜单的效果了。但是由于Animation的一些奇怪特性(setFill**() 函数的作用效果,这个在我使用的某几个Animation当中出现了没有想明白的效果),就暂不理会这个东西了,所以使得我们还需要用上XML属性android:visibility。当Layout(菜单)显示的时候,设置android:visibility="visible",当Layout(菜单)隐藏的时候,设置android:visibility="gone",这里android:visibility可以有3个值,"visible"为可见,"invisible"为不可见但占空间,"gone"为不可见且不占空间(所谓的占不占空间,这个可以自己写个XML来试试就明白了)。
Class TranslateAnimation的使用:Animation有两种定义方法,一种是用Java code,一种是用XML,这里只介绍用code来定义(因为用XML来定义的那种我没用过。。嘿嘿。。)。多的不说,看代码。
这里是TranslateAnimationMenu.java(我在里面还另加入了ScaleAnimation产生的动画,各位朋友可以照着SDK以及程序效果来理解):
package com.TranslateAnimation.Menu;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.LinearLayout;
public class TranslateAnimationMenu extends Activity {
/** Called when the activity is first created. */
//TranslateAnimation showAction, hideAction;
Animation showAction, hideAction;
LinearLayout menu;
Button button;
boolean menuShowed;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
menu = (LinearLayout) findViewById(R.id.menu);
button = (Button) findViewById(R.id.button);
// 这里是TranslateAnimation动画
showAction = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f);
// 这里是ScaleAnimation动画
//showAction = new ScaleAnimation(
// 1.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f);
showAction.setDuration(500);
// 这里是TranslateAnimation动画
hideAction = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, -1.0f);
// 这里是ScaleAnimation动画
//hideAction = new ScaleAnimation(
// 1.0f, 1.0f, 1.0f, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f);
hideAction.setDuration(500);
menuShowed = false;
menu.setVisibility(View.GONE);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (menuShowed) {
menuShowed = false;
menu.startAnimation(hideAction);
menu.setVisibility(View.GONE);
}
else {
menuShowed = true;
menu.startAnimation(showAction);
menu.setVisibility(View.VISIBLE);
}
}
});
}
}
这里是main.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text="@string/hello" />
<LinearLayout android:id="@+id/menu"
android:layout_height="100px" android:layout_width="fill_parent"
android:layout_alignParentTop="true" android:background="#ffffff">
<TextView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:text="I am a menu"
android:gravity="center" />
</LinearLayout>
<Button android:id="@+id/button" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_alignParentBottom="true"
android:text="Click to show/hide menu" />
</RelativeLayout>Android基于TranslateAnimation的动画动态菜单
分享到:
相关推荐
Android的TranslateAnimation类是实现平移动画的核心工具,它属于补间动画(Tween Animation)的一种。补间动画通过在两个关键帧之间插值计算出中间帧,从而创造出平滑过渡的效果。以下将详细介绍如何使用...
本项目通过“基于Android的原来PATH的菜单效果如此简单。布局+TranslateAnimation搞定.zip”展示了如何利用布局和动画轻松实现PATH菜单的效果。下面我们将深入探讨这个主题。 首先,PATH菜单通常指的是那些在触摸屏...
本教程将带你了解如何在Android Studio中实现一个带有动画效果的可弹出并收回的按钮菜单。这个功能不仅能够增加应用的交互性,还能为用户提供一种新颖的互动方式。 首先,我们需要设置一个基础的布局,通常是一个...
首先,Android的动画系统提供了多种动画类型,包括TranslateAnimation(平移动画)、ScaleAnimation(缩放动画)、RotateAnimation(旋转动画)和AlphaAnimation(透明度动画)。在这个场景中,我们主要关注...
Android中的Animation类是动画的基础,它提供了多种动画类型,如AlphaAnimation(透明度动画)、RotateAnimation(旋转动画)、ScaleAnimation(缩放动画)以及TranslateAnimation(平移动画)。在动态菜单的实现中...
通过阅读源码和理解`PathMenu`类的实现,开发者可以学习到如何创建动态、吸引人的菜单界面,同时提升自己的Android动画编程技巧。对于想要提升Android应用交互体验的开发者来说,这是一个值得研究的实例。
在Android开发中,创建动态、交互丰富的用户界面是一项重要的任务,而Path导航菜单就是其中一种常见且吸引人的设计。本文将深入探讨如何使用布局和TranslateAnimation来实现Path导航菜单,以此提升应用程序的用户...
在给定的“Android原来PATH的菜单效果 布局+TranslateAnimation搞定.zip”文件中,我们可以看到使用布局和动画实现这一效果的方法。 首先,让我们了解一下核心组件。在Android中,`LinearLayout`、`RelativeLayout`...
这可能需要一些数学计算来确定每个菜单项的位置,或者使用`android:layout_margin`属性配合动态计算来达到理想的效果。 2. **添加动画**: 当布局准备好后,我们利用`TranslateAnimation`来实现菜单项的展开动画。...
在Android中,我们可以使用布局(Layout)来定义菜单项的位置,然后借助动画类(如TranslateAnimation)来实现动态展示。 首先,我们需要创建菜单的基础布局。这通常包括一个主按钮和一系列子菜单项。主按钮可以是...
下面我们将深入探讨如何在Android中实现一个扇形菜单Demo,基于提供的"TranslateAnimation"标签,我们可以推测这个实现主要依赖于Android的平移动画。 首先,我们需要创建一个自定义的View类来承载扇形菜单。这个...
布局+TranslateAnimation搞定.zip”揭示了一个使用基本布局和动画技术实现的PATH菜单效果。这个效果通常指的是在点击某个图标后,从该图标位置出发,其他菜单项沿着特定路径展开的动画效果。接下来,我们将详细探讨...
Android提供了多种动画类型,其中包括TranslateAnimation,它是用于实现对象平移(位移)效果的动画。在本文中,我们将深入探讨TranslateAnimation的使用及其重要参数和方法。 TranslateAnimation是Android 2D图形...
总结来说,这个项目展示了如何利用Android的基本布局和动画机制来实现一个简单的PATH菜单效果。通过对布局的合理设计和TranslateAnimation的巧妙运用,开发者能够创造出丰富的交互体验,同时保持代码的简洁性和可...
布局+TranslateAnimation搞定"揭示了一个使用基本布局和动画实现的菜单效果,这在许多应用中都非常常见。通过深入理解这个源码,开发者可以学习到如何有效地创建动态菜单,提升用户体验。 菜单效果通常涉及到UI设计...