【问题标题】:animation not smooth on high density devices高密度设备上的动画不流畅
【发布时间】:2023-04-06 05:12:01
【问题描述】:

我在更高密度的 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 设备上仍然看起来更流畅。

【问题讨论】:

    标签: android animation android-fragments


    【解决方案1】:

    我今天就一个类似问题发布了 2 个冗长的答案。我会推荐你​​到 ...Image is changing when scrolling a ListView

    看来你的其他一切都在工作。让我们保持最新状态,特别是因为我在不久的将来可能会遇到这个问题。对我来说,两个帖子我都要监控,呵呵。

    【讨论】:

      【解决方案2】:

      我发现这个动画为我跳过了几帧,但这改善了很多:

              @Override
              public void onViewCreated (View view, Bundle savedInstanceState) {
                  super.onViewCreated(view, savedInstanceState);
                  view.setLayerType(View.LAYER_TYPE_HARDWARE, null);
              }
      

      还要考虑如果您的动画在高分辨率设备上变得不那么流畅,这可能是因为您的图像缩放太大,占用了大量内存并减慢速度 - 当我放置一个很大的高点时,我自己也遇到过这种情况“drawable”文件夹中的 res 图像认为不会应用缩放(此文件夹通常应仅用于使用 xml 指定的资源),但实际上它被视为 mdpi 图像,因此不需要在更高的缩放res 设备会影响动画的性能

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-30
        相关资源
        最近更新 更多