gpt4 book ai didi

java - 使用位图工厂在可运行程序中以每秒 30 个图像的速度显示 150 个图像,但它很滞后

转载 作者:行者123 更新时间:2023-12-02 04:48:09 25 4
gpt4 key购买 nike

我的 Android 设备外部存储中有 150 张图像,我必须将它们用作 Activity 的动画,速度为每秒 30 张图像。

我使用 Bitmap 来解码给定路径中的文件,然后将其设置在 imageView 中。我正在使用处理程序来执行此操作,但动画非常滞后。

在下面的代码中,animationReadyPath 是文件夹的路径,imageList 是该文件夹内文件的数组列表。我在 onWindowFocusChanged() 中使用了这段代码。

var i = 0
val interval = 1000/30
val handler = Handler()
val runnable = Runnable {
handler.postDelayed(runnable, interval.toLong())
val imgFile = File(animationReadyPath+imageList[i])
val myBitmap = BitmapFactory.decodeFile(imgFile.absolutePath)
iv_animation_ready.setImageBitmap(myBitmap)

if(i<numOfImg){
i++
}
if(i>numOfImg){
iv_animation_ready.setImageBitmap(
BitmapFactory.decodeFile(
animationReadyPath+imageList[149]
)
)
}
}
handler.postAtTime(runnable, System.currentTimeMillis()+interval)
handler.postDelayed(runnable, interval.toLong())

动画非常滞后。如何纠正它或建议其他方法来顺利加载动画。

我无法在项目中包含图像,因为它会增加项目的大小。

最佳答案

您应该在显示之前加载所有图像。要播放动画,您可以使用 AnimationDrawable:

AnimationDrawable myAnim = new AnimationDrawable();

对于每个图像文件,您可以使用 BitmapFactory 将其解码为 Bitmap 并将此 Bitmap 放入 BitmapDrawable 中。

然后您可以将此 BitmapDrawable 添加到您的动画中:

myAnim.addFrame(myBitmap, 1000/30)

然后您可以随时使用 AnimationDrawable 并通过 myAnim.start() 启动动画。

关于java - 使用位图工厂在可运行程序中以每秒 30 个图像的速度显示 150 个图像,但它很滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56465669/

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