android 动画卡顿优化,Android属性动画卡顿的优化
在开发时,在聊天室内用到属性动画,时间久了卡顿,先看一下效果图:
礼物动画是 SVGA 动画和属性动画配合使用,才达到这样的效果;这是在聊天室内,会不停的刷这种礼物,在测试时,刷到70个左右,出现明显的卡顿现象;
为了解决卡顿的问题,去搜了挺多,最终找到了解决的方法;
先看我之前的写法:
ObjectAnimator animatorX = ObjectAnimator.ofFloat(view, "scaleX", 1.0f);
ObjectAnimator animatorY = ObjectAnimator.ofFloat(view, "scaleY", 1.0f);
AnimatorSet animatorSet = new AnimatorSet();
//动画持续时间
animatorSet.setDuration(500);
//X轴和Y轴同时开始
animatorSet.playTogether(animatorX, animatorY);
//动画开始
animatorSet.start();
上面似乎没什么问题,但时间久了就是卡顿~~~;经过一番折腾,换成了下面的写法 :
private PropertyValuesHolder animatorX;
private PropertyValuesHolder animatorY;
animatorX = PropertyValuesHolder.ofFloat("scaleX", 0f, 1.0f);
animatorY = PropertyValuesHolder.ofFloat("scaleY", 0f, 1.0f);
ObjectAnimator.ofPropertyValuesHolder(view, animatorX, animatorY).start();
换成这样之后,测试送了 200 个礼物也没有明显的卡顿;
有兴趣的可以下载我的小例子(项目中包括:SVGA 动画和属性动画配合使用实现复杂的动画效果,以及对属性动画的优化,解决卡顿的问题):
GitHub 下载地址:https://github.com/wuqingsen/Animation
到这里就讲完了,下面是其他的一些推荐写法,在这里做一下记录.:
先看下面的写法:
AnimatorSet animSet = new AnimatorSet();
ObjectAnimator transYFirstAnim = ObjectAnimator.ofFloat(mView, "translationY", 0, 100);
ObjectAnimator transYSecondAnim = ObjectAnimator.ofFloat(mView, "translationY", 100, 0);
animSet.playSequentially(transYFirstAnim, transYSecondAnim);
将上面的写法替换为:
Keyframe k0 = Keyframe.ofFloat(0f, 0); //第一个参数为“何时”,第二个参数为“何地”
Keyframe k1 = Keyframe.ofFloat(0.5f, 100);
Keyframe k2 = Keyframe.ofFloat(1f, 0);
PropertyValuesHolder p = PropertyValuesHolder.ofKeyframe("translationY", k0, k1, k2);
ObjectAnimator objectAnimator = ObjectAnimator.ofPropertyValuesHolder(mView, p);
objectAnimator.start();
导致卡顿的最关键的还是内存泄漏,如果补间动画可以代替的话,还是使用补间动画,补间动画不会出现此问题。
android 动画卡顿优化,Android属性动画卡顿的优化相关推荐
- Android View体系(三)属性动画
上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...
- Android动画学习记录二(属性动画、估值器和插值器)
Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...
- 【转】浅析Android动画(二),属性动画高级实例探究
2019独角兽企业重金招聘Python工程师标准>>> ObjectAnimator实现属性动画 为了写好Android动画这几篇博客,在动笔之前我是下过很大决心的,我对自己的要求是 ...
- Android动画案例(三)属性动画
前方高能!!!有大量理论性的知识 Android系统在一开始的时候就提供了两种实现动画的方式,逐帧动画和补间动画 逐帧动画效果非常简单,就是让一张张单独的图片连续起来播放,类似于动画片的工作原理 补间 ...
- Android L(5.0)源码之图形与图像处理之动画——Frame、Tween、属性动画、SurfaceView...
工作中暂时还没涉及到,暂时先不总结 转载于:https://www.cnblogs.com/longjunhao/p/4221374.html
- 秒懂Android属性动画
自从Android3.0 版本加入属性动画后,在平时的开发中多多少少也使用了,但是从来没有对其做一个系统的分析和总结,最近刚好有点时间,来对这个话题做一个分析和总结. 概述 Android动画体系 引 ...
- android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧
转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...
- Android—逐帧、补间、属性动画
1.Tween Animation 补间动画 这类动画比较简单,一般就是平移.缩放.旋转.透明度,或者其组合,可以用代码或者xml文件的形式,推荐使用xml文件形式,因为可以复用. 四个动画效果实现类 ...
- android+动画队列,Android属性动画详解
前言 属性动画是Android 3.0(API 11)新加入的动画框架,属性动画弥补了视图动画的很多短板,因此已经成为大多数动画场景的首选框架. 目录 目录 1. 属性动画出现的原因 在属性动画出现以 ...
- android 自定义view如何控制view的高度_Android自定义View属性动画
属性动画 DEMO地址:https://github.com/chaozhouzhang/CustomProgressView 1.值动画 ValueAnimator 值动画具体实现步骤: /** * ...
最新文章
- mysql insert 数据_MySQL-插入数据(INSERT)
- 面试lua笔试题各种坑
- Hadoop学习(二)——MapReduce\Yarn架构
- MySQL三大范式详解(小白也能懂哦)
- 64位windows7配置32位odbc
- Java格式化Date为字符串的高级写法
- 中位数和顺序统计量(第9章)
- django3安装rest_framework,并测试
- ngram模型中文语料实验step by step(3)-ngram模型的光滑处理
- python习题错误整理(一)
- Java开源生鲜电商平台-支付模块的设计与架构(源码可下载) Java开源生鲜电商平台-订单表的设计(源码可下载)...
- mysql sam和db_Mysql
- 【领域适应】训练梯度反向层(gradient reversl layer, GRL)
- delphi 断点调试android,Delphi 2010远程调试 - 无法使断点工作
- php连接mysql数据库 简洁代码
- 在xp系统上安装java8
- 记录vant weapp 小程序组件库遇到的坑以及ios和安卓兼容问题 SubmitBar
- HTTP ERROR 404 Problem accessing /hwi/authorize.jsp. Reason: HWI HIVE
- docker 安装完成后测试hello-world出现问题(Unable to find image 'hello-world:latest' locally)
- 整数a和整数b间1的个数
热门文章
- 多所985、211高校教授被通报!国自然发布处理决定!
- java ognl表达式_常用的OGNL表达式
- python 东方财富接口_东方财富开放交易api,我只想要东方财富软件交易功能
- 最新Vue2.0+组件开源项目库集合
- Web前端 ---入门教学
- 汉王数据导入java环境,汉王数据管理系统导入数据怎样进行数据更新,只导出一天的考勤数据?...
- 用于HTML5移动开发的10大移动APP开发框架
- 【神科普】诺基亚:你以为它死了,其实它已重回世界第二
- mtk2503 如何支持使用epo?
- 乾颐堂军哥华为HCNP真题讲解(2017至2018版)真题更新版到来