动画在高密度设备上不流畅

时间:2015-03-04 15:21:30

标签: android animation android-fragments

我在更高密度的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设备上看起来更平滑。

2 个答案:

答案 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设备可能会破坏动画的性能