我正在开发媒体播放器APP应用程序,我想加载专辑封面的艺术图片以便在ListView上查看。 现在可以正常使用从last.fm自动下载的图像了。 这些图像小于500500 png。 但是,最近为了能显示全屏艺术作品,在我的APP应用程序中添加了其他面板,所以使用了较大的(10241024 )。
现在,当我用高分辨率艺术品滚动几张专辑的时候,我的BitmapFactory出现了java.lang.OutOfMemoryError。
staticpublicbitmapgetalbumartfromcache (字符串artist、字符串album、上下文c ) )。
{
位图攻击=null;
filedir file=new file (source list operations.getalbumartpath (c ) );
dirfile.mkdirs (;
stringartfilepath=source list operations.getalbumartpath (c ) file.separatorsourcelistoperations.makefilename ) artist
文件信息=new file (art file path;
特里
{
artwork=bitmap factory.decode file (infile.getabsolutepath ();
}catch(exceptione ) }
if(artwork==null ) ) ) )。
{
特里
{
artwork=bitmap factory.decode resource (c.get resources ),R.drawable.icon );
}catch(exceptionex ) }
}
返回警报;
}
为了限制生成的Bitmap对象的大小,例如256256,可以添加什么? 这就是缩略图所需的大小。 可以创建重复的函数或参数,以获取完整大小的艺术作品并显示全屏。
另外,我会在ImageViews上显示这些位图。 这些位图较小,大约在150150到200200之间。 小图像的缩小率比大图像小。 有没有应用缩小滤镜使图像平滑的方法? 如果不需要,我不想缓存一堆附加的缩略图文件。 这是因为图像图像的管理更加困难。 现在,可以将新的缩略图文件传输到目录中并保存。 这些文件将在下次自动使用和装载。
完整的代码为http://github.org/calc programmer1/calc tunes,在src/com/calc programmer1/calc tunes/album art manager.Java中