4

我在某些设备上对 ObjectAnimator 类进行了一些测试,除了一个设备外,一切都很好:Huawei P8 Lite 2017。

在此设备上,View 在动画开始时“消失”并在结束时“出现”。仅当我使用 AnimatorSet/Animator(Java 代码或 XML)时才会出现此问题,但使用旧动画类(TranslateAnimation、AlphaAnimation...)的动画效果很好。

以下是没有问题的设备列表: Nexus 5 Nexus 5X Nexus 9 HTC One M9 Samsung GS4 Pixel XL Alcatel OneTouch Idol 5

这个华为有什么问题?

编辑:我做了一些其他的测试,问题似乎只与旋转动画有关。

ObjectAnimator r = ObjectAnimator.ofFloat(myView, View.ROTATION_Y, 540);
r.setDuration(5000);
r.start();

适用于除华为以外的所有设备。

如果我用 ALPHA 或 TRANSLATION_X 或 Y 替换 ROTATION_Y,它在华为上工作。

这是一个或多或少相同问题的链接: ObjectAnimator 导致 ImageView 消失

4

1 回答 1

4

我对华为设备(P9 Lite)也有同样的问题。

问题是转换过程中的“相机距离”。华为相机距离默认值太小,需要通过代码设置:

image.setCameraDistance(float) 

从文档:

如果要指定在不同密度下产生视觉一致结果的距离,请使用以下公式:

float scale = context.getResources().getDisplayMetrics().density;
 view.setCameraDistance(distance * scale);
于 2018-03-29T12:38:18.340 回答