【发布时间】:2019-06-06 12:56:06
【问题描述】:
我制作了一个自定义视图来可视化进度。它有一个简单的介绍动画,如下所示:
PropertyValuesHolder c=PropertyValuesHolder.ofInt("c",0,100);
ValueAnimator anim=new ValueAnimator();
anim.setValues(c);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
position = (int) animation.getAnimatedValue("c");
postInvalidate();
}
});
anim.setDuration(1000);
anim.start();
它可以在大约 50 个关键帧的情况下顺利运行,但是在放置在父视图上的 AdView 之后,相同的动画会出现延迟(性能降低到大约 20 个关键帧)。我检查了ValueAnimator.FrameDelay,它没有改变。
是什么导致了这个问题,解决方法是什么?
【问题讨论】:
-
很难在没有看到更多代码的情况下肯定地说,但我的建议是使用 Android Studio 分析/调试工具来比较有/没有广告的布局(可能是 WebView,也可能是如果不是硬件加速,则需要大量 CPU 来渲染 - 只是一个想法 -)。
-
发生在我身上的另一件事...在您用于测试的设备中,启用(在开发人员工具中)“调试 GPU -> SHow Overdraw”(或类似的)以查看是否AD导致大量透支;使用设备提供的各种工具,看看您是否可以查明导致缓慢的原因。剖析器是您的朋友! (也可以使用工具 -> 布局检查器)在运行时查看布局的快照。
-
(顺便说一句,小部件看起来很酷):)
-
@MartinMarconcini 感谢您的完整解释,我已经检查过了,但没有严重超载
-
@MartinMarconcini 感谢您的帮助,它有效
标签: android view admob android-animation android-custom-view