时间:2016-08-03 来源:

Android动画效果之TweenAnimation(补间动画)(一)

前言:

    最近公司项目下个版本迭代里面设计了很多动画效果div+css+js切图,在以往的项目中开发中也会经常用到动画,div+css+js切图所以在公司下个版本迭代开始之前页面div重构,抽空总结一下Android动画.今天主要总结Tween Animation(补间动画).

Tween Animation(补间动画):

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

 

动画类型 XML配置方式 Java代码实现方式
渐变透明度动画效果 <alpha/> AlphaAnimation
渐变尺寸缩放动画效果 <scale/> ScaleAnimation
画面旋转动画效果 <rotate/> RotateAnimation
画面位置移动动画效果 <translate/> TranslateAnimation
组合动画效果 <set/> AnimationSet

具体如何实现:

1.)alpha渐变透明度动画效果

 xml方式:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fillAfter="false"
    android:fromAlpha="1.0"
    android:toAlpha="0.0" />

fromAlpha:开始时透明度
toAlpha: 结束时透明度
duration:动画持续时间
fillAfter:设置动画结束后保持当前的位置

XML方式加载方式通过AnimationUtils.loadAnimation(this, R.anim.anim_alpha); imageView.startAnimation(alphaAnimation);

Java代码方式:

  Animation alphaAnimation = new AlphaAnimation(1.0f,fromYDelta 起始时X,Y座标,div页面屏幕右下角的座标是X:320, toYDelta     动画结束时X,fromYScale,Y的缩放web外包,0.0为不显示,web外包  1.0为正常大小
toXScale, 动画最终缩放的倍数div+css+js切图, 1.0为正常大小,网页重构报价大于1.0放大
pivotX, pivotY 动画起始位置,承接网站前端相对于屏幕的百分比psd切图html, 动画多次执行的间隔时间web外包,如果只执行一次,div切图排版执行前会暂停这段时间网页切图制作,一次动画效果消耗的时间div+css+js切图,单位毫秒,div+css+js切图值越小动画速度越快
repeatCount,动画重复的计数,页面div重构动画将会执行该值+1次
repeatMode,动画重复的模式,手机div+cssreverse为反向web外包,当第偶次执行时,web外包动画方向会相反.restart为重新执行网页切图制作, 1.5f, 1.5f, 0.5f, 0.5f); scaleAnimation.setDuration(500);//设置动画持续时间为500毫秒 scaleAnimation.setFillAfter(true);//如果fillAfter的值为true,则动画执行后,web外包控件将停留在执行结束的状态 scaleAnimation.setFillBefore(false);//如果fillBefore的值为true,则动画执行后,网页切图制作控件将回到动画执行之前的状态 scaleAnimation.setRepeatCount(3);//设置动画循环次数 scaleAnimation.setRepeatMode(Animation.REVERSE); scaleAnimation.setStartOffset(0); scaleAnimation.setInterpolator(this, android.R.anim.decelerate_interpolator);//设置动画插入器 imageView.startAnimation(scaleAnimation);

3.)rotate画面旋转动画效果

xml方式:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromDegrees="0"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="-360" />

fromDegrees 动画开始时的角度
toDegrees 动画结束时物件的旋转角度,网页重构报价正代表顺时针
pivotX 属性为动画相对于物件的X坐标的开始位置
pivotY 属性为动画相对于物件的Y坐标的开始位置

Java方式:

Animation rotateAnimation = new RotateAnimation(0, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF, android.R.anim.accelerate_decelerate_interpolator);//设置动画插入器
imageView.startAnimation(rotateAnimation);

4.)translate画面位置移动动画效果

xml方式:

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="500"
    android:fromXDelta="100"
    android:fromYDelta="0"
    android:interpolator="@android:anim/cycle_interpolator"
    android:toXDelta="0"
    android:toYDelta="0" />

fromXDelta,Y座标div+css+js切图,Y:480
toXDelta,Y的座标

Java方式

