Android开发实战之补间动画和属性动画

  说起动画,其实一点也不陌生,在使用一款app的时候为了优化用户体验,多多少少的,都会加入动画。

安卓中的动画,分为两大类:补间动画和属性动画。本篇博文会详细介绍总结这两大动画,希望本篇博文对你的学习和生活有所帮助。

**补间动画**

 补间动画分为四类:平移动画,旋转动画,缩放动画和渐变动画。这几类动画用法都差不多,只是对象参数不同这里我统一展示出来。以下是效果图:

实现代码很简单:

       btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //平移动画
                TranslateAnimation translate=new TranslateAnimation(Animation.RELATIVE_TO_SELF,300,
                        Animation.RELATIVE_TO_SELF,300);
                translate.setDuration(3000);
                translate.setFillAfter(true);
                img.startAnimation(translate);
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //旋转动画
                RotateAnimation rotate=new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,
                        Animation.RELATIVE_TO_SELF,0.5f);
                rotate.setFillAfter(true);
                rotate.setDuration(3000);
                img.startAnimation(rotate);
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //缩放动画
                ScaleAnimation scale=new ScaleAnimation(0,2,0,2,Animation.RELATIVE_TO_SELF,0.5f,
                        Animation.RELATIVE_TO_SELF,0.5f);
                scale.setDuration(3000);
                img.startAnimation(scale);
            }
        });
        btn4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //渐变动画
                AlphaAnimation alpha =new AlphaAnimation(0,1);
                alpha.setDuration(3000);
                img.startAnimation(alpha);
            }
        });

 总结以下:

AlphaAnimation:渐变动画,0.0f完全透明,1.0f完全显示。

RotateAnimation:旋转动画。起始角度,结束角度,相对值,横坐标的比例,相对值,纵坐标的比例。(结束角度为正就为顺时针,负数为逆时针)

ScaleAnimation:比例动画,x的位置比例起始,x的位置比例结束,y的位置比例起始,y的位置比例结束,x的锚点,x的参数,y的锚点,y的参数

setDuration:设置动画播放时间。
setFillAfter(true):界面停留在动画结束的状态·而不是初始化状态。
 除此之外我们还可以将这几个动画效果组合起来,实现组合动画。
效果图:
代码也是简单易懂:
 AnimationSet animationSet=new AnimationSet(false);
                TranslateAnimation translate=new TranslateAnimation(Animation.RELATIVE_TO_SELF,300,
                        Animation.RELATIVE_TO_SELF,300);
                translate.setDuration(3000);
                translate.setFillAfter(true);
                animationSet.addAnimation(translate);
                RotateAnimation rotate=new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF,0.5f,
                        Animation.RELATIVE_TO_SELF,0.5f);
                rotate.setFillAfter(true);
                rotate.setDuration(3000);
                animationSet.addAnimation(rotate);
                ScaleAnimation scale=new ScaleAnimation(0,2,0,2,Animation.RELATIVE_TO_SELF,0.5f,
                        Animation.RELATIVE_TO_SELF,0.5f);
                scale.setDuration(3000);
                animationSet.addAnimation(scale);
                AlphaAnimation alpha =new AlphaAnimation(0,1);
                alpha.setDuration(3000);
                animationSet.addAnimation(alpha);
                img.startAnimation(animationSet);

AnimationSet通过addAnimation()方法,可以将动画结合起来,实现更多的动画效果。

**属性动画**

早起的补间动画是没有改变view的参数的,view在刷新的时候会变回原来的样子。所以,在安卓3.0之后,谷歌推出了属性动画。

而属性动画的实质就是通过例如:translationX,translationY,scaleX,scaleY,rotationX,rotationY等等,这些新增的属性,记录View的值

从而使View的动画可以得到保存,刷新后不会消失。

下面是一个简单例子,通过属性动画改变x上的缩放值:

接下来是实现代码:

  btn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ObjectAnimator objectAnimator= ObjectAnimator.ofFloat(img,"scaleX",0.5f);
                objectAnimator.setDuration(3000);
                objectAnimator.setStartDelay(1000);
                objectAnimator.start();
            }
        });

如果这样实现,其实是有很多弊端的。因为,属性动画只有在3.0的版本之后能用,版本过低,是没法使用的。并且,实现一个属性动画,参数也过于繁琐。所以,这里推荐

