Я пытаюсь расширить масштабируемое средство просмотра изображений в Android, чтобы использовать два изображения рядом. Для этого я использую Bitmap.createBitmap(int, int, Bitmap.Config)
. К сожалению, это похоже на сбой ВМ.
Код
protected void combineBitmaps() {
image0Width = bitmap0.getWidth();
image0Height = bitmap0.getHeight();
image1Width = bitmap1.getWidth();
image1Height = bitmap1.getHeight();
//These methods just get correct values for image[0|1][Width|Height].
int width = getCanvasWidth();
int height = getCanvasHeight();
//THIS LINE CRASHES
Bitmap bitmap_tmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap = bitmap_tmp;
Canvas combination = new Canvas(bitmap);
combination.drawBitmap(bitmap0, 0f, getImage0VertOffset(), null);
combination.drawBitmap(bitmap1, image0Width, getImage1VertOffset(), null);
}
Значение, которое я получаю от getCanvasWidth()
, равно 2464, а от getCanvasHeight()
равно 2048. Исключение, которое я получаю, равно
Unable to start activity ComponentInfo{com.tse.scview/com.tse.scview.ScalableViewWrapper}: android.view.InflateException: Binary XML file line #8: Error inflating class com.tse.scview.ScalableFacingPageView
где com.tse.scview.ScalableFacingPageView
- это класс, который мы создаем (конструктор вызывает эту функцию).
Я выделил все из этой строки - назначение растрового изображения для растрового изображения класса, функции получения ширины и высоты и т. Д. - чтобы определить, что это действительно Bitmap.createBitmap, вызывающий проблему. К сожалению, я не могу понять, в чем проблема.
Обновление: в качестве проверки работоспособности я вводил небольшие значения ширины и высоты (12 и 13 ... ну почему бы и нет). Теперь это работает. Так что это проблема с оперативной памятью, которая причиняет нам боль, но эффективно отвечает на вопрос.