在开发时,在聊天室内用到属性动画,时间久了卡顿,先看一下效果图:

礼物动画是 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属性动画卡顿的优化相关推荐

  1. Android View体系(三)属性动画

    上一篇文章讲了View滑动的六种方法,其中一种是使用动画,这篇文章我们来讲一讲动画的其中一种:属性动画. 1.android视图动画和属性动画 视图动画我们都了解,它提供了AlphaAnimation ...

  2. Android动画学习记录二(属性动画、估值器和插值器)

    Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) Android动画学习记录二(属性动画.估值期和插值器) 一.补间动画缺陷 二.属性 ...

  3. 【转】浅析Android动画(二),属性动画高级实例探究

    2019独角兽企业重金招聘Python工程师标准>>> ObjectAnimator实现属性动画 为了写好Android动画这几篇博客,在动笔之前我是下过很大决心的,我对自己的要求是 ...

  4. Android动画案例(三)属性动画

    前方高能!!!有大量理论性的知识 Android系统在一开始的时候就提供了两种实现动画的方式,逐帧动画和补间动画 逐帧动画效果非常简单,就是让一张张单独的图片连续起来播放,类似于动画片的工作原理 补间 ...

  5. Android L(5.0)源码之图形与图像处理之动画——Frame、Tween、属性动画、SurfaceView...

    工作中暂时还没涉及到,暂时先不总结 转载于:https://www.cnblogs.com/longjunhao/p/4221374.html

  6. 秒懂Android属性动画

    自从Android3.0 版本加入属性动画后,在平时的开发中多多少少也使用了,但是从来没有对其做一个系统的分析和总结,最近刚好有点时间,来对这个话题做一个分析和总结. 概述 Android动画体系 引 ...

  7. android 从底部网上的平移动画_Android属性动画,看完这篇够用了吧

    转载自作者新小梦 随着APP的开发周期演进,APP不再满足基础的功能保障,需要有较好视觉体验和交互操作.那么动画效果是必不可少的,动画有帧动画,补间动画,属性动画等等. 本文通过一些简单常见的动画效果 ...

  8. Android—逐帧、补间、属性动画

    1.Tween Animation 补间动画 这类动画比较简单,一般就是平移.缩放.旋转.透明度,或者其组合,可以用代码或者xml文件的形式,推荐使用xml文件形式,因为可以复用. 四个动画效果实现类 ...

  9. android+动画队列,Android属性动画详解

    前言 属性动画是Android 3.0(API 11)新加入的动画框架,属性动画弥补了视图动画的很多短板,因此已经成为大多数动画场景的首选框架. 目录 目录 1. 属性动画出现的原因 在属性动画出现以 ...

  10. android 自定义view如何控制view的高度_Android自定义View属性动画

    属性动画 DEMO地址:https://github.com/chaozhouzhang/CustomProgressView 1.值动画 ValueAnimator 值动画具体实现步骤: /** * ...

最新文章

  1. mysql insert 数据_MySQL-插入数据(INSERT)
  2. 面试lua笔试题各种坑
  3. Hadoop学习(二)——MapReduce\Yarn架构
  4. MySQL三大范式详解(小白也能懂哦)
  5. 64位windows7配置32位odbc
  6. Java格式化Date为字符串的高级写法
  7. 中位数和顺序统计量(第9章)
  8. django3安装rest_framework,并测试
  9. ngram模型中文语料实验step by step(3)-ngram模型的光滑处理
  10. python习题错误整理(一)
  11. Java开源生鲜电商平台-支付模块的设计与架构(源码可下载) Java开源生鲜电商平台-订单表的设计(源码可下载)...
  12. mysql sam和db_Mysql
  13. 【领域适应】训练梯度反向层(gradient reversl layer, GRL)
  14. delphi 断点调试android,Delphi 2010远程调试 - 无法使断点工作
  15. php连接mysql数据库 简洁代码
  16. 在xp系统上安装java8
  17. 记录vant weapp 小程序组件库遇到的坑以及ios和安卓兼容问题 SubmitBar
  18. HTTP ERROR 404 Problem accessing /hwi/authorize.jsp. Reason: HWI HIVE
  19. docker 安装完成后测试hello-world出现问题(Unable to find image 'hello-world:latest' locally)
  20. 整数a和整数b间1的个数

热门文章

  1. 多所985、211高校教授被通报!国自然发布处理决定!
  2. java ognl表达式_常用的OGNL表达式
  3. python 东方财富接口_东方财富开放交易api,我只想要东方财富软件交易功能
  4. 最新Vue2.0+组件开源项目库集合
  5. Web前端 ---入门教学
  6. 汉王数据导入java环境,汉王数据管理系统导入数据怎样进行数据更新,只导出一天的考勤数据?...
  7. 用于HTML5移动开发的10大移动APP开发框架
  8. 【神科普】诺基亚:你以为它死了,其实它已重回世界第二
  9. mtk2503 如何支持使用epo?
  10. 乾颐堂军哥华为HCNP真题讲解(2017至2018版)真题更新版到来