2018-04-27 android 动画

以下内容几乎是帖的!只是在我学习的时候记录一下,方便自己日后查看  前面帧动画帖官方文档,后面属性动画是帖郭霖大神的内容,在下面有给出连接。代码大部分自己亲自敲,多敲敲才容易记哈(#^.^#)   

下面只是基础,中级连接

AnimationDrawable  开发文档翻译


用于创建逐帧动画的对象,由一系列Drawable对象定义,可用作View对象的背景。

创建逐帧动画的最简单方法是在XML文件中定义动画,放置在res / drawable /文件夹中,并将其设置为View对象的背景。然后,调用 start()运行动画。

在XML中定义的AnimationDrawable由单个元素和一系列嵌套标签组成。每个项目定义了动画的一个框架。看下面的例子。

res / drawable /文件夹中的spin_animation.xml文件:


下面是加载和播放的代码


开发指南

社遏制图片的xml属性:

android:drawable: 引用可用于该帧的可绘制资源 ,我想就是一个drawable对象,里面需要是                                    <animotion-list>格式的对象

android:duration:   表示显示当前帧的时间,int类型

android:oneshot: 是否只运行一次  true就只运行一次  默认false

android:variablePadding:如果为true,则允许绘制的填充根据所选的当前状态进行更改。  启用此功能要求                                                可绘制的所有者在状态更改时处理布局,这通常不受支持。我的理解是。这个属性                                                设置为true的时候,动画的每一帧会根据当前布局而改变,怎么改变,需要我们自                                                己去设置,包括对动画的位置,大小等,都要自己处理。

android:visible        是否可见.


java中方法就补了,自己连接去看一下,方法注释英文难度不大,http://www.android-doc.com/reference/android/graphics/drawable/AnimationDrawable.html#AnimationDrawable()

有一个网页可以拿到京东图片。提供代码测试:京东图片和代


属性动画 看看郭霖大神怎么说

ValueAnimator

 ValueAnimator是整个属性动画机制当中最核心的一个类,前面我们已经提到了,属性动画的运行机制是通过不断地对值进行操作来实现的,而初始值和结束值之间的动画过渡就是由ValueAnimator这个类来负责计算的。它的内部使用一种时间循环的机制来计算值与值之间的动画过渡,我们只需要将初始值和结束值提供给ValueAnimator,并且告诉它动画所需运行的时长,那么ValueAnimator就会自动帮我们完成从初始值平滑地过渡到结束值这样的效果。除此之外,ValueAnimator还负责管理动画的播放次数、播放模式、以及对动画   设置监听器等,确实是一个非常重要的类。       

学习代码:


如果不需要小数位的过度,可改为ofint  如图:


可以设置动画的重复次数,不能写Integer.MAX_VALUE。写了就不会重复了,并且动画也不会播放,不懂原因。其次是duration是执行一次的时间,如果设置了重复执行,最后一个数字他并不显示。


ObjectAnimator

ObjectAnimator可以对任意属性进行动画操作,他继承valueAnimator,

不过虽说ObjectAnimator会更加常用一些,但是它其实是继承自ValueAnimator的,底层的动画实现机制也是基于ValueAnimator来完成的,因此ValueAnimator仍然是整个属性动画当中最核心的一个类。那么既然是继承关系,说明ValueAnimator中可以使用的方法在ObjectAnimator中也是可以正常使用的,

1.设置颜色渐变


这里ofFloat的参数可以无限延长。

2.设置旋转     问题:目前还不会如何沿着某一固定点旋转,下面是沿着中心旋转


3.平移

移动Y轴只要改变:translationX --->> translationY就可以

4放大缩小


中间的位置参数同样也是无限个,看需求。

到目前为止,ObjectAnimator的用法还算是相当简单吧,但是我相信肯定会有不少朋友现在心里都有同样一个疑问,就是ofFloat()方法的第二个参数到底可以传哪些值呢?目前我们使用过了alpha、rotation、translationX和scaleY这几个值,分别可以完成淡入淡出、旋转、水平移动、垂直缩放这几种动画,那么还有哪些值是可以使用的呢?其实这个问题的答案非常玄乎,就是我们可以传入任意的值到ofFloat()方法的第二个参数当中。任意的值?相信这很出乎大家的意料吧,但事实就是如此。因为ObjectAnimator在设计的时候就没有针对于View来进行设计,而是针对于任意对象的,它所负责的工作就是不断地向某个对象中的某个属性进行赋值,然后对象根据属性值的改变再来决定如何展现出来。



那么textview对象中是不是有alpha属性这个值呢?没有,不仅textview没有这个属性,连它所有的父类也是没有这个属性的!这就奇怪了,textview当中并没有alpha这个属性,ObjectAnimator是如何进行操作的呢?其实ObjectAnimator内部的工作机制并不是直接对我们传入的属性名进行操作的,而是会去寻找这个属性名对应的get和set方法,因此alpha属性所对应的get和set方法应该就是:

那么textview对象中是否有这两个方法呢?确实有,并且这两个方法是由View对象提供的,也就是说不仅TextView可以使用这个属性来进行淡入淡出动画操作,任何继承自View的对象都可以的。


组合动画

组合动画就是分别写几个单独的动画,然后创建Animator类 调用Animator的play方法,这个方法会传入一个动画,这个动画一定是最后执行!!!之后可以打点调出4个方法


注意!!!编写代码的动画顺序是反着的!!反着的!!!反着的!!!先写的后执行!!!!!!!!!



动画添加监听 


但是也许很多时候我们并不想要监听那么多个事件,可能我只想要监听动画结束这一个事件,那么每次都要将四个接口全部实现一遍就显得非常繁琐。没关系,为此Android提供了一个适配器类,叫作AnimatorListenerAdapter,

这里我们向addListener()方法中传入这个适配器对象,由于AnimatorListenerAdapter中已经将每个接口都实现好了,所以这里不用实现任何一个方法也不会报错。那么如果我想监听动画结束这个事件,就只需要单独重写这一个方法就可以了,如下所示:



使用XML文件编写动画

 使用xml 编写动画会比较麻烦一点,但是当一个需要多次使用的动画,使用xml编写就可以重复使用了。

编写的代码中,一个  android:ordering="sequentially" 这个是设置顺序的,sequentially方法是按照先后执行,而together是同时执行,这里面编写的动画不存在反着的现象,即先写的先执行(在按照顺序执行的情况下)多个动画用set包裹



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,635评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,628评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,971评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,986评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,006评论 6 394
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,784评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,475评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,364评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,860评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,008评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,152评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,829评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,490评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,035评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,428评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,127评论 2 356

推荐阅读更多精彩内容

  • 【Android 动画】 动画分类补间动画(Tween动画)帧动画(Frame 动画)属性动画(Property ...
    Rtia阅读 6,164评论 1 38
  • 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今...
    未聞椛洺阅读 2,711评论 0 10
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,195评论 25 707
  • 动画基础概念 动画分类 Android 中动画分为两种,一种是 Tween 动画、还有一种是 Frame 动画。 ...
    Rtia阅读 1,231评论 0 6
  • 早上看了牙医,下午回了广州,回到广州好冷好冷,没有直接回去住处,吃了个饭直接去了琴室上课,好冷的一天。
    i_orange阅读 169评论 0 0