要实现的效果如图:

android TranslateAnimation…_ide

代码很简单,主要是TranslateAnimation类的

publicTranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)

Constructor to use when building a TranslateAnimation from code

Parameters

fromXType

Specifies how fromXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.

fromXValue

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.

toXType

Specifies how toXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.

toXValue

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.

fromYType

Specifies how fromYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.

fromYValue

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.

toYType

Specifies how toYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT.

toYValue

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

代码如下:

    1. package com.lenovo.wufl.translateanimationmenu;  
    2.  
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.View;  
    6. import android.view.View.OnClickListener;  
    7. import android.view.animation.Animation;  
    8. import android.view.animation.TranslateAnimation;  
    9. import android.widget.Button;  
    10. import android.widget.LinearLayout;  
    11. import android.widget.TextView;  
    12.  
    13. public class TranslateAnimationMenuActivity extends Activity implements  
    14.        OnClickListener {  
    15.    private TextView mMenu;  
    16.    private Button mButton;  
    17.    private TranslateAnimation mShowAnimation;  
    18.    private TranslateAnimation mHideAnimation;  
    19.    private boolean isShow;  
    20.  
    21.      
    22.    @Override  
    23.    public void onCreate(Bundle savedInstanceState) {  
    24.        super.onCreate(savedInstanceState);  
    25.        setContentView(R.layout.main);  
    26.  
    27.        initView();  
    28.        initAnimation();  
    29.    }  
    30.  
    31.    private void initView() {  
    32.        mMenu = (TextView) findViewById(R.id.menu);  
    33.        mButton = (Button) findViewById(R.id.button);  
    34.        mButton.setOnClickListener(this);  
    35.        mMenu.setVisibility(View.GONE);  
    36.        isShow = false;  
    37.    }  
    38.  
    39.    private void initAnimation() {  
    40.        // 从自已-1倍的位置移到自己原来的位置   
    41.        mShowAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,  
    42.                0.0f, Animation.RELATIVE_TO_SELF, 0.0f,  
    43.                Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF,  
    44.                0.0f);  
    45.        mHideAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,  
    46.                0.0f, Animation.RELATIVE_TO_SELF, 0.0f,  
    47.                Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,  
    48.                -1.0f);  
    49.        mShowAnimation.setDuration(500);  
    50.        mHideAnimation.setDuration(500);  
    51.  
    52.    }  
    53.  
    54.    @Override  
    55.    public void onClick(View v) {  
    56.        if (v.getId() == R.id.button) {  
    57.            if (isShow) {  
    58.                isShow = false;  
    59.                mMenu.startAnimation(mHideAnimation);  
    60.                mMenu.setVisibility(View.GONE);  
    61.            } else {  
    62.                isShow = true;  
    63.                mMenu.startAnimation(mShowAnimation);  
    64.                mMenu.setVisibility(View.VISIBLE);  
    65.            }  
    66.        }  
    67.    }  
    68. }