先请注意,这里的菜单并不是按机器上的 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.zip
前几年的Android应用源码Demo,主要面向的是学生毕业设计学习。
android 扇形菜单(属性动画实现)
Android旋转动画,利用RotateAnimation旋转Layout,达到隐藏显示菜单的效果
Android Material Design风格的menu动画效果;android 菜单动画
android fragment 底部动画菜单 玩爆所有菜单效果 代码超级简单 android2.0以上都通用
综合android多种动画的动态弹出式半圆型菜单,超炫的菜单,一定不会让你后悔。
Android 侧拉菜单时标题栏图标做动画效果
android做一个点击菜单弹出来的动画,多种动画组合的效果
实现起来很简单,看到代码之后我相信你就可以随心所欲地做出带有酷炫的动画效果的按钮菜单了。环境:Android Studio
android 使用动画实现菜单贴边隐藏,隐藏后点击再弹出的效果,本人亲测,请放心下载
点击header展开listview,再次点击收起listview,过程采用android原生动画实现。
最近在学习属性动画,这是刚写的一些案例
见博客:http://blog.csdn.net/baidu_nod/article/details/38404531
Android菜单集合:FragmentTabHost系统菜单、上移式菜单、360波纹菜单、展开式菜单。详解注释,可直接拿来用!
浮动菜单按钮的展开与收缩动画。.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
android仿facebook侧拉菜单
Android实现侧拉菜单时的图标动画效果,用标题栏图标做动画效果,需要用到v4包和v7包。本效果有ToolBar 和 DrawerLayout组成,我们把跟布局设置成LinearLayout 方向设为垂直方向;然后放置v7包中的ToolBar和V4包中的...
Android中侧滑菜单效果实现(主界面和菜单界面实现平移、缩放、滚动动画),详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/72602778
android带有折纸动画的二级分类菜单,