我正在制作动画ImageView
在 Android (API 19) 中,使用ObjectAnimator
。我一切正常,在 Galaxy S3 上显示完美,但在我的 Nexus 7(2013 WiFi 型号)上却出现问题。
目标是使用以下命令让图像绕其 Y 轴完整 360° 旋转rotateY
。然而,在 Nexus 7 上,在 75° 到 105° 之间,图像消失。我的可绘制对象是从 PNG 创建的,相关代码如下。
View:
<ImageView
android:id="@+id/login_logo"
android:layout_width="match_parent"
android:layout_height="120dp"
android:layout_marginTop="30dp"
android:src="@drawable/mimo_logo"/>
开始动画:
ImageView image = (ImageView) findViewById(R.id.login_logo);
Animator anim = AnimatorInflater.loadAnimator(context, R.animator.flipping);
anim.setTarget(image);
anim.start();
以及动画本身:
<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:propertyName="rotationY"
android:repeatCount="-1"
android:valueFrom="0"
android:valueTo="360" />
我将努力获取实际问题的 GIF,但有人知道 Nexus 7 为何会出现问题吗?
EDIT:这是它的样子(使用adb shell screenrecord
):
尝试使用: image.setCameraDistance(float) 方法。
来自文档:
例如,相机的距离会影响 3D 变换
绕 X 轴和 Y 轴旋转。如果旋转X或旋转Y
属性已更改,并且此视图很大(超过大小的一半
屏幕的距离),建议始终使用相机距离
大于高度(X 轴旋转)或宽度(Y 轴旋转)
旋转)此视图。
如果您想指定一个导致视觉一致的距离
不同密度下的结果,使用以下公式:
float scale = context.getResources().getDisplayMetrics().density;
view.setCameraDistance(distance * scale);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)