gpt4 book ai didi

android - 动画在大屏幕尺寸上滞后

转载 作者:行者123 更新时间:2023-11-29 01:44:41 24 4
gpt4 key购买 nike

我有一个 RelativeLayout,它存储五个 ImageView,每个都包含一个云图像。所有图片大小不一,最小的为582*182,最大的为700*400。包含云的区域大小为860*1080。
屏幕顶部是我要加载到我的服务器上的图像,下面是上面描述的 RelativeLayout。当用户落在该屏幕上时,云开始移动。问题是整个动画严重滞后(我试图在 HTC One 上运行它)。我的动画描述如下:

    <set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator"
android:fillEnabled="true"
android:fillAfter="true">
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="12000"
android:toXDelta="-12%p"
android:repeatCount="infinite"
android:repeatMode="reverse"/>
</set>

ImageView 的描述如下:

<ImageView
android:id="@+id/clouds_image_view_cloud2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="cloud 2"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"/>

然后我像下面这样开始:

Animation animRToL = AnimationUtils.loadAnimation(mContext, R.anim.right_to_left);
Animation animLToR = AnimationUtils.loadAnimation(mContext, R.anim.left_to_right);

mClouds[0].startAnimation(animRToL);
mClouds[2].startAnimation(animRToL);

mClouds[1].startAnimation(animLToR);
mClouds[3].startAnimation(animLToR);

mClouds[4].startAnimation(animRToL);

我已经通过 mClouds[0].isHardwareAccelerated() 检查了硬件加速条件 - 它已启用。我试图通过以 RGB_565 格式加载它们来减小 BitMap 的大小 - 没有成功。对于这种滞后,我能做些什么吗?

P.S.相同图像的动画在 iPhone 4 上运行的 iOS 应用程序版本上没有任何滞后。

更新:我注意到,如果我将动画云的数量从 5 减少到 4,动画运行会很流畅。

最佳答案

这听起来很疯狂,但在类似情况下救了我:

为不同的 View 使用不同的动画对象

在你的情况下:您需要三个 animRTL 对象和两个 animLTR Java 对象。所以:animLTR1、animLTR2、animRTL1、animRTL2、animRTL3。请注意,您不必创建比您已有的两个更多的 XML 动画文件。

试试,告诉我结果。

编辑:

还有另外两个解决方案值得我尝试:

在您的 list 中,放在应用程序标签下

  android:hardwareAccelerated="true"

android:largeHeap="true"

关于android - 动画在大屏幕尺寸上滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22220084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com