Android动画之移动缩放动画
最近写了一个移动缩小动画,故来记录一下,以防忘记。先上图——
主要代码:
/**
* 如果是从现在的位置移动到别的位置,那么初始XY的值都是0,向左边,那么结束X值就是 负数,向右则是正数,上下亦是如此
* 如果是从别的位置移动到现在的位置,那么结束XY的值都是0,其他的和上面一样
* @param fromX 初始X位置
* @param toX 结束X位置
* @param fromY 初始Y位置
* @param toY 结束Y位置
* @param time 动画时间
* @param view 控件
*/
private void setAnimation(float fromX,float toX,float fromY,float toY,long time,View view) {
/**位移动画*/
Animation mTranslateAnimation = new TranslateAnimation(fromX, toX,fromY, toY);
mTranslateAnimation.setDuration(time);
/** 缩放动画*/
Animation mScaleAnimation = new ScaleAnimation(1.0f, 0.5f, 1.0f, 0.5f,// 整个屏幕就0.0到1.0的大小//缩放
Animation.INFINITE, 0.5f,
Animation.INFINITE, 0.5f);
mScaleAnimation.setDuration(time);
/** 组合动画*/
AnimationSet mAnimationSet=new AnimationSet(false);
mAnimationSet.addAnimation(mScaleAnimation);
mAnimationSet.setFillAfter(true);//true 设置动画结束后,控件位置保持不动,false 则是返回初始位置
mAnimationSet.addAnimation(mTranslateAnimation);
view.startAnimation(mAnimationSet);
}
调用示例:
setAnimation(0, -(tvMove.getX()-tvTarget.getX()), 0, -(tvMove.getY()-tvTarget.getY()),1500,tvMove);
图例上的xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_target"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/base_color"
android:textColor="@color/white"
android:padding="@dimen/dimen10"
android:text="垃圾桶"
android:layout_marginLeft="@dimen/dimen10"
android:layout_marginTop="@dimen/dimen10"/>
<TextView
android:id="@+id/tv_move"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/base_color"
android:textColor="@color/white"
android:padding="@dimen/dimen10"
android:layout_centerInParent="true"
android:text="小纸条"/>
</RelativeLayout>