打赏

android 动画优化

在做的项目有太多动画 一天下来手机就很卡 优化方案:

先看我之前写的代码:

        ObjectAnimator animator = ObjectAnimator.ofFloat(innerView, "translationY", 0f, 30f, 0f);
     animator.setDuration(400).setInterpolator(new DampInterpolator());
     animator.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();

 

 

 

之前代码:

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();

 

posted @   YY2000  阅读(254)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示