全部系列

动画系列

Android 开发 · 共 23 篇 · 按发布时间正序排列

视图动画、属性动画、插值器到转场:Android 动画体系全解

Android

自定义 RecyclerView 动画:手写 ItemAnimator 实现 Remove 飞出效果

自定义 RecyclerView 动画:手写 ItemAnimator 实现 Remove 飞出效果列表里删一条数据时,我们常常希望它"飞出去"、后面的项平滑上移填补空位——这正是 RecyclerView 的 ItemAnimator 负责的事。但很多人照着写会发现:要么完全没动画,要么被删项飞出时下方 item 瞬间跳上去、和飞出项重叠闪烁。问题不在动画本身,而在于没理解 ItemAnimat

352
Android

Android ViewPager 切换动画详解:PageTransformer 从原理到实战

Android ViewPager 切换动画详解:PageTransformer 从原理到实战ViewPager 默认的页面切换只是"水平平移",朴素到几乎没存在感。想做出"缩放淡化""3D 深度""旋转翻转"这类炫酷效果,靠的就是 PageTransformer——一个只有单个方法的接口,却是 ViewPager 动画的灵魂。本文从 position 参数的数学含义讲起,到两个官方经典实现、再到

398
视图动画:Animation
Android

视图动画:Animation

视图动画:Animation动画相关的代码在frameworks层../frameworks/base/core/java/android/view/animation中。Android中的动画有如下分类:在深入了解动画之前,还是先来看看所有动效的父类Animation类。帧动画详见《逐帧动画:Frame Animation》,补间动画详见《补间动画:Tween Animation》。1、Anim

2.0k
动画插值器Interpolator
Android

动画插值器Interpolator

动画插值器InterpolatorAnimation中一个重要的概念是Interpolator插值器,动画执行的速率加上效果(加速或者减速等等),让动画执行起来不那么“死板”,动画看起来能够更自然“活泼”。想要实现炫酷好看的动画离不开插值器。后面讲到属性动画还会学习估值器TypeEvaluator,详见《属性动画:TypeEvaluator》。1、Interpolator了解Interpolato

2.2k
逐帧动画:Frame Animation
Android

逐帧动画:Frame Animation

逐帧动画:Frame Animation逐帧动画,简单好用的动效,一帧一帧的播放图片。比如一般手机刚开机时候显示的Logo是逐帧动画,注意逐帧动画需要加载大量的图片,因而很耗内存,使用的时候一定要注意别导致内存泄漏和OOM,不要加载过多和过大的图片。有两种方式实现逐帧动画:代码方式和XML方式。1、代码实现逐帧动画用到的AnimationDrawable类,通过该类可以用代码实现逐帧动画的效果。1

2.1k
补间动画:Tween Animation
Android

补间动画:Tween Animation

补间动画:Tween AnimationAndroid动画有两种:视图动画和属性动画。视图动画从API 1开始有的,属性动画从API 11才被引入。视图动画又包括补间动画、帧动画,关于帧动画参考《逐帧动画》,现在来学学补间动画。1、Tween Animation补间动画可以对View对象的内容执行一系列简单的转换(位置,大小,旋转和透明度)。android.view.animation包中定义了补

2.1k
属性动画:ValueAnimator
Android

属性动画:ValueAnimator

属性动画:ValueAnimator前面了解的是视图动画,改变View的绘制,但那也只是表面上,其实View真正的属性都没有发生变化。从API 11开始Android引入了更强大的属性动画。1、为什么引入属性动画?之前学习的视图动画(补间动画:旋转、平移、放缩、透明度)只能在界面绘制上面做文章,也就是看到的是表面的“虚幻”画面,其实View的位置还在原来的地方。举个例子,对View进行Transl

2.7k
属性动画:ObjectAnimator
Android

属性动画:ObjectAnimator

属性动画:ObjectAnimator上一篇介绍的属性动画:ValueAnimator较为简单,会发现只能基于数值的变化对View进行设置,而且只能通过给ValueAnimator添加AnimatorUpdateListener监听器来监听数值变化,进而在回调方法中根据实时变化的数值设置View的属性。继续介绍属性动画中另一个更复杂的Animator,不再需要实现ValueAnimator.Ani

2.3k
属性动画:TypeEvaluator
Android

属性动画:TypeEvaluator

属性动画:TypeEvaluator视图动画借助Interpolator插值器改变动画执行的速率实现不同的视觉效果,属性动画也可以使用Interpolator,关于插值器详见《动画插值器Interpolator》。此外属性动画还额外增加了一个类叫TypeEvaluator估值器。1、TypeEvaluatorTypeEvaluator改变的是数值,Interpolator加速的是时间。1.1、Ty

2.1k
属性动画集合:AnimatorSet
Android

属性动画集合:AnimatorSet

属性动画集合:AnimatorSet前面学习了属性动画ValueAnimator和ObjectAnimator。它们一次只能执行一个动画,实际需求需要多个动画来组合才能达到效果,Android为属性动画也提供了属性动画合集AnimatorSet。补间动画的组合通过AnimationSet实现,详见《补间动画:Tween Animation》。1、AnimatorSet简介AnimatorSet继承

2.8k
属性动画的XML实现
Android

属性动画的XML实现

属性动画的XML实现补间动画的四种动画都可以通过代码实现,也可以通过xml实现,详见《补间动画:Tween Animation》。属性动画也可以通过XML的方式快速实现。和Animation动画src/main/res/anim目录不同,Animator动画xml放在src/main/res/animator目录下。1、ValueAnimator<animator/>标签对应ValueAnimat

2.0k
属性动画:PropertyValuesHolder
Android

属性动画:PropertyValuesHolder

