我已经制作了一个自定义视图,以可视化进度。它具有一个简单的简介动画,如下所示:
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
,它没有变化。
什么原因导致此问题,并且解决方案是什么?
答案 0 :(得分:1)
正如@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);