我正在制作一个简单的Android应用程序来显示所有国家和地区的国旗。我想使用Room和SQLite来存储标志图像,但我真的不知道哪种方式是最好的。
我可以将Flag图像存储为诸如";法国";然后用检索
getResources().getIdentifier("france","drawable",requireActivity().getPackageName())
但我被警告说,这将非常缓慢,而且在数百个国家,该应用程序不会很好。目前,我在res/drawables文件夹中有所有的标志图标,那么将它们保存到数据库中并稍后检索的最佳方法是什么?非常感谢。
如果要在Room DB中存储可绘制内容,必须将其转换为byteArray
。
Drawable d;
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[] bitmapdata = stream.toByteArray();
将文件室中的列定义为byte[]。