我正在尝试整理一个光滑的动画,其中占据大部分屏幕空间的视图旋转以显示背面的另一个视图:
rotatingView.animate().rotationY(90)
.setDuration(250)
.setInterpolator(new AccelerateInterpolator())
.withEndAction( /* Runnable that sets up the rear side of the view,
then rotates Y another 90 degrees */);
问题是,通过此动画的大约80%,视图消失。直到下半场进入大约20%时,视图才会重新出现。换句话说,它在11点消失,并在1点再次出现。这是为什么?
答案 0 :(得分:0)
我终于偶然发现了这类问题的答案。使用setCameraDistance()
,但note that:
距离以“深度像素”表示。默认距离取决于屏幕密度。例如,在中密度显示器上,默认距离为1280.在高密度显示器上,默认距离为1920.
因此,要将摄像机“提升”到视图的近边缘不会剪切它的位置,请将距离设置为“默认”距离的几倍。在我使用多个平板电脑屏幕的情况下,需要4000f的值。有关setCameraDistance()
参数计算的详细信息,请参阅the link。
您可能希望将setCameraDistance()
与clipToPadding="false"
和clipChildren="false"
合并到XML文件中;这些控制掩盖了另一个视图。
此外,我怀疑YMMV跨越不同的Android版本和供应商。