- 浏览: 465280 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
wwwjiandan:
我现在遇到的问题是将Activity设置为非全屏,且andro ...
Android中软键盘弹出时底部菜单上移问题 -
zjhdreams:
求下载链接
Android 9Patch (NinePatch) -
wtjandjay:
受教了 .......
从程序员到项目经理 -
mr_zhang2011:
将博客搬至CSDN -
fyc0109:
为什么我传过去的值, 有的都不对呢, 顺序也是一样的.就是获得 ...
Android Parcelable序列化自定义类集合在Activity间传递
http://hi.baidu.com/juwend/blog/item/95b98f726fdb04178701b016.htmlAndroid基于TranslateAnimation的动画动态菜单
2010-02-17 02:46
标签:Android,TranslateAnimation,菜单,android:visibility
先请注意,这里的菜单并不是按机器上的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 Log.isLoggable方法的使用
2014-06-06 15:35 3006android 动态控制logcat日志开关,通过Log. ... -
View not attached to window manager
2013-01-10 11:55 1080View not attached to window man ... -
代码设置android:icon,android:label
2013-01-05 15:26 7997requestWindowFeature( Window.F ... -
Android项目为一个apk设置多个ICON图标和执行入口
2013-01-05 12:13 3880Android开发中,一个工程对应一个AndroidManif ... -
Intent跳转到系统应用中的拨号界面、联系人界面、短信界面及其他
2012-12-04 12:15 01:调用系统发送短信界面 Uri smsT ... -
Android 源码目录结构详解
2012-11-22 17:20 1470这是Android2.1的源代码的 ... -
如何获取android源代码
2012-07-10 17:50 2741如何获取android源代码 研究 ... -
Android uses-permission大全
2012-06-12 17:33 1072android.permission.ACCESS_CHE ... -
Android 应用程序基础(Application Fundamentals)
2012-05-23 17:42 1272Android 应用程序基础(Application Fun ... -
转Android 音乐频谱实现
2012-02-18 23:35 0最近由于需要实现音乐频谱,所以今天就为大家普及一下。 这里实现 ... -
android VideoView本工程mp4文件
2012-01-09 18:42 2706最近在做一个demo,要求播放视频,记录一下。使用的是Vid ... -
关于android播放mp3与歌词同步问题收集
2012-01-09 17:57 1690关于android播放mp3与歌词同步问题收集,有时间再试。 ... -
android使用MediaPlayer播放音乐文件时遇到的问题
2012-01-09 17:38 18385把mp3文件放在Assets文件夹里,然后用MediaPlay ... -
android资源目录---assets与res/raw的不同
2012-01-05 11:49 2382android资源目录---assets与 ... -
Android 的cpu硬盘 内存 网络设置 系统信息 硬件信息
2012-01-04 10:56 1620转载 http://www.cnmsdn.com/html/2 ... -
使用 Android Compatibility Package 来简化开发工作
2012-01-04 10:12 1436转载 http://www.cnmsdn.com/html/2 ... -
Android 9Patch (NinePatch)
2011-12-26 16:06 45411:介绍 NinePatch图片以*.9.png结尾,和普通 ... -
Windows平台下Android源码的下载
2011-12-21 11:06 1263Windows平台下Android源码的下载 ... -
改变MenuItem默认背景
2011-12-07 19:58 1447@Override public boolean onCre ... -
Android横屏竖屏切换
2011-11-10 18:20 107转载 http://blog.csdn.net/leesido ...
相关推荐
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设计...