TranslateAnimation:位移动画

同样,创建TranslateAnimation也有两种方式

  1. XML文件+Java代码
  2. Java代码方式

第一种方式:XML文件+Java代码

示例效果图:

语法:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillAfter="true"android:fillBefore="false"android:fromXDelta="0"android:fromYDelta="0"android:interpolator="@android:anim/linear_interpolator"android:repeatCount="-1"android:repeatMode="reverse"android:startOffset="2000"android:toXDelta="200%"android:toYDelta="0%"/>

Java加载XML代码

        TranslateAnimation translateAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(XmlViewAnimationActivity.this, R.anim.translate);mIvImg.startAnimation(scaleAnimation);
  • android:duration:动画持续时长
  • android:fillAfter:动画结束之后是否保持动画的最终状态;true,表示保持动画的最终状态
  • android:fillBefore:动画结束之后是否保持动画开始前的状态;true,表示恢复到动画开始前的状态
  • android:fromXDelta:动画开始时,在X轴方向上的位置;取值类型有三种:数字;百分比;百分比+”p”;
    • 数字:例如50.0,这里的单位是px像素
    • 百分比:例如50%,这里是相对于自己控件宽度的百分比,实际的值是mIvImg.getWidth()*50%;
    • 百分比+”p”:例如50%p,这里是表示相对于自己控件的父控件的百分比,
  • android:fromYDelta:动画开始时,在Y轴方向上的位置;取值类型同上
  • android:interpolator:动画插值器。是实现动画不规则运动的一种方式,后面讲到
  • android:repeatCount:动画重复的次数。指定动画重复播放的次数,如果你需要无限循环播放,请填写一个小于0的数值,我一般写-1
  • android:repeatMode:动画重复的Mode,有reverse和restart两种,效果看后面
  • android:startOffset:动画播放延迟时长,就是调用start之后延迟多少时间播放动画
  • android:toXDelta:动画移动在X轴的目标位置;取值类型和fromXDelta一样
  • android:toYDelta:动画移动在Y轴的目标位置;取值类型同上

位移的方向坐标,参考这张图

其他的参数都在前面讲过了, 这里不同的之后四个:
开始时的位置: android:fromXDelta/android:fromYDelta 和 目标位置: android:toXDelta/android:toYDelta

  • 取值类型有三种:数字;百分比;百分比+”p”;

    • 数字:例如50.0,这里的单位是px像素
    • 百分比:例如50%,这里是相对于自己控件宽度的百分比,实际的值是mIvImg.getWidth()*50%;
    • 百分比+”p”:例如50%p,这里是表示相对于自己控件的父控件的百分比,

这里拿:android:toXDelta/android:toYDelta来举例子

第一种:数字类型。表示的是px像素

当android:toXDelta=”100”,android:toYDelta=”0”

translate.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillAfter="true"android:fillBefore="false"android:fromXDelta="0"android:fromYDelta="0"android:interpolator="@android:anim/linear_interpolator"android:repeatCount="-1"android:repeatMode="reverse"android:startOffset="2000"android:toXDelta="200"android:toYDelta="200"/>

一个从初始控件的位置开始,一个在X轴移动200px像素的位移动画

第二种:百分数类型。表示相对于自己控件宽高的百分比

当android:toXDelta=”200%”, android:toYDelta=”0%”时;

translate.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillAfter="true"android:fillBefore="false"android:fromXDelta="0"android:fromYDelta="0"android:interpolator="@android:anim/linear_interpolator"android:repeatCount="-1"android:repeatMode="reverse"android:startOffset="2000"android:toXDelta="200%"android:toYDelta="0%"/>

一个以自己控件的位置为七点,向X轴方向移动自己控件宽度200%距离的位移动画

第三种:百分数+”p”。表示自己控件父控件的百分比

当android:toXDelta=”90%p”,andorid:toYDelta=”0%p”时,(这里写90%p是为了方便观看效果100%p就飘出屏幕了)

