Android里的动画(补间动画,帧动画,属性动画)

Android动画的学习

常见的动画分为:

-补间动画
-帧动画
- 属性动画


学完这个分享自己项目一个简单的动画:

这里写图片描述

转场动画:这个是谷歌提供的样式!下面自己模仿了一下。
这里写图片描述

模仿谷歌设计来自己做了一个。
这里写图片描述

一补间动画:

对于学过flash动画的人来说补间动画很好理解的,因为动画开始和结尾的中间过程都是假象,是渲染出来的表象,只是显示的位置变动,View的实际位置未改变,表现为View移动到其他地方,点击事件仍在原处才能响应。

补间动画由Animation类来实现具体效果,包括平移(TranslateAnimation)、缩放(ScaleAnimation)、旋转(RotateAnimation)、透明度(AlphaAnimation)四个子类。

实现:

补间动画在android里面支持xml来设置或者java代码设置。
常见的布局动画类如下:

TranslateAnimation
translate属性 TranslateAnimation 含义
android:fromXDelta TranslateAnimation translateAnimation=TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta); 平移起点X坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点50%表示以当前View的左上角加上当前View宽高的50%做为初始点50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:fromYDelta 同上 同理fromXDelta
android:toXDelta 同上 平移终点X坐标(数值、百分数、百分数p,譬如50表示以当前View左上角坐标加50px为初始点50%表示以当前View的左上角加上当前View宽高的50%做为初始点50%p表示以当前View的左上角加上父控件宽高的50%做为初始点)
android:toYDelta 同上 同上
android:fillAfter translateAnimation.setFillAfter(true); 动画显示结束保持最后一帧
android:duration translateAnimation.setDuration(3000); 动画执行的时间
android:repeatCount translateAnimation.setRepeatCount(TranslateAnimation.INFINITE); 动画执行的次数可以是整数或者infinite为无限循环执行动画

使用如下:

translate.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="100%"
    android:toYDelta="-100%"
    android:fillAfter="true"
    android:duration="1000"
    >

</translate>
AlphaAnimation
Alpha属性 AlphaAnimation 含义
android:fromAlpha AlphaAnimation alphaAnimation=new AlphaAnimation(float fromAlpha, float toAlpha); 是View视图起始透明度,透明度是0-1
android:toAlpha 同上 结束时的透明度
android:fillAfter alphaAnimation.setFillAfter(true); 动画显示结束保持最后一帧
android:duration alphaAnimation.setDuration(3000); 动画执行的时间
android:repeatCount alphaAnimation.setRepeatCount(TranslateAnimation.INFINITE); 动画执行的次数可以是整数或者infinite为无限循环执行动画

使用如下:

alpha.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1"
    android:toAlpha="0.5"
    android:fillAfter="true"
    android:duration="3000"
    >

</alpha>
RotateAnimation
RotateAnimation 属性 RotateAnimation 含义
android:fromDegrees RotateAnimation rotateAnimation=RotateAnimation(float fromDegrees, float toDegrees); 是View视图起始角度
android:toDegrees 同上 结束时的角度
android:fillAfter rotateAnimation.setFillAfter(true); 动画显示结束保持最后一帧
android:duration rotateAnimation.setDuration(3000); 动画执行的时间
android:repeatCount rotateAnimation.setRepeatCount(TranslateAnimation.INFINITE); 动画执行的次数可以是整数或者infinite为无限循环执行动画

使用如下:

rotate.xml
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="90"
    android:fillAfter="true"
    android:duration="3000"
    >

</rotate>
ScaleAnimation
ScaleAnimation属性 ScaleAnimation 含义
android:fromXScale ScaleAnimation scaleAnimation=ScaleAnimation(float fromX, float toX, float fromY, float toY) 这个相信能看懂。
android:toXScale 同上 结束时的位置
android:fillAfter scaleAnimation.setFillAfter(true); 动画显示结束保持最后一帧
android:duration scaleAnimation.setDuration(3000); 动画执行的时间
android:repeatCount scaleAnimation.setRepeatCount(TranslateAnimation.INFINITE); 动画执行的次数可以是整数或者infinite为无限循环执行动画

使用如下:

scale .xml
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="0.5"
    android:toXScale="1"
    android:fromYScale="0.5"
    android:toYScale="1"
    android:fillAfter="true"
    android:duration="3000"
    >

</scale>
AnimationSet

当然了有动画集合这个类了。使用也是很简单的:

set.xml

<?xml version="1.0" enco
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值