要实现的效果如图:
代码很简单,主要是TranslateAnimation类的
publicTranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)
Since:API Level 1
Constructor to use when building a TranslateAnimation from code
Parameters
fromXTypefromXValuetoXTypetoXValuefromYTypefromYValuetoYTypetoYValueSpecifies how fromXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
Change in X coordinate to apply at the start of the animation. This value can either be an absolute number if fromXType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise. |
Specifies how toXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
Change in X coordinate to apply at the end of the animation. This value can either be an absolute number if toXType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise. |
Specifies how fromYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
Change in Y coordinate to apply at the start of the animation. This value can either be an absolute number if fromYType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise. |
Specifies how toYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
Change in Y coordinate to apply at the end of the animation. This value can either be an absolute number if toYType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise |
- package com.lenovo.wufl.translateanimationmenu;
- 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;
- import android.widget.TextView;
- public class TranslateAnimationMenuActivity extends Activity implements
- OnClickListener {
- private TextView mMenu;
- private Button mButton;
- private TranslateAnimation mShowAnimation;
- private TranslateAnimation mHideAnimation;
- private boolean isShow;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- initView();
- initAnimation();
- }
- private void initView() {
- mMenu = (TextView) findViewById(R.id.menu);
- mButton = (Button) findViewById(R.id.button);
- mButton.setOnClickListener(this);
- mMenu.setVisibility(View.GONE);
- isShow = false;
- }
- private void initAnimation() {
- // 从自已-1倍的位置移到自己原来的位置
- mShowAnimation = 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);
- mHideAnimation = 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);
- mShowAnimation.setDuration(500);
- mHideAnimation.setDuration(500);
- }
- @Override
- public void onClick(View v) {
- if (v.getId() == R.id.button) {
- if (isShow) {
- isShow = false;
- mMenu.startAnimation(mHideAnimation);
- mMenu.setVisibility(View.GONE);
- } else {
- isShow = true;
- mMenu.startAnimation(mShowAnimation);
- mMenu.setVisibility(View.VISIBLE);
- }
- }
- }
- }
布局:
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <TextView
- android:id="@+id/menu"
- android:layout_width="fill_parent"
- android:layout_height="68dp"
- android:background="@android:color/darker_gray"
- android:gravity="center"
- android:text="I am a menu"
- android:textColor="@android:color/background_dark" />
- <Button
- android:id="@+id/button"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:text="show/hide menu" />
- </RelativeLayout>