大源码ImageView动画

Posted

技术标签:

【中文标题】大源码ImageView动画【英文标题】:Large source ImageView animation 【发布时间】:2011-12-15 09:26:42 【问题描述】:

就内存而言,android 最好的图像文件格式是什么?推荐在 ios 上使用 PNG,因为 xCode 对它有一些魔力。Android 也一样吗?

我目前正在开发一个大型应用程序,其中包含多个动画(在屏幕中滑动、褪色等)。到目前为止一切正常!但是,我注意到视图包含带有(相当大)PNG 作为源的 ImageView 的视图动画有点滞后。

显然我可以使 PNG 更小,但是我可以做些什么来减少 ImageView 占用的内存量/使动画流畅吗?我知道 PNG 的文件大小比 JPEG 大得多,但我不认为这是一个问题,JPEG 或 PNG(我假设)最终存储为颜色数组,因此它们都会占用相同的内存。由于解压缩周期较少,PNG 可能更适合加载。我再次假设,我对图像文件格式的了解是空的。

或者还有什么其他原因导致延迟?位图是否在动画期间缩放以适应每个 onDraw() 的视图,所以在将位图提供给 ImageView 之前,我应该在代码中缩放位图吗?

谢谢,

【问题讨论】:

图像始终作为位图存储在内存中。文件系统上的文件格式无关紧要。为节省内存,请确保在图片大于屏幕上显示时预先缩放图片。 【参考方案1】:

Android 支持的格式有:PNG、JPG 和 GIF(还有 9.png)。 如dev guide 中所说,推荐的是PNG

它们都作为Bitmap存储在内存中,所以最重要的是颜色深度,像这样:

BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon, options);

更多信息:***

【讨论】:

【参考方案2】:

并添加(在蜂窝之后):

<application 
    android:largeHeap="true"
    ...

到您的清单文件 :=)

感谢我亲爱的朋友:)

【讨论】:

以上是关于大源码ImageView动画的主要内容,如果未能解决你的问题,请参考以下文章

android开发中imageview能显示gif动画吗

Android动画之ViewPropertyAnimator(专用于view的属性动画)

iOS UIButton设置图片动画

Navigation 实现不同fragment之间的view的共享(含动画过渡)

view的一些旋转动画

android 怎样显示gif动画