先请注意,这里的菜单并不是按机器上的 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 cn.xhlx.animation;
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.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.LinearLayout;
public class TranslateAnimationMenu extends Activity {
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>
总结:TranslateAnimation 与ScaleAnimation 动画方式的不同,TranslateAnimation 是整体移动,ScaleAnimation 是缩进移动
分享到:
相关推荐
这个“Android菜单动画(类似QQ空间)Demo”是针对计算机科学和IT专业学生的毕业设计项目,旨在帮助他们理解和实现类似于QQ空间的菜单动画效果。 QQ空间的菜单动画通常包括滑动、淡入淡出、缩放等效果,这些效果可以...
在Android开发中,菜单动画是提升用户体验的重要手段之一。这个"Android 菜单动画(类似QQ空间)Demo"提供了一个实例,展示了如何创建与QQ空间类似的动态菜单效果。这样的动画设计可以增加应用的交互性和趣味性,使...
总的来说,实现Android菜单展开的动画效果需要对Android的布局、动画系统和事件处理有深入理解。通过不断实践和调试,你可以创造出独特且吸引人的用户界面,为你的应用增添亮点。在提供的"satellite-menu-sample...
"Android旋转菜单动画"就是一个典型的例子,它利用Android的动画系统来实现一个可旋转的布局,以优雅地展示或隐藏菜单项。本文将深入探讨如何实现这样一个旋转菜单动画,以及涉及到的相关技术点。 首先,Android的...
在Android开发中,扇形菜单是一种独特且吸引用户的交互设计,它通过...总之,创建一个扇形菜单需要对Android属性动画有深入的理解,以及一定的几何和数学知识。通过实践和学习,你将能够为你的应用增添独特的交互体验。
本教程将带你了解如何在Android Studio中实现一个带有动画效果的可弹出并收回的按钮菜单。这个功能不仅能够增加应用的交互性,还能为用户提供一种新颖的互动方式。 首先,我们需要设置一个基础的布局,通常是一个...
以下是一个简单的示例代码,展示了如何使用ObjectAnimator创建一个展开和收起的菜单动画: ```java // 打开菜单动画 ObjectAnimator expandAnim = ObjectAnimator.ofFloat(menuView, "translationX", menuView....
本文将深入讲解如何在Android应用中实现一个点击菜单时弹出的动画效果,同时结合多种动画组合,为用户提供更为丰富的视觉体验。 首先,我们要明白Android中的动画可以分为两类:视图动画和属性动画。视图动画主要...
在讨论Android菜单动画之前,需要注意这里所说的“菜单”并非指设备物理按键触发的传统菜单,而是指基于Android SDK提供的`android.view.View`及其子类实现的上下文或弹出式菜单。 对于菜单动画的实现,通常可以...
本教程将深入探讨如何在Android应用中实现一个基于Fragment的底部动画菜单,并实现导航和各种酷炫的动画效果。 首先,我们需要了解Fragment的基本用法。Fragment是Activity的一部分,有自己的生命周期,可以在不...
【Android 菜单动画实现详解】 在Android应用开发中,动态效果的使用可以极大地提升用户体验,其中菜单动画尤其重要,因为它能够使用户在交互时感受到流畅与趣味性。本篇将详细介绍如何在Android中实现一种类似QQ...
在Android开发中,属性动画(Property Animation)是一个强大的工具,用于创建动态效果和交互,它使得对象可以在多个帧之间平滑地改变其属性。在这个"android属性动画(伸展收缩)"的示例中,我们将深入探讨如何利用...
这个"Android菜单(动画菜单、360波纹菜单).rar"压缩包包含了一些独特的菜单实现,旨在增强用户体验并为你的应用增添视觉吸引力。 1. **FragmentTabHost系统菜单**: FragmentTabHost是Android提供的一个组件,用于...
#### Android 菜单动画 除了Activity之间的切换效果,开发者还可以通过添加动画来增强菜单项的视觉效果,使用户界面更加生动有趣。需要注意的是,这里提到的“菜单”并非指硬件按键触发的菜单,而是基于Android SDK...
"综合android多种动画的动态弹出式半圆型菜单"就是一个旨在提供这种独特用户体验的组件。这个菜单设计巧妙,它不仅具备弹出式的功能,还能通过丰富的动画效果增加互动性和趣味性。下面我们将深入探讨这一技术实现的...
总的来说,实现Android侧拉菜单时标题栏图标的动画效果需要结合使用`DrawerLayout`的监听器、属性动画以及自定义动画效果。这不仅可以提升用户交互体验,还能让应用的界面更具活力和专业感。通过不断实践和调整,...
在Android开发中,实现侧滑菜单效果是一种常见的交互设计...综上所述,实现Android的侧滑菜单效果涉及布局设计、动画技术、手势检测等多个方面。通过巧妙结合这些技术,你可以为用户提供一个流畅且直观的侧滑菜单体验。
标题提到的“浮动菜单按钮的展开与收缩动画”是指在Android应用中,一个常见的交互设计——浮动操作按钮(Floating Action Button, FAB)如何通过动画来展示其扩展和收起的过程。这种动画效果常见于许多应用,特别是...