gpt4 book ai didi

android - 在 Android 上序列化一个 Drawable 对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:06:46 24 4
gpt4 key购买 nike

我试图通过缓存图像并在滚动列表时从手机而不是互联网加载它们来加速我的 ListView。但是,当我尝试序列化 Drawable 对象时遇到异常。这是我的功能:

    private void cacheImage(Drawable dr, Article a){
FileOutputStream fos;
try {
fos = openFileOutput(a.getArticleId().toString(), Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(dr);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}

这段漂亮的代码导致:

java.io.NotSerializableException: android.graphics.drawable.BitmapDrawable

序列化这些图像的最佳方法是什么?

最佳答案

您应该只需要缓存从互联网上获取的位图(可绘制对象)。所有其他可绘制对象很可能在您的 apk 中。

如果您想将位图写入文件,您可以使用 Bitmap 类:

private void cacheImage(BitmapDrawable dr, Article a){
FileOutputStream fos;
try {
fos = openFileOutput(a.getArticleId().toString(), Context.MODE_PRIVATE);
dr.getBitmap().compress(Bitmap.CompressFormat.PNG, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}

关于android - 在 Android 上序列化一个 Drawable 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6692492/

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