使用开源框架:nineoldandroids。

如果你使用的是Android studio 在gradle中加入:dependencies {
compile 'com.nineoldandroids:library:2.4.0'
}

 使用这个开源框架,不但能在低版本中使用属性动画,而且,实现更为简单更加方便。

   btn6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //NIneOldAndroid中的一个类实现
                ViewPropertyAnimator
                        .animate(img)
.scaleX(0
.5f) .setInterpolator(new OvershootInterpolator())//超过一点回来 .setDuration(3000) .start(); } });

一个简单的例子:

怎么样,是不是更加好看了?

代码也是非常简单:

  ViewPropertyAnimator
                        .animate(img)
                        .translationY(600)
                        .setInterpolator(new BounceInterpolator())//弹性掉落
                        .setDuration(1500)
                        .start();

还可以这样:

代码:

      ViewPropertyAnimator
                        .animate(img)
                        .translationX(40)
                        .setInterpolator(new CycleInterpolator(6))//左右来回抖动
                        .setDuration(1500)
                        .start();

好了,关于动画就介绍到这里,如果懂得了基本方法,如何酷炫的动画都可以通过自己组合起来,如果本篇博文有什么写的不对的地方,欢迎留言,互相探讨,最后,希望

你通过这篇博文对你的学生和生活有所帮助。

 
 

转载于:https://www.cnblogs.com/lovelyYakir/p/5808698.html

Android 补间动画、帧动画和属性动画开发大全 Android 动画一、前言二、动画2.1 动画分类2.2 补间动画2.2.1 平移(TranslateAnimation)2.2.2 缩放(ScaleAnimation)2.2.3 旋转(RotateAnimation)2.2.4 透明度(AlphaAnimation)2.2.5 组合(AnimationSet)2.2.6 TimeInterpolator 时间插值器2.3 帧动画2.3.1 实现2.3.2 优化2.4 属性动画2.4.1 ValueAnimator2.4.2 ObjectAnimator 阅读详情

相关推荐

Android动画(帧动画、补间动画、属性动画)讲解

** Android动画(帧动画、补间动画、属性动画)讲解 ** 首先我们来看看啥是帧动画、补间动画、属性动画。 介绍: 帧动画:是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。 补间动画:指的是做FLASH动画时,在两个关键帧中间需要做“补间动画”,才能实现图画的运动; 属性动画:帧动画与补间动画实现了对View进行移动、缩放、旋转和淡入淡出的效果。但对于android开发师来说是不够的,同

程序猿追的博客 2万+

Android补间动画、帧动画、属性动画详解

以前一直是自己在网上东平西凑的找,找到的东西也是零零散散,很多时候都是看着看着就没了,时间浪费了,问题却还没得到解决,很让人抓狂。后面我就自己整理了一套资料,还别说,真香!资料有条理,有系统,还很全面,我不方便直接放出来,大家可以先看看有没有用得到的地方吧。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!67108)][外链图片转存中…(img-u8xyeI9D-1712596567108)]

2301_77595001的博客 1456

融合帧动画、补间动画和属性动画的Android蝴蝶飞舞效果实现

本文还有配套的精品资源,点击获取 简介:在Android开发中,动画是增强用户体验的重要手段。本文详细介绍了如何使用帧动画、补间动画和属性动画这三种技术实现一个逼真的蝴蝶飞舞动画效果。首先,通过准备不同飞行姿态的图片并利用 AnimationDrawable 类实现帧动画;接着,使用 TranslateAnimation 等补间动画技术改变视图属...

weixin_35516273的博客 1164

Android动画机制(1):帧动画、补间动画详解及实战演练

Android目前包含四种动画:Property Animation、View Animation、Drawable Animation、SVG,其中,属性动画被引入于Android 3.0,它可应用于任何对象;视图动画包含旋转、缩放、移动、透明度动画效果,但只适用于View;SVG矢量动画被引入与Android5.0,通过SVG可以创建更加丰富的动画效果。除了单独的给view增加旋转、移动、缩放、淡出淡入动画,Android还提供了<set../>标签属性实现几种动画的混合使用,该XML属性对应的Java

老蒋也疯狂 2057

Android补间动画小实例

这是一个Android的补间动画小实例 ,大家可以进行参考

