AdView 显示时 ValueAnimator 行为发生变化
ValueAnimator behaviour changes when AdView shows in
我制作了一个自定义视图来可视化进度。它有一个简单的介绍动画,如下所示:
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
,它没有改变。
导致此问题的原因是什么,解决方案是什么?
正如@MartinMarconcini所说,问题与嵌入在 AdView 中的 WebView 有关。通过在 AdView 上启用硬件加速提高了性能。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
adView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
else adView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
我制作了一个自定义视图来可视化进度。它有一个简单的介绍动画,如下所示:
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
,它没有改变。
导致此问题的原因是什么,解决方案是什么?
正如@MartinMarconcini所说,问题与嵌入在 AdView 中的 WebView 有关。通过在 AdView 上启用硬件加速提高了性能。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
adView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
else adView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);