在AdView中显示时,ValueAnimator行为会发生变化

时间:2019-06-06 12:56:06

标签: android view admob android-animation android-custom-view

我已经制作了一个自定义视图,以可视化进度。它具有一个简单的简介动画,如下所示:

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,它没有变化。

before adMob after adMob

什么原因导致此问题,并且解决方案是什么?

1 个答案:

答案 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);