FlashAttention 快速安装指南(避免长时间编译)

FlashAttention 编译太慢?本篇提供无需编译的预编译 wheel 快速安装方案,适配多版本 Python、PyTorch 和 CUDA,极大节省部署时间!

Junseer的博客 9721

Carson带你学Android:这是一份全面 & 详细的补间动画学习指南

前言 动画的使用 是 Android 开发中常用的知识 可是动画的种类繁多、使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将详细介绍 Android 动画中 补间动画的原理 & 使用 学习Android 动画最好先了解:自定义View的原理,请参考我写的文章: (1)自定义View基础 - 最易懂的自定义View原理系列 (2)自定义View Meas

Carson带你学Android 2万+

【STABLE_BASELINE3】强化学习算法实战:模型的保存,读取,再训练

STABLE-BASELINE3,模型读取,再训练:有时候需要在已经训练好的模型基础上进行再次训练。

Kiek17的博客 4870

Android补间动画

请尊重别人的劳动成果 谢谢!! 源地址:https://www.jianshu.com/p/733532041f46 补间动画的使用方式分为两种:在XML 代码 / Java 代码里设置 xml优点:动画描述的可读性更好 Java优点:动画效果可动态创建 布局动画分为5种: 1:平移动画(Translate) 2:缩放动画(Scale) 3:旋转动画(Rotat

Noviceduderi的博客 274

ZYNQ烧写程序到flash

1.打开SDK创建FBSl项目 点击finish 2.创建BootImage 导入fsbl.elf、.bin、.elf三个文件,Create Image 生成BOOT.bin文件 3.将BOOT文件烧录到FLASH image File选择2中生成的BOOT.bin文件,FSBL File选择fsbl.elf文件,连接好ZYNQ的Jtag,点击Program,即可烧录。 4.烧录程序到FLASH失败 如果是第一次烧录,需更改创建的fsbl工程下的main函数,在如下代码处加入BootModeRegi

qq_40603614的博客 8343

2025年第十六届蓝桥杯省赛C/C++大学B组 个人题解

也是写了写部分题解,朱波也是狠狠水了个省二┭┮﹏┭┮,毕竟许多算法知识没怎么学。

2301_80173664的博客 2432

Android动画学习之补间动画和逐帧动画

上述代码是定义Frame动画的基本语法格式,< animation-list >为帧动画的根节点,其中属性drawable表示当前帧要播放的图片,duration表示当前帧的播放时长,单位为ms,和前面补间动画中的属性介绍一致。逐帧动画的原理与放胶片看电影的原理是一样的,它们都是一张一张地播放事先准备好的静态图像。在使用逐帧动画时,需要在res/drawable目录下创建好帧动画的XML文件,并在< animation-list >节点的< item >子节点中,指定图片帧出现的顺序以及每帧的持续时间。

2401_89308094的博客 792

STM32F103+W5500网络通信

STM32F103+W5500网络通信一、W5500模块(一)W5500以太网模块介绍(二)模块排针功能表二、 modbus协议(一)modbus协议原理(二)Modbus 通讯方式1.Modbus三种通讯方式2.在Modbus网络上传输3.以太网(modbus tcp/ip)三、参考资料 一、W5500模块 (一)W5500以太网模块介绍 D-W5500 EVB以太网模块是一款基于WIZnet W5500芯片的以太网模块,且性价比高的以太网模块。W5500是一款全硬件TCP/IP嵌入式以太网控制器,为

”一只特立独行的猪“的博客 1万+

Android 安卓动画 补间动画 - 平移动画

补间动画-平移动画:补间动画-缩放动画:补间动画-旋转动画:补间动画-透明/渐变动画:补间动画-组合动画(四个动画一起播放):属性动画-渐变透明动画:属性动画-旋转动画:属性动画-缩放动画:属性动画-移动动画:属性动画-组合动画:效果图 篇操作步骤在res下创建anim文件夹,右击res文件夹,按下图操作创建找到anim点击OK,此时就创建好了在这个文件夹(anim)下新建xml文件,右击anim文件夹按下图操作创建在这个xml文件中写入属性,属性详细见下列表格解释:布局文件 篇。

2401_84010402的博客 1298

Fedora 41上安装钉钉7.6.25,我踩过的那些依赖坑和最终解决方案

