有120张图像是产品展示的360度圆形拍摄,每张图像相距3度,尺寸为320 x 320像素。连续显示图像将产生在用户面前旋转产品的效果。
到目前为止,性能远远不能令人满意,加载时间延迟以及用户触摸时滑动到特定图像。
如果OpenGL不是一个选项,那么有效处理这种动画的推荐方法是什么?谢谢!
答案 0 :(得分:3)
我真的不了解你的用户界面,但这是我的猜测:
您的用户界面是一个包含大量图片的圈子,所有图片都在同一个屏幕上。我认为你可以在圆圈中显示缩略图(50x50-80x80),你可以将所有缩略图存储在内存中而不会出现大问题。有了这个尺寸,每个都只有8kb左右。 120 x 9~1 MB内存
当您为图像设置动画时,可以先加载缩略图,然后在背景中加载大图像。它会创建一些效果,用户看到一些图像不清晰,然后看得清楚。当用户触摸某些图片以滑动到特定图像时,这也会有所帮助。至少,你有东西要展示。
您可以通过将大图像的大小调整为320x320的75-80%来节省一些内存和加载问题。这个可以为您节省一些加载图像的时间,并且不会影响图像的质量。这一切都取决于你的应用程序。
您可以尝试使用预先加载。您可以在实际动画之前加载图像。你可以有一个数组存储3 - 5张图像(320 x 320不是一个大尺寸,所以其中5个只有500-1000 KB左右)。当您显示第一张图像时,您手动开始加载第4张图像。
答案 1 :(得分:1)
如果你想真正压缩它并在手机上流畅播放,你应该将它存储为电影,然后使用AVFoundation的AVPlayer进行自定义播放。您可以将其设置为大致任何帧或向前或向后更改播放速度并循环以使其无缝。例如,您可以根据滑动将其设置为更改电影中的位置或播放速度。设置比MPMoviePlayer更多的工作,但是可以自定义。
答案 2 :(得分:1)
UIWebView + HTML5怎么样?
答案 3 :(得分:1)
我会制作所有120张图片的副本,大小可能是80x80。所有120都应该适合GPU的纹理缓存。将所有120张图像加载到120个屏幕外图像视图中,放大到320x320。使用这120个图像视图进行动画处理,一次显示一个图像。每当动画停止时,快速用另一个具有相应的全分辨率320x320副本的视图替换最后一个图像。每当用户开始动画时,切换回低图像集。
这是有效的,因为眼睛看不到变化的物体(运动错觉),其分辨率与静态图像相同,具体取决于当然的动画速度。