moim app głównym celem jest wyświetlanie obrazów w następujący sposób, jak pokazano na obrazieAndroid Bitmap.createScaledBitmap rzuca java.lang.OutOfMemoryError głównie na Jelly Bean 4.1
private void setSelectedImage(int selectedImagePosition)
{
BitmapDrawable bd = (BitmapDrawable) drawables.get(selectedImagePosition);
Bitmap b = Bitmap.createScaledBitmap(bd.getBitmap(), (int) (bd.getIntrinsicHeight() * 0.9), (int) (bd.getIntrinsicWidth() * 0.7), false);
selectedImageView.setImageBitmap(b);
selectedImageView.setScaleType(ScaleType.FIT_XY);
}
Szczegółowy kod można znaleźć here
jest wyjątek w następującej pozycji
Bitmap b = Bitmap.createScaledBitmap(bd.getBitmap(), (int) (bd.getIntrinsicHeight() * 0.9), (int) (bd.getIntrinsicWidth() * 0.7), false);
Powyższa funkcja jest wywoływana z onItemSelected
. ** Aplikacja nadal działa dobrze w wersjach 2.2 i 2.3, ale natychmiast rzuca wyjątek na 4.1 Powyższy kod działa poprawnie, ale generuje następujący wyjątek. Nie widziałem żadnych awarii w wersjach 2.2 i 2.3, ale to immedidately zawiesza się w 4.1 Czy istnieje jakaś istotna różnica w zarządzaniu pamięcią w żelkach? **:
java.lang.OutOfMemoryError
AndroidRuntime(2616): at android.graphics.Bitmap.nativeCreate(Native Method)
AndroidRuntime(2616): at android.graphics.Bitmap.createBitmap(Bitmap.java:640)
AndroidRuntime(2616): at android.graphics.Bitmap.createBitmap(Bitmap.java:586)
AndroidRuntime(2616): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:466)
AndroidRuntime(2616): at com.rdx.gallery.GalleryDemoActivity.setSelectedImage(GalleryDemoActivity.java:183)
Jaki rozmiar ma szerokość i wysokość mapy bitowej? –
szerokość i wysokość bitmapy to 363X387 – RDX
Myślę, że problem jest wybranyImageView.setScaleType (ScaleType.FIT_XY); –