最近对适配器有了新的理解,特记录下。

写代码遇到了使用ScaleAnimation,我想在结束完,执行另一个动画,于是我增加了一个Animation.AnimationListener。另一个动画又是使用的animator属性动画,我使用了Animator.MyListenerAdapter 或Animator.AnimatorListener方便此动画结束后执行另一个动画。于是最后我想把两种listener合并成一个,因为我只想他们动画结束做动作,只用一个状态表示现在执行到了哪个动画。

于是便有了下面的内部类适配器。

int animationType;  //动画类型private final int FIRSTSCALEANIMATION = 0xc1;       //点击后缩小动画private final int SECONDSCALEANIMATION = 0xc2;      //点击后放大动画private final int EXITSCALEANIMATION = 0xc4;        //退出动画class MyListenerAdapter extends AnimatorListenerAdapter implements Animation.AnimationListener{    private final String TAG = "MyListenerAdapter";    Animator.AnimatorListener animatorListener;    Animation.AnimationListener animationListener;    public MyListenerAdapter() {        animatorListener = this;        animationListener = this;    }    @Override    public void onAnimationStart(Animation animation) {        Log.e(TAG, "MyAnimatorAdapter onAnimationStart开始");        if(animation != null)            animatorListener.onAnimationStart(null);    }    @Override    public void onAnimationEnd(Animation animation) {        if(animation != null)            animatorListener.onAnimationEnd(null);    }    @Override    public void onAnimationRepeat(Animation animation) {        if(animation != null)            animatorListener.onAnimationRepeat(null);    }    @Override    public void onAnimationStart(Animator animator) {        if(animator != null)            animationListener.onAnimationRepeat(null);    }    @Override    public void onAnimationEnd(Animator animator) {        if(animator != null)            animationListener.onAnimationEnd(null);        Log.e(TAG, "MyAnimatorAdapter onAnimationEnd结束");        if(animationType == FIRSTSCALEANIMATION){   //第一段动画结束            animationType = SECONDSCALEANIMATION;            。。。//执行第二段动画        }        else if(animationType == SECONDSCALEANIMATION){  //第二段动画结束            animationType = EXITSCALEANIMATION;            。。。//执行第三段动画        }        else if(animationType == EXITSCALEANIMATION){  //第三段动画结束            。。。        }    }}

这样使用的时候不管是属性动画还是补间动画都可以使用
scaleAnimation.setAnimationListener(new MyListenerAdapter());
和view.animate().translationY(20).setDuration(200).setListener(new MyListenerAdapter())

更多相关文章

  1. 探究为何:在onCreate中通过View.post能获取宽高
  2. android学习笔记(六)
  3. Android(安卓)wpa_cli 调试方法(adb shell 命令)
  4. geekband android #5 第八周分享
  5. Android动画资源(三)——插值器
  6. Android动画基础点记录
  7. 调用startactivityforresult后,onactivityresult响应
  8. [置顶] 我的Android进阶之旅------>Android之Animations动画详解
  9. Fragment(二)-----分析执行的过程篇

随机推荐

  1. 华纳云:香港IP地址更换需要注意的事项
  2. 大数据仓库-kudu
  3. PDO连接数据库实例
  4. es软件安装
  5. 最新个税计算、个税倒推和税后倒推公式
  6. 最新Excel个税计算公式来了,说说你每月该
  7. 一网打尽:算术平均、修剪平均和条件平均值
  8. Excel按区间查询,大咖有句悄悄话
  9. Linux必会技能
  10. 【3.8-3.14】上周精彩回顾