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"?>
<set xmlns:android="http://schemas.android.com/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.方法解释

setInterpolator设置插值器解释
LinearInterpolator 匀速
AccelerateInterpolator 先减速后加速
AnticipateInterpolator 动画开始之前有回弹效果
BounceInterpolator 结束回弹效果
CycleInterpolator 跳一跳效果
OvershootInterpolator 动画结束时向前弹一定距离再回到原来位置
AccelerateDecelerateInterpolator 系统默认的动画效果,先加速后减速
AnticipateOvershootInterpolator 开始之前向前甩,结束的时候向后甩
DecelerateInterpolator 开始加速再减速

6.案例实现

6.1 Activity的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/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="http://schemas.android.com/apk/res/android"android:duration="1000"><translateandroid:fromYDelta="0%p"android:toYDelta="80%p"/>
</set>

7.案例效果展示

8.项目地址

https://github.com/SunMengLong/AnimatorDemo

Android 补间动画之平移动画TranslateAnimation相关推荐

  1. Android平移补间动画,Android 补间动画之平移动画TranslateAnimation

    Android动画系列 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 duration 时间 f ...

  2. android image 位移动画_「translateanimation」Android 补间动画之平移动画TranslateAnimation - seo实验室...

    translateanimation 博客导航: 1.介绍: Android补间动画之平移动画,在实际的开发过程中,其实有好多地方需要用到平移动画,这是对于平移动画的简单介绍. 2.属性 durati ...

  3. android 动画多次使用,Android动画使用(二)——补间(View)动画

    1.Android动画简介 1.1 分类 Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类: Drawable Animation: 这种动画(也叫Fr ...

  4. Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法

    补间(Tween)动画 Android 使用Animation代抽象的动画类,它包括如下几个子类. AlphaAnimation:透明度改变的动画.创建该动画时要指定动画开始时的透明度.结束时的透明度 ...

  5. Android 补间动画(Tween Animation)

    Tween Animation(补间动画): Tween动画,通过对View的内容进行一系列的图形变换 (包括平移.缩放.旋转.改变透明度)来实现动画效果.动画效果的定义可以采用XML来做也可以采用编 ...

  6. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  7. Android补间动画笔记

    布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  8. android 属性动画 补间动画,每日一道面试题(第7期)---Android补间动画与属性动画的区别...

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  9. Android补间动画

    概述 本篇博客基于<Android开发艺术探索>,将会介绍以下两种动画: 补间动画 帧动画 事实上帧动画也是补间动画的一种,但是它们的使用方式略有不同,所以将它们分开介绍. 一.补间动画 ...

  10. Android 补间动画

    补间动画使用很简单,几行代码便能实现效果,上图上代码: xml很简单,不用说,先给每个按钮加上点击监听 findViewById(R.id.rotateBtn).setOnClickListener( ...

最新文章

  1. TEASER-plusplus 编译测试
  2. 三十五、深入Python的引用计数
  3. linux内核编译与内核模块
  4. 【渝粤题库】广东开放大学 英语语法与基础写作 形成性考核 (2)
  5. php文章远程图片,php实现异步将远程链接上内容(图片或内容)写到本地的方法
  6. 最好的网页浏览器_如何实现整个网页的完整截图
  7. 计算机毕业设计Java物料生产管理系统(源码+系统+mysql数据库+Lw文档)
  8. 北京邮电大学计算机考研经验分享
  9. windows事件查看器
  10. Google 人机验证(reCaptcha)无法显示解决方案
  11. 【python】批量压缩文件夹
  12. matlab 2014b 图像,使用Matlab 2014b的锯齿状轮廓
  13. 大数据资源争夺战此起彼伏,对用户而言是福是祸
  14. OCR 图像智能字符识别技术
  15. php本地安装mysql报错443_Mysql性能剖析工具--Anemometer部署
  16. Debian内核防毒AntiVir安装
  17. 关于TVS管符号,看完这篇你就懂了!
  18. 百度智能云牵手中国跳水队,体育和AI正在酝酿新化学反应
  19. Windows10清空剪贴板
  20. 猎杀对决计算机丢失进不去,猎杀对决代码错误怎么解决 无法进入游戏解决方法...

热门文章

  1. 小白系统初始化配置资源失败怎么办
  2. matlab7.0官方下载64位win10,window10下MATLAB 7.0下载及安装
  3. 良品铺子的2021:营收创新高后的“战术调整”
  4. 【PID控制与模糊PID控制的比较】(带仿真和代码链接)
  5. java语言介绍以及各个编程语言特点
  6. 歌声合成系列教程《1》
  7. Java IO流使用过程中乱码问题总结
  8. verilog语法记录(一)
  9. liunx下用xshell实现 密钥 + 密码 登录
  10. haversine根据经纬度算距离