前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2014-11-6Android学习------布局处理(九)animation动画的属性解释--------动画Animation学习篇

2014-11-6Android学习------布局处理(九)animation动画的属性解释--------动画Animation学习篇

作者头像
wust小吴
发布2022-03-07 14:11:28
2910
发布2022-03-07 14:11:28
举报
文章被收录于专栏:风吹杨柳风吹杨柳

我学习Android都是结合源代码去学习,这样比较直观,非常清楚的看清效果,觉得很好,今天的学习源码是网上找的源码 百度搜就知道很多下载的地方 网上源码的名字叫:activity切换特效.zip 我的博客写的比较乱,如果本篇文章没有看懂,

请先看上篇文章,地址:http://blog.csdn.net/u014737138/article/details/40859913

关于动画我们先要了解一些知识点:

代码语言:javascript
复制
在XML文件中:
  alpha         渐变透明度渐变效果
  scale          渐变尺寸伸缩渐变效果
  translate    画面转换位置移动渐变效果
  rotate        画面转移旋转渐变效果

关于动画的类:

代码语言:javascript
复制
1 AlphaAnimation          //渐变透明度渐变效果
2 ScaleAnimation          //渐变尺寸伸缩渐变效果
3 TranslateAnimation    //画面转换位置移动渐变效果
4 RotateAnimation       // 画面转移旋转渐变效果

activity切换效果有哪些呢?主要指的是当前的activity以一种什么样的形式展现在用户的面前,就像我们做PPT的时候图片会以各种方式出现,有下面这几种:

一。arrays.xml文件

代码语言:javascript
复制
<?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文件中:

代码语言:javascript
复制
<?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" />

属性解释:

代码语言:javascript
复制
<!-- 透明度控制动画效果 alpha
        浮点型值:
        fromAlpha 属性为动画起始时透明度
        toAlpha   属性为动画结束时透明度
        说明: 
        0.0表示完全透明
        1.0表示完全不透明
                     以上值取0.0-1.0之间的float数据类型的数字
        
        长整型值:
        duration  属性为动画持续时间
        说明:     
                     时间以毫秒为单位
-->
代码语言:javascript
复制
<!-- android:interpolator
   Interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画有这几种效果:

accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator  在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator   动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator   以常量速率改变
OvershootInterpolator    向前甩一定值后再回到原来位置

-->
代码语言:javascript
复制
interpolator		指定一个动画的插入器
accelerate_decelerate_interpolator加速-减速 动画插入器
accelerate_interpolator加速-动画插入器
decelerate_interpolator减速- 动画插入器	

淡入淡出效果:alpha: 淡出(alpha_out)和淡入(alpaha_in)

代码语言:javascript
复制
<?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>
代码语言:javascript
复制
翻转:(转动)scale:
代码语言:javascript
复制
<?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>

属性解释:

代码语言:javascript
复制
<!--
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:

代码语言:javascript
复制
<?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>

属性解释:

代码语言:javascript
复制
<!--
fromDegrees	为动画起始时物件的角度	说明
					当角度为负数——表示逆时针旋转
					当角度为正数——表示顺时针旋转
					(负数from——to正数:顺时针旋转)
					(负数from——to负数:逆时针旋转)
					(正数from——to正数:顺时针旋转)
					(正数from——to负数:逆时针旋转)
toDegrees	属性为动画结束时物件旋转的角度 可以大于360度
pivotX
pivotY	为动画相对于物件的X、Y坐标的开始位	
属性值说明:50%为物件的X或Y方向坐标上的中点位置,相对于自身。”50“代表绝对位置,“50%p”这代表相对于父控件来说。
-->

定义三种效果放在一起:

代码语言:javascript
复制
<?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解释:

代码语言:javascript
复制
fromXDelta	为动画起始时 X坐标上的位置
toXDelta	为动画结束时 X坐标上的位置	
fromYDelta	为动画起始时 Y坐标上的位置
toYDelta	为动画结束时 Y坐标上的位置

两者结合:

代码语言:javascript
复制
<?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后开始运行。

代码语言:javascript
复制
<!--
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:保持在最下层
-->
代码语言:javascript
复制
<?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>

其他的就不再介绍了,可以使用这四种

代码语言:javascript
复制
  alpha         渐变透明度渐变效果
  scale          渐变尺寸伸缩渐变效果
  translate    画面转换位置移动渐变效果
  rotate        画面转移旋转渐变效果

组合得出自己要的那种效果就可以了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档