2014-11-6Android学习------布局处理(九)animation动画的属性解释--------动画Animation学习篇
写一篇文章很辛苦啊!!!转载请注明,联系请邮件nlp30508@qq.com我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜就知道很多下载的地方 网上源码的名字叫:activity切换特效.zip 我的博客写的比较乱,如果本篇文章没有看懂,请先看上篇文章,地址:http://blo
写一篇文章很辛苦啊!!!
转载请注明,联系请邮件nlp30508@qq.com
我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜就知道很多下载的地方 网上源码的名字叫:activity切换特效.zip 我的博客写的比较乱,如果本篇文章没有看懂,
请先看上篇文章,地址:http://blog.csdn.net/u014737138/article/details/40859913
关于动画我们先要了解一些知识点:
在XML文件中:
alpha 渐变透明度渐变效果
scale 渐变尺寸伸缩渐变效果
translate 画面转换位置移动渐变效果
rotate 画面转移旋转渐变效果
关于动画的类:
1 AlphaAnimation //渐变透明度渐变效果
2 ScaleAnimation //渐变尺寸伸缩渐变效果
3 TranslateAnimation //画面转换位置移动渐变效果
4 RotateAnimation // 画面转移旋转渐变效果
activity切换效果有哪些呢?主要指的是当前的activity以一种什么样的形式展现在用户的面前,就像我们做PPT的时候图片会以各种方式出现,有下面这几种:
一。arrays.xml文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="anim_type">
<item>淡入淡出效果</item>
<item>放大淡出效果</item>
<item>转动淡出效果1</item>
<item>转动淡出效果2</item>
<item>左上角展开淡出效果</item>
<item>压缩变小淡出效果</item>
<item>右往左推出效果</item>
<item>下往上推出效果</item>
<item>左右交错效果</item>
<item>放大淡出效果</item>
<item>缩小效果</item>
<item>上下交错效果</item>
</string-array>
</resources>
二。每种形式我们都可以定义在xml文件中:
<?xml version="1.0" encoding="utf-8"?>
<!-- android:duration="@android:integer/config_longAnimTime" -->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0"
android:duration="2000" />
属性解释:
<!-- 透明度控制动画效果 alpha
浮点型值:
fromAlpha 属性为动画起始时透明度
toAlpha 属性为动画结束时透明度
说明:
0.0表示完全透明
1.0表示完全不透明
以上值取0.0-1.0之间的float数据类型的数字
长整型值:
duration 属性为动画持续时间
说明:
时间以毫秒为单位
-->
<!-- android:interpolator
Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画有这几种效果:
accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
-->
interpolator 指定一个动画的插入器
accelerate_decelerate_interpolator加速-减速 动画插入器
accelerate_interpolator加速-动画插入器
decelerate_interpolator减速- 动画插入器
淡入淡出效果:alpha: 淡出(alpha_out)和淡入(alpaha_in)
<?xml version="1.0" encoding="utf-8"?>
<!-- android:duration="@android:integer/config_mediumAnimTime" -->
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha android:fromAlpha="1.0" android:toAlpha="0" android:duration="2000"/>
</set>
翻转:(转动)scale:
<?xml version="1.0" encoding="utf-8"?>
<!-- android:duration="@android:integer/config_mediumAnimTime" -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0" android:toXScale="1.4" android:fromYScale="0.0"
android:toYScale="1.4" android:pivotX="50%" android:pivotY="50%"
android:fillAfter="false" android:duration="2000" />
</set>
属性解释:
<!--
fromXScale 起始时x坐标的尺寸,设置为1.0说明是整个图片x轴的长度
toXScale 结束时x坐标的尺寸,设置为0.0说明整个图片x轴完全收缩到无
fromYScale 起始时y坐标的尺寸,设置为1.0说明是整个图片y轴的长度
toYScale 结束时y坐标的尺寸,设置为1.0说明是在收缩时y轴的长度保持不变
那么他们的变化都是先对于某一点来变化的,因此pivotX和pivotY就是确定这个点的位置。
在一个数轴上(原点为图片的左上角,x轴和y轴的射线分别是向右和向下):
pivotX="50%" 说明是以图片本身的一半作为x轴的坐标;
pivotY="50%" 说明是以图片本身的一半作为y轴的坐标;
所以圆心点的坐标就是(0.5x,0.5y)。(x y是原图片的长和高)
此效果就是以这个点的y轴为轴,x轴不断减小到0。
duration 是设置的动画执行时间
-->
rotate:
<?xml version="1.0" encoding="utf-8"?>
<!-- android:duration="@android:integer/config_mediumAnimTime" -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0"
android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%"
android:duration="2000" android:repeatCount="0" android:startOffset="20"></scale>
<rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0" android:toDegrees="+355" android:pivotX="50%"
android:pivotY="50%" android:duration="2000" />
</set>
属性解释:
<!--
fromDegrees 为动画起始时物件的角度 说明
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
pivotX
pivotY 为动画相对于物件的X、Y坐标的开始位
属性值说明:50%为物件的X或Y方向坐标上的中点位置,相对于自身。”50“代表绝对位置,“50%p”这代表相对于父控件来说。
-->
定义三种效果放在一起:
<?xml version="1.0" encoding="utf-8"?>
<!-- android:duration="@android:integer/config_mediumAnimTime" -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0"
android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%"
android:duration="2000"></scale>
<translate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="120" android:toXDelta="30" android:fromYDelta="30"
android:toYDelta="250" android:duration="2000" />
<rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0" android:toDegrees="+355" android:pivotX="50%"
android:pivotY="50%" android:duration="2000" />
</set>
属性translate解释:
fromXDelta 为动画起始时 X坐标上的位置
toXDelta 为动画结束时 X坐标上的位置
fromYDelta 为动画起始时 Y坐标上的位置
toYDelta 为动画结束时 Y坐标上的位置
两者结合:
<?xml version="1.0" encoding="utf-8"?>
<!-- android:duration="@android:integer/config_mediumAnimTime" -->
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
<scale android:interpolator="@android:res/anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0"
android:toYScale="1.0" android:pivotX="0" android:pivotY="0"
android:duration="2000" android:repeatCount="0" android:startOffset="0"></scale>
<translate android:fromXDelta="0" android:toXDelta="0"
android:fromYDelta="0" android:toYDelta="0" android:duration="2000" />
</set>
属性解释:android:startOffset
可以通过设置Animation的startOffset来控制Animation的运行顺序——同时或按顺序运行动画。默认情况下,Animation是同时开始的,但可以通过设置startOffset属性来指定动画在*ms后开始运行。
<!--
Duration[long] 属性为动画持续时间 时间以毫秒为单位
fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用
interpolator 指定一个动画的插入器
repeatCount[int] 动画的重复次数
RepeatMode[int] 定义重复的行为 1:重新开始 2:plays backward
startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变 1:保持在最上层 -1:保持在最下层
-->
<?xml version="1.0" encoding="UTF-8"?>
<set android:interpolator="@android:anim/accelerate_interpolator"
xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:duration="2000"
android:fromYDelta="0.0" android:toYDelta="100.0%p" />
</set>
其他的就不再介绍了,可以使用这四种
alpha 渐变透明度渐变效果
scale 渐变尺寸伸缩渐变效果
translate 画面转换位置移动渐变效果
rotate 画面转移旋转渐变效果
组合得出自己要的那种效果就可以了。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)