У меня странная проблема. У меня есть несколько изображений в моем проекте Android, которые я сохранил как файлы .png в папке res \ drawable. Мне удалось легко извлечь изображения во время выполнения и преобразовать их в растровое изображение, например так:
Drawable d = getResources().getDrawable(R.drawable.imageId);
Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
Это прекрасно работает, и изображение корректно масштабируется независимо от плотности экрана устройства. Все мои изображения имеют размер 200 на 200 пикселей, а мой макет изображения настроен как 200 точек на дюйм.
Теперь я сохранил все изображения в виде больших двоичных объектов в базе данных SQlite из-за проблем с масштабируемостью, и я извлекаю их во время выполнения и преобразовываю в растровое изображение следующим образом:
byte[] bb = cursor.getBlob(columnIndex);
Bitmap bitmap = BitmapFactory.decodeByteArray(bb, 0, bb.length);
Изображение отображается нормально, если плотность экрана стандартная 160 dip. Но если плотность меньше или больше, изображение не масштабируется и остается 200 пикселей на 200 пикселей для 160 провалов. Таким образом, в основном, на меньшем экране (120 точек на дюйм) изображение занимает больше места, чем должно, а на большом экране (240 точек на дюйм) оно занимает меньше места, чем должно.
Кто-нибудь еще сталкивался с этой странной проблемой? Любое объяснение, обходной путь, решение будут действительно оценены.
Большое спасибо заранее!