Android Animation 动画学习笔记

最近两天学了android 动画方面的知识,从一点不懂到自己研究确实有收获。

Animation 分为:

<alpha  /> 透明度渐变
<scale  /> 尺寸渐变
<translate  /> 位移动画
<rotate  /> 旋转动画      

在XML 和在JavaCode中都可以定义,方法分别为

XML中 javaCode中
<alpha  /> AlphAnimation
<scale  /> ScaleAnimation
<translate  /> TranslateAnimation
<rotate  /> RotateAnimation

在动画中,出现任何和坐标有关的数值,都是以刚开始动画的位置为参照位置画X、Y轴,如图:

最外面绿框代表手机屏幕;

 小黄人所处位置为定义位置,所以就以这个位置为参照位置,即原点;

 然后按箭头所指方向为X、Y轴正方向区分正负,即:上为负,下为正,左为负,右为正。

接下来分别解释

XML中:

(1)Alpha  透明度渐变动画

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android">
3     <alpha                                
4         android:duration="2000"
5         android:fromAlpha="0"
6         android:toAlpha="1.0"
7         />
8
9 </set>

在每种动画的开头都要以这种动画的<alpha   />开头和结尾,如上代码;其中的  fromAlpha : 开始透明度;    toAlpha  :  最终透明度;透明度:0是完全透明,    1是完全不透明,    从0.0~1.0用float字符型式来表示透明度;duratiion: 动画完成时间(在多少ms内完成动画);startOffset: 延迟一定时间后运行动画;

(2)Scale   尺寸渐变动画

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     <scale
 4         android:duration="2000"
 5         android:fromXScale="0.1"
 6         android:toXScale="1.0"    
 7         android:fromYScale="0.1"
 8         android:toYScale="1.0"
 9         android:pivotY="50"  
10         android:pivotX="50"
11         />
12
13 </set>

    fromXScale : 动画 起始时 X坐标上的伸缩尺寸    toXScale : 动画 结束时 X坐标上的伸缩尺寸    fromYScale : 动画 起始时 Y坐标上的伸缩尺寸    toYScale : 动画 结束时 Y坐标上的伸缩尺寸  以上四个属性都是浮点值类型:  0.0代表尺寸为零                 0.0~1.0之间代表小尺寸(缩小原画)                 1.0代表原尺寸无缩放                 >1.0代表大尺寸(放大原画)

    pivotX 属性为动画相对于物件的X坐标的开始位置     pivotY 属性为动画相对于物件的Y坐标的开始位置  以上两个属性值 从0%-100%中取值;50%为物件的X或Y方向坐标上的中点位置;    duratiion: 动画完成时间(在多少ms内完成动画);  startOffset: 延迟一定时间后运行动画;                 

(3)Translate  位移动画

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     <translate
 4         android:duration="2000"
 5         android:fromYDelta="30"
 6         android:fromXDelta="30"
 7         android:toXDelta="-30"
 8         android:toYDelta="-30"
 9         />
10
11 </set>

fromXDelta:动画开始时X坐标;toXDelta : 动画结束时X坐标;fromXDelta:动画开始时Y坐标;toYDelta : 动画结束时Y坐标;
duratiion: 动画完成时间(在多少ms内完成动画);startOffset: 延迟一定时间后运行动画;

(4)Rotate   旋转动画

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <set xmlns:android="http://schemas.android.com/apk/res/android">
 3     <rotate
 4         android:duration="2000"
 5         android:fromDegrees="0"
 6         android:toDegrees="360"
 7         android:pivotX="50"
 8         android:pivotY="50"
 9         />
10
11 </set>

  formDegreea: 动画开始角度;  toDegreea : 动画结束时角度,可以大于360°;(大于360°就是能多旋转几圈,可以自己试一下);
    当角度为负数——表示逆时针旋转
       当角度为正数——表示顺时针旋转
         (负数from——to正数:顺时针旋转)
         (负数from——to负数:逆时针旋转)
           (正数from——to正数:顺时针旋转)
           (正数from——to负数:逆时针旋转) 
     pivotX,pivotY:              从0%-100%中取值
                 50%为物件的X或Y方向坐标上的中点位置;          duratiion: 动画完成时间(在多少ms内完成动画);    startOffset: 延迟一定时间后运行动画;

一些效果:

@android:anim/accelerate_interpolator: 越来越快

@android:anim/decelerate_interpolator:越来越慢

@android:anim/accelerate_decelerate_interpolator:先快后慢

@android:anim/anticipate_interpolator: 先后退一小步然后向前加速

@android:anim/overshoot_interpolator:快速到达终点超出一小步然后回到终点

@android:anim/anticipate_overshoot_interpolator:到达终点超出一小步然后回到终点

@android:anim/bounce_interpolator:到达终点产生弹球效果,弹几下回到终点

@android:anim/linear_interpolator:均匀速度。

不过我试过之后发现,在XML中写是没有起到实际作用的,要在JavaCode中调用才能显现出效果:

要在JavaCode中加入这种代码才能起到作用,可以自己试一下:myAnimation.setInterpolator(new BounceInterpolator()); //弹球效果;

