《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();
}   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值