Android(安卓)补间动画之平移动画TranslateAnimation
16lz
2021-01-26
Android动画系列
博客导航:
1.介绍:
Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍。
2.属性
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.实现方式
3.1 xml方式
<?xml version="1.0" encoding="utf-8"?>
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() { @Override public void onAnimationStart(Animation animation) { //动画开始 } @Override public void onAnimationEnd(Animation animation) { //动画结束 translate_img.clearAnimation(); } @Override public void onAnimationRepeat(Animation animation) { //动画重复 } });
5.方法解释
LinearInterpolator | 匀速 |
---|---|
AccelerateInterpolator | 先减速后加速 |
AnticipateInterpolator | 动画开始之前有回弹效果 |
BounceInterpolator | 结束回弹效果 |
CycleInterpolator | 跳一跳效果 |
OvershootInterpolator | 动画结束时向前弹一定距离再回到原来位置 |
AccelerateDecelerateInterpolator | 系统默认的动画效果,先加速后减速 |
AnticipateOvershootInterpolator | 开始之前向前甩,结束的时候向后甩 |
DecelerateInterpolator | 开始加速再减速 |
6.案例实现
6.1 Activity的布局文件
<?xml version="1.0" encoding="utf-8"?>
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; @Override protected 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); } @Override public 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() { @Override public void onAnimationStart(Animation animation) { //动画开始 } @Override public void onAnimationEnd(Animation animation) { //动画结束 translate_img.clearAnimation(); } @Override public void onAnimationRepeat(Animation animation) { //动画重复 } }); }}
6.3 translat_anim.xml
<?xml version="1.0" encoding="utf-8"?>
7.案例效果展示
8.项目地址
https://github.com/SunMengLong/AnimatorDemo
更多相关文章
- 如何实现Android应用的启动画面(闪屏)?
- android viewPager滑动速度设置
- Android(安卓)基于坐标的图形开发
- android imageview围绕中心旋转动画
- Lottie动画在Android和Ios开发中的应用——Android篇
- Android轻松搞定Dialog提示动画效果
- 【Android】Animation之震动效果动画在登录Activity上的应用
- Android变形(Transform)之Matrix用法
- android水波纹涟漪效果的实现 ---- 入门+初步提高