直接上代码:

1、VISIBLE动画

TranslateAnimation showAnim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 1.0f,
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, 0.0f);
showAnim.setDuration(500);
view.startAnimation(showAnim);
view.setVisibility(View.VISIBLE);

2、GONE动画

TranslateAnimation hideAnim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, 1.0f,

Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, 0.0f);

hideAnim.setDuration(500);

view.startAnimation(hideAnim);

view.setVisibility(View.GONE);


这里,最重要的是TranslateAnimation,进入这个构造函数:

/**

* Constructor to use when building a TranslateAnimation from code

*

* @param fromXType Specifies how fromXValue should be interpreted. One of

* Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or

* Animation.RELATIVE_TO_PARENT.

* @param 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.

* @param toXType Specifies how toXValue should be interpreted. One of

* Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or

* Animation.RELATIVE_TO_PARENT.

* @param 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.

* @param fromYType Specifies how fromYValue should be interpreted. One of

* Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or

* Animation.RELATIVE_TO_PARENT.

* @param 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.

* @param toYType Specifies how toYValue should be interpreted. One of

* Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or

* Animation.RELATIVE_TO_PARENT.

* @param 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.

*/

public TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue,

int fromYType, float fromYValue, int toYType, float toYValue) {

mFromXValue = fromXValue;

mToXValue = toXValue;

mFromYValue = fromYValue;

mToYValue = toYValue;

mFromXType = fromXType;

mToXType = toXType;

mFromYType = fromYType;

mToYType = toYType;

}

可以看到,这个构造函数主要是传入设置起始点坐标(x,y)、终点坐标(x,y),每个坐标值对应一个类型type。

Animation.RELATIVE_TO_SELF代表着坐标以当前view为基准。

0.0f即0%,代表view初始位置坐标;

1.0f即100%,代表以view初始位置为原点,相应x坐标/y坐标增加父宽度/父高度的100%;

TranslateAnimation showAnim = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 1.0f,

Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, 0.0f);

表示从(1.0f,0.0f)移动到(0.0f,0.0f),即view从屏幕右侧不可见区域移动到初始位置,符合VISIBLE效果。

new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, 1.0f,

Animation.RELATIVE_TO_SELF, 0.0f,

Animation.RELATIVE_TO_SELF, 0.0f);

表示从(0.0f,0.0f)移动到(1.0f,0.0f),即view从初始位置移动到屏幕右侧不可见区域,符合GONE效果。