bonjour,
Lorsque je clique sur mon bouton pour accéder à mon menu, arrivé à un certain moment dans l'application j'ai une erreur OutOfMemoryError: bitmap size exceeds VM budget. Pourriez-vous m'aider ? Merci.
Voici le logcat : (j'ai mis le slignes en évidence dans mon code)
Voici ma portion de code où se Trouve l'erreur dans MainTabActivity744000-byte external allocation too large for this process.
VM won't let us allocate 744000 bytes
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:468)
at android.graphics.Bitmap.createBitmap(Bitmap.java:423)
at android.graphics.Bitmap.createBitmap(Bitmap.java:374)
at com.slidemenu.SlideoutHelper.prepare(SlideoutHelper.java:38)
at com.slidemenu.SlideoutActivity.prepare(SlideoutActivity.java:10)
at com.xxxxxxx.MainTabActivity$2.onClick(MainTabActivity.java:57)
SlideOutActivity c'est sur cette ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 btn_show.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int width = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 40, getResources() .getDisplayMetrics()) + 50; SlideoutActivity.prepare(MainTabActivity.this,R.id.inner_content, width); Intent myintent = new Intent(MainTabActivity.this,MenuActivity.class); myintent.putExtra("requestcode", REQUEST_CODE_MAIN); myintent.putExtra("current_item", current_item); startActivityForResult(myintent, REQUEST_CODE_MAIN); overridePendingTransition(0, 0); } });
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public static void prepare(Activity activity, int id, int width){ SlideoutHelper.prepare(activity, id, width); }
et dans SlideOutHelper
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public static void prepare(Activity activity, int id, int width) { if (sCoverBitmap != null) { sCoverBitmap.recycle(); } Rect rectgle = new Rect(); Window window = activity.getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(rectgle); int statusBarHeight = rectgle.top; ViewGroup v1 = (ViewGroup) activity.findViewById(id).getRootView(); v1.setDrawingCacheEnabled(true); Bitmap source = Bitmap.createBitmap(v1.getDrawingCache()); v1.setDrawingCacheEnabled(false); if (statusBarHeight != 0) { sCoverBitmap = Bitmap.createBitmap(source, 0, statusBarHeight, source.getWidth(), source.getHeight() - statusBarHeight); source.recycle(); } else { sCoverBitmap = source; } sWidth = width; }
Partager