本文详细记录了在Fedora 41上安装钉钉7.6.25版本的全过程,包括解决依赖问题、转换deb包为rpm格式、处理libm.so.6错误等关键步骤。通过分享这些实用技巧和最终解决方案,帮助Linux用户顺利在Fedora系统上运行钉钉客户端,提升工作效率。

weixin_30485379的博客 206

(二)OpenClaw-连接即时通讯平台-集成飞书完整配置指南

本文详细介绍了如何将OpenClaw与飞书机器人对接,实现通过飞书聊天窗口下达指令自动执行任务的高效协作模式。主要内容包括:1)OpenClaw服务部署验证和飞书账号准备;2)在飞书开放平台创建企业自建应用、添加机器人能力、获取凭证和开通必要权限;3)OpenClaw服务端的首次配置,包括设置飞书通道参数和启动长连接。文章提供了完整的操作步骤和截图指引,帮助用户快速完成对接配置,实现AI自动化助手功能。

直到世界的尽头 2248

Android 安卓动画 属性动画 - 组合动画

有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!有任何问题,欢迎广大网友一起来交流,分享高阶Android学习视频资料和面试资料包~偷偷说一句:群里高手如云,欢迎大家加群和大佬们一起交流讨论啊![外链图片转存中…(img-zrzy3471-1712156011498)]

2401_84010302的博客 976

OpenHarmony RK3568 从 32 位切换到 64 位用户空间指南

修改了编译参数(如修复 Q5 后),但 ThinLTO 缓存中保留了旧参数编译的 bitcode。这是一种节省内存的设计(32 位指针占 4 字节 vs 64 位占 8 字节),但在某些场景下需要切换为纯 64 位。切换到 64 位用户空间后,CPU 全程运行在 AArch64 状态,不再需要 AArch32 兼容模式。内核本身已经是 64 位(aarch64),切换用户空间位数不影响内核。(32 位兼容层)在纯 64 位系统中不再需要,可以关闭以减小内核体积。这两个参数对 64 位编译毫无意义,配合。

程小二的博客 690

Android 动画:逐帧动画,补间动画和属性动画

1.三种动画的介绍 现在 Android 常用的动画有三种: 逐帧动画,补间动画和属性动画; FrameAnimation(逐帧动画):将多张图片组合起来进行播放,很多 App 的加载动画是采用这种方式(如:美团,去哪儿)。 TweenAnimation(补间动画):补间动画由 Animation 类来实现具体效果,包括平移(TranslateAnimation)、缩放(ScaleAnima...

wuqingsen1的博客 2518

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

关于Android的帧动画,补间动画,属性动画的使用和总结。(附源码)

此篇文章为Android三种动画(帧动画,补间动画,属性动画的使用和总结)

XJ200012的博客 3948

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Android 动画系列之补间(Tween)动画详解

上一篇博客中写了逐帧动画(Frame)的使用,Android中除了支持逐帧动画(Frame)之外,也提供了对补间(Tween)动画的支持。补间动画就是指开发者只需要指定动画的开始、结束等“关键帧”,而动画的变化的“中间帧”则由系统计算并补齐。这也是“补间”二字的来意。

Airsaid 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【安卓开发】帧动画、补间动画、属性动画

帧动画、补间动画、属性动画

weixin_46896210的博客 810

Android 动画各种实现,包括帧动画、补间动画和属性动画的总结分享

PlayView属性动画拓展(一)自定义 View 基础Drawable 波浪动画3D 省市联动效果滚轮,很像 ios 的效果在 buildSrc 内包含一些关于 gradle 构建流程的自定义内容,包括实现生成 apk 根据 flavor 改名。对构建流程中执行的 task 按执行时长打印,发现编译耗时的 task在构建流程中对特定注解的方法或类进行耗时检测。对代码中点击事件的插桩埋点通过配置对三方库中的代码进行特定的插桩,实现特定的功能。以下是部分内容截屏动画。

2401_84909789的博客 920

Android:帧动画和补间动画看这篇就足够了!

如果你觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。,第一时间获取最新知识点Android架构师之路很漫长,一起共勉吧!

2401_89690204的博客 1099
上一篇: Android开发实战之ViewPager实现向导界面
下一篇: Android开发实战之简单音乐播放器
diebing0439
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值