1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android 补间动画之平移动画TranslateAnimation

Android 补间动画之平移动画TranslateAnimation

时间:2019-05-13 00:26:12

相关推荐

Android 补间动画之平移动画TranslateAnimation

Android动画系列

博客导航:

1.介绍:

Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍。

2.属性

3.实现方式

3.1 xml方式

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android"android:duration="1000"><translateandroid:fromYDelta="0%p"android:toYDelta="80%p"/></set><!--duration :时间fromYDelta :动画开始点的Y轴坐标点,可以用三种方式表示:1.数字50,表示当前View左上角的Y轴坐标+50px。2.百分比50%,表示当前View的左上角Y轴坐标+此View的长度的50%。3.百分数p 50%p,当前View左上角Y轴坐标+父控件长度的50%。toYDelta :动画结束Y轴坐标。fromXDelta : 动画开始的X轴坐标。toXDelta :动画结束的X轴坐标。-->

3.2 代码方式实现

TranslateAnimation translateAnimation1 = new TranslateAnimation(0,0,0,1000);// 使用java代码的方式创建TranslateAnimation,传入六个参数,fromXType、fromXValue、toXType、toXValue和fromYType、fromYValue、toYType、toYValue,使用如下构造方法。// 参数说明:// fromXType:动画开始前的X坐标类型。取值范围为ABSOLUTE(绝对位置)、RELATIVE_TO_SELF(以自身宽或高为参考)、RELATIVE_TO_PARENT(以父控件宽或高为参考)。// fromXValue:动画开始前的X坐标值。当对应的Type为ABSOLUTE时,表示绝对位置;否则表示相对位置,1.0表示100%。// toXType:动画结束后的X坐标类型。// toXValue:动画结束后的X坐标值。// fromYType:动画开始前的Y坐标类型。// fromYValue:动画开始前的Y坐标值。// toYType:动画结束后的Y坐标类型。// toYValue:动画结束后的Y坐标值。translateAnimation1.setDuration(1000);translateAnimation1.setInterpolator(new DecelerateInterpolator());translate_img.startAnimation(translateAnimation1)

4.动画的监听事件

translateAnimation1.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {//动画开始}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束translate_img.clearAnimation();}@Overridepublic void onAnimationRepeat(Animation animation) {//动画重复}});

5.方法解释

6.案例实现

6.1 Activity的布局文件

<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:background="#fff"tools:context="com.menglong.animatordemo.translate.TranslateActivity"><include layout="@layout/titlr_layout"></include><Buttonandroid:background="#99ff0ff0"android:layout_marginTop="100px"android:id="@+id/translate_but"android:text="平移"android:layout_width="wrap_content"android:layout_height="wrap_content" /><ImageViewandroid:id="@+id/translate_img"android:layout_marginTop="100px"android:layout_centerHorizontal="true"android:src="@drawable/translate"android:layout_width="150px"android:layout_height="150px" /></RelativeLayout>

6.2 Activity代码实现

package com.menglong.animatordemo.translate;import android.os.Bundle;import android.view.View;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.view.animation.DecelerateInterpolator;import android.view.animation.Interpolator;import android.view.animation.TranslateAnimation;import android.widget.Button;import android.widget.ImageView;import com.menglong.animatordemo.R;import com.menglong.animatordemo.base.BaseActivity;public class TranslateActivity extends BaseActivity implements View.OnClickListener {private ImageView translate_img;private Animation translateAnimation;private Button translate_but;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_translate);initView();}private void initView() {super.initTitle("平移动画");translate_img = (ImageView) findViewById(R.id.translate_img);translateAnimation = AnimationUtils.loadAnimation(this, R.anim.translate_anim);// Interpolator interpolator = new LinearInterpolator();//匀速// Interpolator interpolator = new AccelerateInterpolator();//先慢后快// Interpolator interpolator = new AnticipateInterpolator();//开始回弹效果// Interpolator interpolator = new BounceInterpolator();//结束回弹效果// Interpolator interpolator = new CycleInterpolator(2);//跳一跳效果// Interpolator interpolator = new OvershootInterpolator(1);//动画结束时向前弹一定距离再回到原来位置// Interpolator interpolator = new AccelerateDecelerateInterpolator();//系统默认的动画效果,先加速后减速// Interpolator interpolator = new AnticipateOvershootInterpolator();//开始之前向前甩,结束的时候向后甩Interpolator interpolator = new DecelerateInterpolator();//开始加速再减速translateAnimation.setInterpolator(interpolator);translate_but = (Button) findViewById(R.id.translate_but);translate_but.setOnClickListener(this);}@Overridepublic void onClick(View view) {switch (view.getId()) {case R.id.translate_but://translate_img.startAnimation(translateAnimation);code();break;default:break;}}//代码实现方式private void code(){TranslateAnimation translateAnimation1 = new TranslateAnimation(0,0,0,1000);// 使用java代码的方式创建TranslateAnimation,传入六个参数,fromXType、fromXValue、toXType、toXValue和fromYType、fromYValue、toYType、toYValue,使用如下构造方法。// 参数说明:// fromXType:动画开始前的X坐标类型。取值范围为ABSOLUTE(绝对位置)、RELATIVE_TO_SELF(以自身宽或高为参考)、RELATIVE_TO_PARENT(以父控件宽或高为参考)。// fromXValue:动画开始前的X坐标值。当对应的Type为ABSOLUTE时,表示绝对位置;否则表示相对位置,1.0表示100%。// toXType:动画结束后的X坐标类型。// toXValue:动画结束后的X坐标值。// fromYType:动画开始前的Y坐标类型。// fromYValue:动画开始前的Y坐标值。// toYType:动画结束后的Y坐标类型。// toYValue:动画结束后的Y坐标值。translateAnimation1.setDuration(1000);translateAnimation1.setInterpolator(new DecelerateInterpolator());translate_img.startAnimation(translateAnimation1);translateAnimation1.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {//动画开始}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束translate_img.clearAnimation();}@Overridepublic void onAnimationRepeat(Animation animation) {//动画重复}});}}

6.3 translat_anim.xml

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="/apk/res/android"android:duration="1000"><translateandroid:fromYDelta="0%p"android:toYDelta="80%p"/></set>

7.案例效果展示

8.项目地址

/SunMengLong/AnimatorDemo

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。