0

我的项目需要在平板电脑的右窗格中以纵向和横向模式显示图像。图像存储在 sdcard 中。启动画面也将显示在手机和平​​板电脑中。目前它有 6 个启动画面,两种模式都支持 mdpi、hdpi 和 xhdpi。平板电脑的情况相同。右窗格图像 6 个,共 18 个图像。它使内容过于沉重。从 sdcard 创建位图有时会从内存中抛出异常 creatbitmap, createdrawable 方法。我们不能为所有尺寸缩放单个高分辨率图像。一个高分辨率初始屏幕图像用于纵向,1 个用于横向,1+1 用于平板电脑,1+1 用于右窗格,而不会降低质量。请帮忙。可能吗 ??

4

1 回答 1

0

我认为拥有不同分辨率图像的整个想法是让应用程序在所有设备上顺利运行。如果您手动开始对每个事件进行缩放,顺便说一下,这是一个昂贵的过程,它可能会激怒用户,因为在某些设备上可能需要时间。

无论如何,如果您愿意,您仍然可以通过对图像进行下采样来缩放它而不会出现 OutOfMemoryError。

BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4; // Better to keep it in power of 2 (as told in docs)
Bitmap bitmapScaled = BitmapFactory.decodeStream(inputStream, null, options);

更改分辨率

Bitmap.createScaledBitmap(sourceBitmap, width, height, isFilterNeeded);

尽管我强烈建议您阅读如何调整图像大小和旋转图像 以及有效地加载大型位图

于 2013-04-10T14:18:41.167 回答