android中animator及其监听器在cancel及end时的响应问题

1、AnimatorSet中存在多个animator,并且set及animator均添加了监听器的时候:

在start的时候会先分别执行各个animator的监听器的start方法,然后调用set自己的监听器的start方法。

在调用AnimatorSet的cancel()方法的时候,会首先调用set自己的cancel方法,然后循环对每个animator调用cancel及end方法,最后才调用set自己的end方法。

如下,alphaAnim与scaleAnim放到animSet中同时执行,三者均注册了监听器,启动animSet并且在执行中途执行cancel方法,调用如下:

alphaAnim start

scaleAnim start

animSet start

animSet cancel

alphaAnim cancel

alphaAnim end

scaleAnim cancel

scaleAnim end

animSet end

在animSet执行过程中调用animSet的end方法,调用顺序如下:

alphaAnim start

scaleAnim start

animSet start

alphaAnim end

scaleAnim end

animSet end

2、改为采用ScaleAnimation、AlphaAnimation、AnimationSet等方式来实现时,调用animSet的cancel方法,流程如下:

scaleAnim start

alphaAnim start

animSet start

animSet end

animSet end

scaleAnim end

alphaAnim end

animSet end

采用animationSet的时候执行流程有点诡异,set的end方法竟然调用了三次,不可理解。。看了下代码什么都没做,就是绑定了几个监听器,理论上没什么问题的啊。

android中animator及其监听器在cancel及end时的响应问题,布布扣,bubuko.com

时间: 2024-10-05 20:38:56

android中animator及其监听器在cancel及end时的响应问题的相关文章

android中NavigationDrawer的使用以及添加drawer切换时的动画效果

最近在开发app的时候需要用到NavigationDrawer,但是在添加动画(汉堡图标和箭头图标互转)效果的时候老是出现问题,折腾了好几个小时终于搞定.在这里跟大家分享一下.说明下,我开发时候用的minSdkVersion 是9,也就是本文所说的方法适用于APIlevel 2.3以上的情况,但若minsdk比较高的话会有略微的差异. 1.效果及依赖 NavigationDrawer是Material Design中推崇的一种控件,网易新闻.知乎都有在使用,先上效果图: 图中开启.关闭Navig

Android 中常见控件的介绍和使用

1 TextView文本框 1.1 TextView类的结构 TextView 是用于显示字符串的组件,对于用户来说就是屏幕中一块用于显示文本的区域.TextView类的层次关系如下: java.lang.Object   ? android.view.View   ? android.widget.TextView 直接子类: Button, CheckedTextView, Chronometer, DigitalClock, EditText 间接子类: AutoCompleteTextV

一个Demo学完Android中所有的服务(转)

说明:这个例子实现了Android中常见的许多服务,下面是实现的截图 接下来,以源代码的方式分析这个例子   1.MainActivity--主界面 这个类主要是实现用户所看到的这个Activity,其中包含了一系列的按钮,用户点击按钮执行相应的动作,所以在这个类中主要是对按钮的定义和对按钮绑定相应的监听器,下面是实现的代码: [java] view plaincopyprint? package lovefang.stadyService; import android.app.Activit

Android中的动画学习总结

android中动画可分为三种:帧动画,补间动画,和属性动画.其中属性动画是google推荐的,它可以实现前面两种动画的效果,运用起来更加灵活. 帧动画:顾名思义,就是一帧一帧的图片,快速播放形成的动画. 具体实现步骤如下: 第一:新建一个drawable资源 以animation-list 为根节点创建资源文件. 第二:给ImageView或者其他View设置关联drawable.可以作为background或者src. 第三:在java代码中,通过View.getBackground():或

浅谈android中的异步加载一

1.为什么需要异步加载. 因为我们都知道在Android中的是单线程模型,不允许其他的子线程来更新UI,只允许UI线程(主线程更新UI),否则会多个线程都去更新UI会造成UI的一个混乱有些耗时的操纵(例如网络请求等),如果直接放到主线程中去请求的话则会造成主线程阻塞,而我们系统有规定的响应时间,当响应的时间超过了了阻塞的时间就会造成"Application No Response",也就是我们熟知的ANR错误解决上述问题的时候:我们一般使用的是线程或者线程池+Handler机制如果线程

Android中不同方向嵌套滑动的解决方式(ListView为样例)

前言: 就像手机QQ的聊天消息列表.一个纵向滑动的ListView列举全部消息,但每一条消息能够横向滑动. 而默认情况下,仅仅能有一个地方消化处理触摸事件,要么ListView吃掉这个事件.要么子Item中能滑动的部件吃掉.两者互相冲突. 是否认为非常分裂?实现起来事实上不复杂. 理解了以后,能够方便延伸到GridView,ViewPager,ScrollView等等滑动控件. 假设对Andoroid触摸事件传递过程不熟悉,请看这里: 为了最简单表达实现方法,我以一个LinearLayout为L

android中SharedPreferences和PreferenceActivity的存取数据

本文主要介绍SharedPreferences和PreferenceActivity的基础知识和用法. 主要资料来源于网络,包括但不限于: <Android之PreferenceActivity>--http://www.cnblogs.com/wservices/archive/2010/07/08/1773449.html <在Android中Preferences数据存储的使用> <Android的设置界面及Preference使用> <OnPreferen

Android中TouchEvent触摸事件机制

当我们的手指在Android屏幕上点击或滑动时,就会触发触摸事件TouchEvent.在App中ViewGroup和View存在多级嵌套,在最外层的是Activity,最内层的View,介于Activity与View之间的是一些ViewGroup.本文为了简化讨论,我们假设一个Activity中只有一个ViewGroup,这个ViewGroup中只有一个View.当我们用手指触摸到View的UI时,就会产生触摸事件TouchEvent,总的过程如下图所示: 首先是最外层的Activity接收到该

Android 中的接口回调

http://blog.csdn.net/wangjinyu501/article/details/22052187 在Android中到处可见接口回调机制,尤其是UI事件处理方面.举一个最常见的例子button点击事件,button有一个点击方法onClick(),我们知道onclick()是一个回调方法,当用户点击button就执行这个方法.在源码中是这样定义的: //这个是View的一个回调接口 /** * Interface definition for a callback to be