gpt4 book ai didi

Android ObjectAnimator+ValueAnimator 卡顿

转载 作者:行者123 更新时间:2023-11-30 01:17:22 34 4
gpt4 key购买 nike

我尝试制作ImageView 的扩展布局动画和平移 动画,但我同时启动它们时它们看起来有点滞后。我在真实设备 Moto X(2013) 上对其进行了测试。不确定更强大的设备,因为默认情况下我所有的模拟手机都是滞后的:)。

我还尝试打开HardwareType

View.setLayerType(View.LAYER_TYPE_HARDWARE, null);

但这也没有给出结果。

下面是翻译代码:

 ObjectAnimator translate = ObjectAnimator.ofFloat(view, "translationX", 0f, 380.0f);

translate.setDuration(500);
translate.setInterpolator(new LinearInterpolator());
translate.start();

布局扩展:

va = ValueAnimator.ofInt(340, 904);
va.setDuration(500);
va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
Integer value = (Integer) animation.getAnimatedValue();
user_container.getLayoutParams().height = value.intValue();
user_container.requestLayout();
System.out.println("value = " + value.intValue() );
}
});

没什么特别的。那么,有人能告诉我,如何使动画及时不滞后吗?

最佳答案

首先,您应该衡量什么占用了这么多时间。如果您有自定义 View ,通常是您的绘制方法。如果没有,您通常在主线程上做其他事情会花费太多时间 - 即移动或更新正在访问 I/O 或类似内容的监听器。

尝试为初学者踢出日志行。并且尽量不要调用 requestLayout() 只是为了看看会发生什么以及它是否有任何不同。如果您的 user_container 非常复杂,那么您肯定会遇到延迟。

顺便说一句,如果您要测试的东西可能因设备而异,请不要使用模拟器 :)

关于Android ObjectAnimator+ValueAnimator 卡顿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37645267/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com