Animation translateAnimation = new TranslateAnimation(0, 0, android.R.anim.cycle_interpolator);//设置动画插入器
translateAnimation.setFillAfter(true);//设置动画结束后保持当前的位置(即不返回到动画开始前的位置)
imageView.startAnimation(translateAnimation);

5.)set组合动画效果

xml方式:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

    <scale
        android:duration="500"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="1"
        android:repeatMode="reverse"
        android:startOffset="0"
        android:toXScale="1.5"
        android:toYScale="1.5" />
</set>

如何使用

   AnimationSet animationSet = (AnimationSet) AnimationUtils.loadAnimation(this, 0.1f);
alphaAnimation.setDuration(500);//设置动画持续时间为500毫秒

Animation scaleAnimation = new ScaleAnimation(0.0f, 0.0f, Animation.RELATIVE_TO_SELF, Animation.RELATIVE_TO_SELF, android.R.anim.decelerate_interpolator);//设置动画插入器

animationSet.addAnimation(alphaAnimation);
animationSet.addAnimation(scaleAnimation);

imageView.startAnimation(animationSet);

几种自带的动画插入器

AccelerateInterpolator 加速网页切图制作,开始时慢中间加速

DecelerateInterpolator 减速,网页切图制作开始时快然后减速

AccelerateDecelerateInterolator 先加速后减速div+css+js切图,开始结束时慢,网页重构报价中间加速

AnticipateInterpolator 反向承接网站前端,先向相反方向改变一段再加速播放

AnticipateOvershootInterpolator 反向加超越,承接网站前端先向相反方向改变psd切图html,再加速播放,手机div+css会超出目的值然后缓慢移动至目的值

BounceInterpolator 跳跃web外包,快到目的值时值会跳跃,div切图排版如目的值100,77,80,100

CycleIinterpolator 循环psd切图html,动画循环一定次数,手机div+css值的改变为一正弦函数:Math.sin(2* mCycles* Math.PI* input)

LinearInterpolator 线性web外包,线性均匀改变

OvershottInterpolator超越,web外包最后超出目的值然后缓慢改变到目的值

以上几种示例具体效果展示:

点击次数:6411
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日AndroidStudio导入开源类库 【移动开发】2015年08月03日FZU1775CountingBinaryTrees卡特兰数前n项和%m(m可为非素数【综合】2014年12月01日【leetcode】Combinations 【综合】2014年12月29日PS制作一把真实的尺子2014年01月28日Cocos2d-x学习笔记(一)【移动开发】2014年12月12日EF总结--EF简介 【移动开发】2014年12月01日数据库小工具整合版【Web前端】2015年07月29日salesforce零基础学习(三十七)DML及Database方法简单描述2016年07月14日textview跑马灯【架构设计】2015年05月25日清华大学出版的事半功倍系列javascript全部源代码2014年01月29日趣味数组(一) 【综合】2015年08月05日关于JSP中的offsetparent2014年01月28日LogProcessingWithStorm【编程语言】2014年12月11日Android更换皮肤解决方案 【移动开发】2015年06月05日让Asp.NET的DataGrid可排序、可选择、可分页2014年01月29日NOIP2015提高组Day1Message2016年11月08日ASP.net入门知识 【移动开发】2015年08月31日高性能TCPUDP通信框架HP-Socketv3.5.2发布 ,,2016年07月24日apache日志配置一例2014年01月30日rac_第二个节点重启后无法启动实例:磁盘组dismount问题 【云计算】2014年11月27日JSONObject.fromObject()报java.lang.IllegalArgumentException异常 【编程语言】2015年05月20日在windows下安装redmine及相关问题 【互联网】2014年11月06日淳邓乐垂妆温萄捌 【编程语言】2014年11月11日php抽奖小程序的实现代码2014年01月29日Windows下ElasticSearch及相关插件的安装【云计算】2015年08月24日HDUACM1181变形课 【编程语言】2015年03月16日javascript小技巧超强推荐2014年01月29日leetcode153:FindMinimuminRotatedSortedArray【架构设计】2015年01月04日javaservletjsp随机验证码2014年01月28日Android中对datadata<packagename>files下文件操作 【编程语言】2015年01月19日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)