Привет: Мне нужно изображения на двух файлах (слева и справа). Я хочу показать их рядом в ImageSwitcher.Это функция, которая возвращает Drawable, который я хочу установить в переключателе изображений:
public Drawable getImage(String left, String right){
System.err.println("Decoding both images");
Bitmap Left = BitmapFactory.decodeFile(left);
Bitmap Right = BitmapFactory.decodeFile(right);
int height = Math.max(Left.getHeight(),Right.getHeight());
int width = Left.getWidth() + Right.getWidth();
Bitmap result = Bitmap.createBitmap(width,height,Config.RGB_565);
System.err.println("Creating the canvas");
Canvas bothImages = new Canvas(result);
System.err.println("Drawing both images beside each other");
bothImages.drawBitmap(Left, 0f, 0f, null);
bothImages.drawBitmap(Right, Left.getWidth(), 0f, null);
System.err.println(Integer.toString(bothImages.getWidth()) + " x " + Integer.toString(bothImages.getHeight()));
bothImages.rotate(90f);
System.err.println(Integer.toString(bothImages.getWidth()) + " x " + Integer.toString(bothImages.getHeight()));
System.err.println("returning Drawable Left");
return new BitmapDrawable(result);
}
У меня две проблемы.Если я использую Config.ARGB_8888, я получаю ошибки памяти.Поэтому я перешел на RGB_565.Однако это снизит качество изображений.Есть ли что-нибудь вокруг этого?
Во-вторых, даже когда я меняю настройки конфигурации, я получаю следующие консольные сообщения:
06-19 09:16:23.760: WARN/System.err(26218): Attempting to show /mnt/sdcard/Work/.temp/0000.jpg
06-19 09:16:23.760: WARN/System.err(26218): Decoding both images
06-19 09:16:24.510: WARN/System.err(26218): Creating the canvas
06-19 09:16:24.510: WARN/System.err(26218): Drawing both images beside each other
06-19 09:16:24.530: WARN/System.err(26218): 2560 x 1971
06-19 09:16:24.530: WARN/System.err(26218): 2560 x 1971
06-19 09:16:24.530: WARN/System.err(26218): returning Drawable Left
06-19 09:16:24.570: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
06-19 09:16:24.850: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
06-19 09:16:24.870: WARN/System.err(26218): Inside On resume
06-19 09:16:24.870: WARN/System.err(26218): About to set up animations
06-19 09:16:24.870: WARN/System.err(26218): On resume Done
06-19 09:16:24.870: WARN/System.err(26218): Attempting to show /mnt/sdcard/Work/.temp/0000.jpg
06-19 09:16:24.870: WARN/System.err(26218): Decoding both images
06-19 09:16:25.610: WARN/System.err(26218): Creating the canvas
06-19 09:16:25.610: WARN/System.err(26218): Drawing both images beside each other
06-19 09:16:25.640: WARN/System.err(26218): 2560 x 1971
06-19 09:16:25.640: WARN/System.err(26218): 2560 x 1971
06-19 09:16:25.640: WARN/System.err(26218): returning Drawable Left
06-19 09:16:25.660: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
06-19 09:16:25.690: WARN/OpenGLRenderer(26218): Bitmap too large to be uploaded into a texture
И я, очевидно, никогда не вижу сгенерированное изображение.Итак, я хочу знать, что я делаю неправильно?
На заметке сторонних производителей первые два изображения должны быть показаны при запуске действия, поэтому приведенный выше код вызывается для метода OnResume действия.Может ли кто-нибудь сказать мне, почему этот метод выполняется дважды (как видно из распечатки)?Потому что, возможно, мои ошибки нехватки памяти связаны с этим ...
Спасибо за любую помощь заранее.