文档章节

Android 动画汇总-自定义动画

蜗牛崛起
 蜗牛崛起
发布于 2017/09/04 13:36
字数 362
阅读 22
收藏 0

android自定义动画步骤

继承Animation,重写里面的initialize和applyTransformation,在initialize方法做一些初始化的工作,在applyTransformation方法进行相应的轨阵变化即可!

参数讲解

initialize(int width, int height, int parentWidth, int parentHeight) width和height代表指定播放动画的View控件宽高,parentWidth和parentHeight代表该View控件所在的父控件宽高。

applyTransformation(float interpolatedTime, Transformation t) 其中的interpolatedTime参数都会改变一次,值从0到1递增,当interpolatedTime的值为1时则动画结束。 Transformatio类是一个变换的矩阵,通过改变该矩阵就可以实现各种复杂的效果。

applyTransformation()方法是动画具体的实现方法,在系统绘制动画时会反复调用这个方法,每调用一次

实例代码

在**自定义折叠布局**中就是用了自定义动画。

下面我们看一个实现左右旋转摇摆的例子

/**
 * 左右摇摆动画
 */
public class RotateAnim extends Animation {
 
  /** 控件宽 */
  private int mWidth;
 
  /** 控件高 */
  private int mHeight;
 
  /** 实例 */
  private static RotateAnim rotateAnim;
 
  /**
   * 获取动画实例
   * @return 实例
   */
  public static RotateAnim getRotateAnim() {
    if (null == rotateAnim) {
      rotateAnim = new RotateAnim();
    }
    return rotateAnim;
  }
 
//获取视图的宽高
  @Override
  public void initialize(int width, int height, int parentWidth, int parentHeight) {
    this.mWidth = width;
    this.mHeight = height;
    super.initialize(width, height, parentWidth, parentHeight);
  }
 
  @Override
  protected void applyTransformation(float interpolatedTime, Transformation t) {
    // 左右摇摆
    t.getMatrix().setRotate((float)(Math.sin(interpolatedTime*Math.PI*2)*50), mWidth/2, mHeight/2);
    super.applyTransformation(interpolatedTime, t);
  }
}
 

外部调用

			RotateAnim rotateAnim = new RotateAnim.getRotateAnim();
			rotateAnim .setDuration(3000); 		
		       startAnimation(rotateAnim );

© 著作权归作者所有

蜗牛崛起
粉丝 3
博文 127
码字总数 63547
作品 0
东城
程序员
私信 提问
Android样式的开发系列

最近花了比较长的时间总结了样式开发的系列文章,从最简单的自定义形状Shape,到selector的用法,以及layer-list的使用,drawable资源的汇总,还有动画的编写,到最后style的整合。 [Android...

Keegan小钢
2015/11/03
1K
10
Android动画:献上一份详细 & 全面的动画知识学习攻略

前言 动画的使用 是 开发中常用的知识 可是动画的种类繁多、使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将献上一份动画的全面介绍攻略,包括动...

Carson_Ho
2018/06/06
0
0
Android:这是一份全面 & 详细的动画入门学习指南

前言 动画的使用 是 开发中常用的知识 可是动画的种类繁多、使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将献上一份动画简介,包括动画的种类、...

Carson_Ho
07/23
0
0
04.Android之动画问题

目录介绍 4.0.0.1 Android中有哪几种类型的动画,属性动画和补间动画有何区别?补间动画和属性动画常用的有哪些? 4.0.0.2 View动画为何不能真正改变View的位置?而属性动画为何可以?属性动...

潇湘剑雨
01/11
21
0
Android 动画:这些属性动画的使用小技巧你了解吗

前言 属性动画的使用 是 开发中常用的知识 今天,我将讲解属性动画使用中的一些使用小技巧,希望你们会喜欢。 目录 AnimatorSet.after(long delay) :将现有动画延迟x毫秒后执行AnimatorSet...

Carson_Ho
08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
今天
7
0
用最通俗的方法讲spring [一] ──── AOP

@[TOC](用最通俗的方法讲spring [一] ──── AOP) 写这个系列的目的(可以跳过不看) 自己写这个系列的目的,是因为自己是个比较笨的人,我曾一度怀疑自己的智商不适合干编程这个行业.因为在我...

小贼贼子
今天
6
0
Flutter系列之在 macOS 上安装和配置 Flutter 开发环境

本文为Flutter开发环境在macOS下安装全过程: 一、系统配置要求 想要安装并运行 Flutter,你的开发环境需要最低满足以下要求: 操作系统:macOS(64位) 磁盘空间:700 MB(不包含 IDE 或其余...

過愙
今天
4
0
OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
2.5K
16
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部