Android 值当AdView显示在中时,Animator行为会发生变化
我已经为可视化进度创建了一个自定义视图。它有一个简单的介绍动画,如下所示:Android 值当AdView显示在中时,Animator行为会发生变化,android,view,admob,android-animation,android-custom-view,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 p
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个关键帧)。我检查值animator.FrameDelay
,它不会改变
是什么导致了这个问题,解决方案是什么?如前所述,这个问题与嵌入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);
在没有看到更多代码的情况下很难说是肯定的,但我的建议是使用Android Studio profiled/debug工具来比较你的布局是否有广告(这可能是一个网络视图,如果不是硬件加速的话,可能需要很多CPU来渲染-这只是一个想法而已)。。。在您用来测试的设备中,启用(开发工具中的)“调试GPU->SHow Overdraw”(或类似工具),查看广告是否导致了大量的Overdraw;使用该设备提供的各种工具,看看您是否能够找出导致速度缓慢的原因。探查器是你的朋友!(也可以使用工具->布局检查器)在运行时查看布局的快照。(顺便说一句,小部件看起来很酷):@MartinMarconcini谢谢你的完整解释,我已经检查过了,但是没有太大的问题overload@MartinMarconcini谢谢你的帮助,很有效