`
liuweisir
  • 浏览: 43367 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android菜单动画

阅读更多

先请注意,这里的菜单并不是按机器上的 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计算机-毕业设计.zip

    这个“Android菜单动画(类似QQ空间)Demo”是针对计算机科学和IT专业学生的毕业设计项目,旨在帮助他们理解和实现类似于QQ空间的菜单动画效果。 QQ空间的菜单动画通常包括滑动、淡入淡出、缩放等效果,这些效果可以...

    Android 菜单动画(类似QQ空间)Demo.zip

    在Android开发中,菜单动画是提升用户体验的重要手段之一。这个"Android 菜单动画(类似QQ空间)Demo"提供了一个实例,展示了如何创建与QQ空间类似的动态菜单效果。这样的动画设计可以增加应用的交互性和趣味性,使...

    android菜单展开的动画效果

    总的来说,实现Android菜单展开的动画效果需要对Android的布局、动画系统和事件处理有深入理解。通过不断实践和调试,你可以创造出独特且吸引人的用户界面,为你的应用增添亮点。在提供的"satellite-menu-sample...

    Android旋转菜单动画

    "Android旋转菜单动画"就是一个典型的例子,它利用Android的动画系统来实现一个可旋转的布局,以优雅地展示或隐藏菜单项。本文将深入探讨如何实现这样一个旋转菜单动画,以及涉及到的相关技术点。 首先,Android的...

    android 扇形菜单(属性动画实现)

    在Android开发中,扇形菜单是一种独特且吸引用户的交互设计,它通过...总之,创建一个扇形菜单需要对Android属性动画有深入的理解,以及一定的几何和数学知识。通过实践和学习,你将能够为你的应用增添独特的交互体验。

    Android带有动画效果可弹出并收回的一组按钮菜单

    本教程将带你了解如何在Android Studio中实现一个带有动画效果的可弹出并收回的按钮菜单。这个功能不仅能够增加应用的交互性,还能为用户提供一种新颖的互动方式。 首先,我们需要设置一个基础的布局,通常是一个...

    Android属性动画——实现灵动菜单效果

    以下是一个简单的示例代码,展示了如何使用ObjectAnimator创建一个展开和收起的菜单动画: ```java // 打开菜单动画 ObjectAnimator expandAnim = ObjectAnimator.ofFloat(menuView, "translationX", menuView....

    android做一个点击菜单弹出来的动画

    本文将深入讲解如何在Android应用中实现一个点击菜单时弹出的动画效果,同时结合多种动画组合,为用户提供更为丰富的视觉体验。 首先,我们要明白Android中的动画可以分为两类:视图动画和属性动画。视图动画主要...

    android界面切换之动画效果全汇总

    在讨论Android菜单动画之前,需要注意这里所说的“菜单”并非指设备物理按键触发的传统菜单,而是指基于Android SDK提供的`android.view.View`及其子类实现的上下文或弹出式菜单。 对于菜单动画的实现,通常可以...

    android fragment 底部动画菜单 导航动画

    本教程将深入探讨如何在Android应用中实现一个基于Fragment的底部动画菜单,并实现导航和各种酷炫的动画效果。 首先,我们需要了解Fragment的基本用法。Fragment是Activity的一部分,有自己的生命周期,可以在不...

    安卓Andriod源码——菜单动画(类似QQ空间)Demo.zip

    【Android 菜单动画实现详解】 在Android应用开发中,动态效果的使用可以极大地提升用户体验,其中菜单动画尤其重要,因为它能够使用户在交互时感受到流畅与趣味性。本篇将详细介绍如何在Android中实现一种类似QQ...

    android属性动画(伸展收缩)

    在Android开发中,属性动画(Property Animation)是一个强大的工具,用于创建动态效果和交互,它使得对象可以在多个帧之间平滑地改变其属性。在这个"android属性动画(伸展收缩)"的示例中,我们将深入探讨如何利用...

    Android菜单(动画菜单、360波纹菜单).rar

    这个"Android菜单(动画菜单、360波纹菜单).rar"压缩包包含了一些独特的菜单实现,旨在增强用户体验并为你的应用增添视觉吸引力。 1. **FragmentTabHost系统菜单**: FragmentTabHost是Android提供的一个组件,用于...

    Android动画、界面切换、特效、功能模块设计及代码

    #### Android 菜单动画 除了Activity之间的切换效果,开发者还可以通过添加动画来增强菜单项的视觉效果,使用户界面更加生动有趣。需要注意的是,这里提到的“菜单”并非指硬件按键触发的菜单,而是基于Android SDK...

    综合android多种动画的动态弹出式半圆型菜单

    "综合android多种动画的动态弹出式半圆型菜单"就是一个旨在提供这种独特用户体验的组件。这个菜单设计巧妙,它不仅具备弹出式的功能,还能通过丰富的动画效果增加互动性和趣味性。下面我们将深入探讨这一技术实现的...

    Android侧拉菜单时图标做动画

    总的来说,实现Android侧拉菜单时标题栏图标的动画效果需要结合使用`DrawerLayout`的监听器、属性动画以及自定义动画效果。这不仅可以提升用户交互体验,还能让应用的界面更具活力和专业感。通过不断实践和调整,...

    android 动画实现侧滑菜单效果

    在Android开发中,实现侧滑菜单效果是一种常见的交互设计...综上所述,实现Android的侧滑菜单效果涉及布局设计、动画技术、手势检测等多个方面。通过巧妙结合这些技术,你可以为用户提供一个流畅且直观的侧滑菜单体验。

    安卓动画效果相关-浮动菜单按钮的展开与收缩动画。.rar

    标题提到的“浮动菜单按钮的展开与收缩动画”是指在Android应用中,一个常见的交互设计——浮动操作按钮(Floating Action Button, FAB)如何通过动画来展示其扩展和收起的过程。这种动画效果常见于许多应用,特别是...

Global site tag (gtag.js) - Google Analytics