属性动画:PropertyValuesHolder前面属性动画学习的过程中,在ValueAnimator中提到过ValueAnimator.ofPropertyValuesHolder(PropertyValuesHolder... values)构造方法(详见《属性动画:ValueAnimator及其监听器》3.1节),还有ObjectAnimator中也提到过ObjectAnimator.of

2.1k
属性动画关键帧:keyframe
Android

属性动画关键帧:keyframe

属性动画关键帧:keyframe上次介绍学习了PropertyValuesHolder《属性动画:PropertyValuesHolder》,其中还提到一个ofKeyframe()的构造方法,传入Keyframe参数。今天单独专门学习一下什么是Keyframe关键帧。1、KeyframeKeyframe类从API 11开始引入android.animation包中。1.1、介绍Keyframe包含

2.1k
更简单的动画实现:ViewPropertyAnimator
Android

更简单的动画实现:ViewPropertyAnimator

更简单的动画实现:ViewPropertyAnimator前面学习了补间动画,属性动画创建动画,相对来说比较专业,但也显得繁琐。只要在View层中实现一个简单的动画需要创建各种辅助的类对象,还好Android又提供了一条路,让开发者直接操作View来添加动画。1、ViewPropertyAnimatorAndroid比较让人头疼的是提供了很多方法可以实现相同的目的(API太多)。动画也是,前面已经

1.9k
布局动画:LayoutTransition
Android

布局动画:LayoutTransition

布局动画:LayoutTransition1、LayoutTransition介绍Layouttransition位于android.animation包中,Google从API 11时引入这个Layouttransition工具类,专门用来处理ViewGroup布局发生变化时对子控件进行动画处理。比如一组数据在ViewGroup中显示,这个时候如果添加或者删除其中的数据,同时伴随着每个item的

1.9k
TransitionDrawable:淡入淡出Drawable
Android

TransitionDrawable:淡入淡出Drawable

TransitionDrawable:淡入淡出Drawable更多Drawable详见Android Drawable。1、TransitionDrawableTransitionDrawable继承自LayerDrawable,算是对层级LayerDrawable的扩展(详见LayerDrawable:叠加图层),不过最多只支持两个子<item>。1.1、简介旨在在第一层和第二层之间淡入淡出。调

1.9k
Animator属性动画源码
Android

Animator属性动画源码

Animator属性动画源码仔细看看属性动画的源码,加深对动画实现原理的了解。ObjectAnimator继承自ValueAnimator,本篇主要以ValueAnimator为主。关于属性动画,详见之前两篇介绍属性动画的文章:属性动画:ValueAnimator和属性动画:ObjectAnimator。1、属性动画的构造得益于框架优秀的设计,构造一个属性动画对象很简单,举个简单的例子:从Valu

2.5k
实时调试插值方程:interpolator​
开源

实时调试插值方程:interpolator​

实时调试插值方程:interpolator分享一个实时调试插值方程的开源工具:interpolator,在动效开发中会有帮助,预览插值器效果,所见即所得。关于插值器另见动画插值器Interpolator一文。GitHub地址:github/inloop/interpolator。interpolator是用JavaScript和Html实现的前端项目,clone到本地打开index.html文件即

2.4k
Android

StateListAnimator 详解与使用方法

StateListAnimator 详解与使用方法StateListAnimator 是 Android API 21 (Lollipop) 引入的强大动画框架组件,它可以根据视图的状态变化自动触发相应的动画效果。下面我将详细介绍其核心用法和工作原理。1、基础概念1.1、本质特性状态驱动:根据 View 的状态(如 pressed/focused/enabled)切换动画属性动画:底层使用 Obj

615
Android

Android View 动画之 LayoutAnimation 详解

Android View 动画之 LayoutAnimation 详解1、LayoutAnimation 概述LayoutAnimation 是 Android 中用于为 ViewGroup 的子 View 添加进入动画的工具。它可以让列表、网格等容器中的子元素按照特定的顺序和时间间隔依次执行动画,从而创造出流畅、有序的视觉效果。核心特性: - 自动为 ViewGroup 的子 View 添加进入

491
Android

PathMeasure 动画路径追踪详解

PathMeasure 动画路径追踪详解PathMeasure 是 Android 中一个强大的工具类,用于测量 Path 路径的长度、获取路径上某一段的片段、以及判断路径是否闭合等。它可以帮助开发者更精确地控制和绘制复杂的路径动画效果,是实现流畅动画的重要工具。1、什么是 PathMeasurePathMeasure 的核心功能包括: • 测量路径总长度 • 截取路径片段 • 获取路径上某点的坐

406
Titanic 详解:让文字如水波浮动的 Android 动画库
开源

Titanic 详解:让文字如水波浮动的 Android 动画库

你能想象一段文字看起来像"浮在水面上",随着波浪上下起伏、半沉半浮吗?这不是特效视频,而是 Titanic——一个由 Romain Piel 开发的 Android 动画库。它通过对 TextView 的 TextPaint 应用动画化的 BitmapShader,让文字呈现出冰山浮水般的波浪效果。虽然项目已归档(DEPRECATED),但它展示的"Shader + Matrix 动画"技巧至今仍

416
开源

FoldableLayout 详解:Android 纸张折叠动画

FoldableLayout 详解:Android 纸张折叠动画你能想象在 Android 上实现"一张纸对折展开"的真实物理动画吗?不是简单的缩放或淡入淡出,而是像真实纸张一样沿折痕折叠、有光影变化、有厚度感的 3D 动画。Alex Vasilkov 的 FoldableLayout 就是实现这种效果的开源库——1.6k+ Star,Android 上最经典的"纸张折叠"动画组件。虽然库已停止维

292