translate.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"android:duration="3000"android:fillAfter="true"android:fillBefore="false"android:fromXDelta="0"android:fromYDelta="0"android:interpolator="@android:anim/linear_interpolator"android:repeatCount="-1"android:repeatMode="reverse"android:startOffset="2000"android:toXDelta="90%p"android:toYDelta="0%p"/>

一个以自己控件的初始位置开始,向X轴方向移动它父控件宽度90%的位移动画,(因为现在这个图片的的父容器是整个屏幕)

同样android:toYDelta、android:fromXDelta、android:fromYDelta都可以这样设置参数,这里只是单独改变一个android:toXDelta来方便观看效果


Java代码方式创建动画

用XML文件的形式创建会提供设置TranslateAnimation相应的属性,同样Java代码也提供了相应的方法去设置

    public void startTranslateAnimation(View view) {/*** TranslateAnimation第一种构造** @param fromXDelta X方向开始的位置,取值类型是float,单位是px像素* @param toXDelta X方向结束的位置,取值类型是float,单位是px像素* @param fromYDelta Y方向开始的位置,同上* @param toYDelta Y方向结束的位置,同上*/TranslateAnimation translateAnimation = new TranslateAnimation(0, mIvImg.getWidth() * 2, 0, mIvImg.getHeight());/*** TranslateAnimation第二种构造 在第一种构造的基础上增加了,移动距离的取值方式,通过Type来约束** @param fromXType 用来约束pivotXValue的取值。取值有三种:Animation.ABSOLUTE,Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT* Type:Animation.ABSOLUTE:绝对,如果设置这种类型,后面pivotXValue取值就必须是像素点;比如:在X方向上移动自己宽度的距离,fromXValue的取值是mIvTranslate.getWidth()*            Animation.RELATIVE_TO_SELF:相对于控件自己,设置这种类型,后面pivotXValue取值就会去拿这个取值是乘上控件本身的宽度;比如:在X方向上移动自己宽度的距离,fromXValue的取值是1.0f*            Animation.RELATIVE_TO_PARENT:相对于它父容器(这个父容器是指包括这个这个做动画控件的外一层控件), 原理同上,* @param fromXValue 配合fromXType使用,原理在上面* @param toXType 原理同上* @param toXValue 原理同上* @param fromYType 原理同上* @param fromYValue 原理同上* @param toYType 原理同上* @param toYValue 原理同上*/TranslateAnimation translateAnimation1 = new TranslateAnimation(TranslateAnimation.ABSOLUTE, mIvImg.getWidth(), TranslateAnimation.ABSOLUTE, mIvImg.getWidth() * 2f, TranslateAnimation.RELATIVE_TO_SELF, 0f, TranslateAnimation.RELATIVE_TO_SELF, 0);//设置动画持续时长translateAnimation1.setDuration(3000);//设置动画结束之后的状态是否是动画的最终状态,true,表示是保持动画结束时的最终状态translateAnimation1.setFillAfter(true);//设置动画结束之后的状态是否是动画开始时的状态,true,表示是保持动画开始时的状态translateAnimation1.setFillBefore(true);//设置动画的重复模式:反转REVERSE和重新开始RESTARTtranslateAnimation1.setRepeatMode(ScaleAnimation.REVERSE);//设置动画播放次数translateAnimation1.setRepeatCount(ScaleAnimation.INFINITE);//开始动画mIvImg.startAnimation(translateAnimation1);//清除动画mIvImg.clearAnimation();//同样cancel()也能取消掉动画translateAnimation1.cancel();}

Android 动画 - TranslateAnimation位移动画相关推荐

  1. android偏移动画,Android新手开发之旅-Android动画之位移动画

    本帖最后由 liu 于 2018-12-27 16:02 编辑 TranslateAnimation位移动画 实现有两种方式: 一.xml+java代码 在res下新建anim文件夹,在res/ani ...

  2. Android 之 TranslateAnimation类:位移动画类(转载)

    原文链接:点击打开链接 ======================================================================================== ...

  3. [Android] android 实现加速小火箭动画效果 位移+透明渐变 动画

    [需求分析] 最近要实现一个类似于加速火箭移动的动画,需要带有位置移动和透明度转变的动画.类似于从A到B发生位移动画,且加速小火箭主键显示.而从B到C发生位移动画,且加速小火箭逐渐变暗消失.实现效果如 ...

  4. Android动画之视图动画和属性动画

    Android 动画分为两大类,分别是视图动画(View Animation)和属性动画(Property Animation).对于这两种动画,都能够使用xml和代码的形式定义动画. 注:布局动画相 ...

  5. 【Android】补间动画用法最全详解

    本文目录 补间动画概述和分类 各类补间动画实现 xml实现补间动画 透明度动画-AlphaAnimation 缩放动画-ScaleAnimation 位移动画-TranslateAnimation 旋 ...

  6. Android 一共有多少种动画?准确告诉你!

    Android 动画在开发中是不可或缺的功能,或者说是界面灵动的添加剂.那你是否总结过 Android 中总共为开发者提供了多少种方式的动画呢?今天就为大家总结归纳一下. 我话音未落,前排那位骚气不减 ...

  7. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...

  8. Unity3D游戏开发之使用Mecanim动画系统控制2D动画

    各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://blog.csdn.net/qinyuanpei.博主今天想和大家分享的是在Unity3D中使用Mecanim动画系统来 ...

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

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

  10. android image 位移动画_深入理解Android之动画

    Android 里动画从用途上讲,可以分为三类View Animation(View动画)又称 Tween Animation(补间动画).Drawable Animation(帧动画) 和 Prop ...

最新文章

  1. 【跨域报错解决方案】Access to XMLHttpRequest at ‘http://xxx.com/xxx‘ from origin ‘null‘ has been blocked by
  2. 第三课 查询指定id的单个对象
  3. ISIS 7 Professional仿真——键控流水灯
  4. 列举当前用户或指定用户的所有表,所有字段,以及所有约束
  5. Oracle 游标的各种写法
  6. 【OpenCV 例程200篇】61. 导向滤波(Guided filter)
  7. 微型计算机一般只具有定点运算功能对吗,大学计算机基础模拟卷2及答案剖析.doc...
  8. 1055. 集体照 (25)-PAT乙级真题
  9. 阿里旺旺垃圾消息分析及解决方案探讨
  10. 加拿大比索大学计算机科学硕士,来悉尼大学恍恍惚惚一年后,我给大家吐血整理了经验贴…....
  11. 【Hexo搭建个人博客】(八)添加背景效果(点击鼠标显示红心并浮现社会主义核心价值观)
  12. 计算机显示不支持此接口,为什么会提示“不支持此接口”?提示不支持此接口的解决方法...
  13. 小程序封装请求工具http.js
  14. 使用Kettle 进行行Oracle数据迁移时处理编码转换处理US7ASCII 编码
  15. maya之坐标轴与模型显示状态
  16. WOT 2017会议嘉宾名单提前看!
  17. Douyin-Bot 项目优化-改进,优化效率,本地cv2识别过滤
  18. CUDA_NVCC_FLAGS set
  19. [机缘参悟-86]:清心寡欲,世外修行 ?负剑下山,闯荡江湖?
  20. dSYM-如何获取dSYM UUID并快速定位到已发布程序的crash位置(二)

热门文章

  1. 拼多多大力发展“多多视频”业务
  2. qgridlayout 滚动时固定第一行_滚动轴承组合设计应考虑的问题
  3. 社区网格员计算机考试考什么,网格员考试内容是什么,网格员考试科目有哪些...
  4. talemu---蒙特卡洛仿真软件产品介绍
  5. jsp和jspx的区别
  6. Axure RP 9 使用详解视频教程-真实操作步骤
  7. 在Markdown中绘制思维导图
  8. vs2019 无法打开包括文件:“SDKDDKVer.h”: No such file or directory的另外一种解决思路
  9. 基于RetinaFace+ArcFace的人脸识别测试和验证代码
  10. iis启动服务时提示在本地计算机 无法启动iis admin服务,iis 依存服务和组没法启动...