《Android自定义控件入门与实战》读书笔记--第2章 视图动画

  1. 动画分类
    1.视图动画:补间动画、逐帧动画
    2.属性动画

2.1 视图动画标签

2.1.1 概述

  1. 配置 XML 动画
    1.alpha 渐变
    2.scale 缩放
    3.translate 平移
    4.rotate 旋转
    5.set 动画集合
  2. 使用
Animation animation = AnimationUtils.loadAnimation()
tv.startAnimation(animation)
android:pivotX 三种样式
数值、百分数、百分数p 5050%50%p(在当前控件的左上角加上父控件宽50% 作为缩放起始点坐标)

2.2 视图动画代码实现

  1. ScalsAnimation
  2. AlphaAnimation
  3. RotateAnimation
  4. TranslateAnimation
  5. AnimaionSet
    1.addAnimation()

2.2.7 Animation

1.取消动画
void cancel()
2.重置
void reset()
3.监听
void setAnimationListener(Animation.AnimationListener listener)
abstract void onAnimationEnd(Animation animation) 
abstract void onAnimationRepeat(Animation animation) 
abstract void onAnimationStart(Animation mation)

2.6 插值器初探

  1. Interpolator
  2. 使用
    1.android:interpolator=”@android : anim/accelerate_interpolator”
    2.setlnterpolator(new Linearinterpolator ())
AccelerateDeceleratelnterpolator 加速减速插值器
Acceleratelnterpolator 加速插值器
Deceleratelnterpolator 减速插值器
Linearlnterpolator 匀速插值器
Bouncelnterpolator 弹跳插值器
Anticipatelnterpolator 初始偏移插值器,表示在动画开始的时候向前偏移一段距离,然后应用动画
Overshootlnterpolator 结束偏移插值器,表示在动画结束时,沿动画方向继续运动一段距离后再结束动画
AnticipateOvershootlnterpolator 初始和结束插值器
Cyclelnterpolator 循环插值器

2.4 动画示例

2.4.1 镜头由远而进

ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 1.2f, 1.0f, 1.2f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnimation.setFillAfter(true);
scaleAnimation.setInterpolator(new BounceInterpolator());
scaleAnimation.setDuration(6000);
iv.startAnimation(scaleAnimation);

2.4.2 加载框

RotateAnimation rotateAnimator =new RotateAnimation(0, 360,Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0.5f) ; 
rotateAnimator.setRepeatCount(Animation.INFINITE) ; 
rotateAnimator.setDuration(2000) ; 
rotateAnimator.setinterpolator(new Linearinterpolator()); 
iv.startAnimation(rotateAnim)

2.4.3 扫描动画

1.设置 4 个 黄色 iv 控件隐藏在按钮后面,点击时候,对 iv 控件间隔做动画效果
2.使用setStartOffset(int time),延迟各个动画的开始时间

2.5 逐帧动画

2.5.1 XML 实现

1.在 drawable 目录下创建 xml 文件
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true">
    <item android:drawable="@drawable/ic_demo"
        android:duration="1000"/>
</animation-list>
2.设置 iv src 路径
3.代码设置
AnimationDrawable anim = (AnimationDrawable)iv.getDrawable();
anim.start();
  1. AnimationDrawable
void start()
void stop()
void addFrame() 添加一帧

2.5.1 Java 实现

//通过文件名,获取对应资源的id
final AnimationDrawable anim = new AnimationDrawable() ; 
for (int i = 0, i < 14; i++) { 
   //根据文件名称,获取对应资源的 id
   int id = getResources().getidentifier("list_icon_gif_playing" + i ,"drawable", getPackageName());
   Drawable drawable= getResources().getDrawable(id)
   anim.addFrame(drawable,60); //添加一帧
   anim.setOneShot(false);     //不循环
   iv.setBackgroundDrawable(anim);
   anim.start();
}   
发布了44 篇原创文章 · 获赞 15 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_44947117/article/details/104262626