自己学会了基础的就可以深入的研究一下下,比如我发现这样子会更好看哦:
 1 <scale
 2         android:duration="2000"
 3         android:fromYScale="0dp"
 4         android:toYScale="1.0"
 5         android:fromXScale="0"
 6         android:toXScale="1.0"
 7         android:pivotY="50"
 8         android:pivotX="50"
 9         />
10
11     <translate
12         android:duration="2000"
13         android:fromYDelta="20%p"
14         android:toYDelta="0"
15         />

把尺寸缩放和位移加起来之后,再在JavaCode中调用弹球效果,出来的画面果然更加好看哈哈哈(无心之举);不过还是没有试出来连续动画,和逐帧播放不一样的那种,继续努力然后补充吧~

2016-08-16  22:41:12

				
时间: 2024-10-05 20:21:23

Android Animation 动画学习笔记的相关文章

绘图与动画学习笔记(一)

1. 处理图形与动画的框架有 UIKit 高层次的框架,允许开发人员创建视图.窗口.按钮和其他UI相关的组件.它还将一些低级别的API引入到易于使用的高级别API中 Quartz 2D iOS上绘图的主要引擎:UIKit就使用Quartz. Core Graphics 它支持图形上下文.加载图像.绘制图像,等等. Core Animation 顾名思义,是一个帮助开发者在IOS上实现动画的框架 2. UIColor的set方法可设置Graphical context的颜色 - (void)dra

Android Animation动画详解(二): 组合动画特效

前言 上一篇博客Android Animation动画详解(一): 补间动画 我已经为大家介绍了Android补间动画的四种形式,相信读过该博客的兄弟们一起都了解了.如果你还不了解,那点链接过去研读一番,然后再过来跟着我一起学习如何把简单的动画效果组合在一起,做出比较酷炫的动画特效吧. 一. 动画的续播 如题,大家想想,如果一个页面上包含了许多动画,这些动画要求按顺序播放,即一个动画播放完成后,继续播放另一个动画,使得这些动画具有连贯性.那该如何实现呢? 有开发经验或者是逻辑思维的人肯定会想,对

Android自定义View学习笔记04

Android自定义View学习笔记04 好长时间没有写相关的博客了,前几周在帮学姐做毕设,所以博客方面有些耽误.过程中写了一个类似wp的磁贴的view,想再写个配套的layout,所以昨天看了一下自定义viewGroup的相关知识-晚上睡觉想了一下可行性不是很高-代码量还不如直接自己在xml上写来得快,速度上也是个问题.今天看了一下张鸿洋老师的Android 自定义View (三) 圆环交替 等待效果这篇博文,再加上前一段时间看到的一幅图,结合之前写的一个圆形imageView的实现博文And

[Android游戏开发学习笔记]View和SurfaceView

本文为阅读http://blog.csdn.net/xiaominghimi/article/details/6089594的笔记. 在Android游戏中充当主要角色的,除了控制类就是显示类.而在Android中涉及到显示的是View类,及继承自它的SurfaceView类和SurfaceView的其他子类等. 这里先只说View和SurfaceView.SurfaceView的直接子类有GLSurfaceView和VideoView,可以看出GL和视频播放以及CAmera摄像头一般均使用Su

Android Animation 动画Demo(Frame逐帧动画)

上一篇介绍了Animation动画其一:Tween补间动画. 这篇文章接下来介绍Animation另一种动画形式:Frame逐帧动画. Frame动画是一系列图片按照一定的顺序展示的过程,和放电影的机制很相似,我们称为逐帧动画.Frame动画可以被定义在XML文件中,也可以完全编码实现(后面会给出这两种实现方式的源代码Demo). 下面分别介绍: 一.定义在xml中实现: 实现效果图: 源代码: 布局文件:main.xml: <?xml version="1.0" encodin

Android中ActivityManager学习笔记(3)

在之前写过2篇关于ActivityManager的文章,如下所示.都是通过实战去了解里面的信息,现在感觉太繁琐,所以做一个api介绍比较详细.就像之前学习Telephony那样,对整体了解整个ActivityManager很有用. Android中ActivityManager学习笔记(1)-MemoryInfo Android中ActivityManager学习笔记(2)-RunningServiceInfo ActivityManager android.app包,含有6个内部类: Memo

Android Animation动画(很详细)

http://www.360doc.com/content/13/0102/22/6541311_257754535.shtml Android Animation动画(很详细),布布扣,bubuko.com

Android Animation 动画

动画类型 Android的animation由四种类型组成  Android动画模式 Animation主要有两种动画模式:一种是tweened animation(渐变动画) XML中 JavaCode alpha AlphaAnimation scale ScaleAnimation 一种是frame by frame(画面转换动画) XML中 JavaCode translate TranslateAnimation rotate RotateAnimation 如何在XML文件中定义动画

Android Socket编程学习笔记

通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. 网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个Socket.Socket通常用来实现客户方和服务方的连接.Socket是TCP/IP协议的一个十分流行的编程界面,一个Socket由一个IP地址和一个端口号唯一确定. 在java中,Socke