Я хочу показать изображение в ImageView
.Растровое изображение Android работает либо в пейзаже, либо в портретном
я сделать это таким образом:
File externalDirectory = Environment.getExternalStorageDirectory();
File directory = new File (externalDirectory.getAbsolutePath());
File file = new File(directory, "pic.jpg"); //or any other format supported
FileInputStream streamIn = null;
try {
streamIn = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
bitmap = BitmapFactory.decodeStream(streamIn); //This gets the image
try {
streamIn.close();
} catch (IOException e) {
e.printStackTrace();
}
imageView = (ImageView) findViewById(R.id.image_view);
imageView.setImageBitmap(bitmap);
Проблема заключается в том, что если я запустить приложение в ландшафт и вращать устройство после этого, происходит сбой приложения.
код Xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/image_view"/>
</FrameLayout>
Следующая проблема заключается в том, что картинка не отображается в полноэкранном режиме.
У вас есть предложения по решению этих проблем?
LogCat при повороте устройства
01-03 11:23:45.810 25429-25429/com.kamera E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.kamera, PID: 25429
java.lang.OutOfMemoryError: Failed to allocate a 80683020 byte allocation with 16765280 free bytes and 63MB until OOM
at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:635)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:611)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:649)
at com.kamera.PhotoActivity.loadImageFromExternalStorage(PhotoActivity.java:47)
at com.kamera.PhotoActivity.onCreate(PhotoActivity.java:29)
at android.app.Activity.performCreate(Activity.java:6248)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1125)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2437)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2544)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4398)
at android.app.ActivityThread.access$1000(ActivityThread.java:150)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1400)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:168)
at android.app.ActivityThread.main(ActivityThread.java:5845)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
разместить информацию об ошибках LogCat всегда –
Ok я добавил сейчас – mafioso
вам нужно применить 'BitmapFactory.Option' при декодировании вашего потока, потому что ваш растровый занимают слишком много памяти из-за большой размером –