我在更高密度的Android设备上遇到了Fragment setCustomAnimations的问题。
我正在做翻转卡动画。 在mdpi和hpid设备上,动画非常流畅。 但是在xhdpi,xxhdi和xxxhdpi设备上,动画可以正常运行,但看起来它会跳过几帧。
我正在使用此代码进行片段转换。
这是动画片
<!-- Before rotating, immediately set the alpha to 0. -->
<objectAnimator
android:duration="0"
android:propertyName="alpha"
android:valueFrom="1.0"
android:valueTo="0.0" />
<!-- Rotate. -->
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:propertyName="rotationY"
android:valueFrom="180"
android:valueTo="0" />
<!-- Half-way through the rotation (see startOffset), set the alpha to 1. -->
<objectAnimator
android:duration="1"
android:propertyName="alpha"
android:startOffset="250"
android:valueFrom="0.0"
android:valueTo="1.0" />
<!-- Rescale in -->
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:propertyName="scaleX"
android:startOffset="250"
android:valueFrom="0.60"
android:valueTo="1.0" />
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:propertyName="scaleY"
android:startOffset="250"
android:valueFrom="0.60"
android:valueTo="1.0" />
这是动画片
<!-- Rotate. -->
<objectAnimator
android:duration="500"
android:interpolator="@android:interpolator/accelerate_decelerate"
android:propertyName="rotationY"
android:valueFrom="0"
android:valueTo="-180" />
<!-- Half-way through the rotation (see startOffset), set the alpha to 0. -->
<objectAnimator
android:duration="1"
android:propertyName="alpha"
android:startOffset="250"
android:valueFrom="1.0"
android:valueTo="0.0" />
<!-- Rescale out -->
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:propertyName="scaleX"
android:valueFrom="1.0"
android:valueTo="0.60" />
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="250"
android:propertyName="scaleY"
android:valueFrom="1.0"
android:valueTo="0.60" />
即使我拿出缩放动画,它仍然在mdpi和hdpi设备上看起来更平滑。
答案 0 :(得分:0)
我今天在类似的问题上发了2个冗长的答案。我会推荐你 ...Image is changing when scrolling a ListView。
看来你还有其他一切正常。让我们发布,特别是因为我可能在不久的将来遇到这个问题。对我来说,我必须监控这两个帖子,呵呵。
答案 1 :(得分:0)
我发现这个动画对我来说跳了几帧但是这改进了很多:
@Override
public void onViewCreated (View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
另外考虑一下你的动画在高分辨率设备上是否变得不那么平滑,可能是你的图像缩放太大,占用大量内存并减慢速度 - 当我放置一个大的高时,我自己也经历过认为不会应用缩放的“drawable”文件夹中的res图像(此文件夹通常只应用于使用xml指定的资源),但实际上它被视为mdpi图像,因此不需要按比例放大res设备可能会破坏动画的性能