Sto cercando di realizzare un'animazione su un pulsante click .. i passi sono i seguenti sul pulsante click ..java.lang.OutOfMemoryError a android.graphics.BitmapFactory.nativeDecodeAsset (metodo natale)
- l'immagine del pulsante cambia
- un'animazione gioca viene visualizzato
- prossimo disposizione ..
Ma sto ottenendo un'eccezione di memoria ..
Quando il file di animazione non è stato aggiunto al progetto, non si sono verificati errori. Ma dall'aggiunta dell'anime c'è il problema.
Sto usando 3 file di classe qui (home_screen, button_anime e casa)
home_screen.java riceve il pulsante cliccare informazioni, cambia l'immagine del pulsante e trasferimenti per button_anime classe il file di animazione è iniziato nel button_anime.java e dopo anime gioca layout successivo viene visualizzato da home.java
Il gatto di registro è il seguente ..
E/AndroidRuntime(1255): java.lang.OutOfMemoryError
E/AndroidRuntime(1255): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
E/AndroidRuntime(1255): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:587)
E/AndroidRuntime(1255): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:422)
E/AndroidRuntime(1255): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:840)
E/AndroidRuntime(1255): at android.content.res.Resources.loadDrawable(Resources.java:2110)
E/AndroidRuntime(1255): at android.content.res.Resources.getDrawable(Resources.java:700)
E/AndroidRuntime(1255): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:282)
E/AndroidRuntime(1255): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:937)
E/AndroidRuntime(1255): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:877)
E/AndroidRuntime(1255): at android.content.res.Resources.loadDrawable(Resources.java:2092)
E/AndroidRuntime(1255): at android.content.res.Resources.getDrawable(Resources.java:700)
E/AndroidRuntime(1255): at android.view.View.setBackgroundResource(View.java:15303)
E/AndroidRuntime(1255): at com.quinoid.thomasinternational.Button_Anime.onCreate(Button_Anime.java:19)
E/AndroidRuntime(1255): at android.app.Activity.performCreate(Activity.java:5231)
E/AndroidRuntime(1255): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime(1255): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
E/AndroidRuntime(1255): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
E/AndroidRuntime(1255): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime(1255): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime(1255): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(1255): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(1255): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime(1255): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(1255): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(1255): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(1255): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(1255): at dalvik.system.NativeStart.main(Native Method)
mio home_screen.java
0.123.516,410617 millionshome.setOnClickListener(new OnClickListener() { <-- error happens somewhere here
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Bitmap b = BitmapFactory.decodeResource(getResources(),R.drawable.home1);
Drawable d = new BitmapDrawable(getResources(),b);
home.setBackgroundDrawable(d); <-- this dose not work..
Intent myIntent = new Intent(Home_Screen.this, Button_Anime.class);
startActivity(myIntent);
}
});
Hai esaurito la memoria. Potrebbe essere che la bitmap sia troppo grande, potrebbe darsi che tu abbia una perdita altrove. È necessario esaminare l'utilizzo della memoria in un heap profiler per sapere cosa sta succedendo. –
tutte le mie immagini sono btw 30kb e 50kb .. quindi come faccio a controllare il mio heap rofiler ?? @ GabeSechan – user3214173
C'è uno costruito in eclissi. Dovresti cercare i numeri in fuga di alcune allocazioni di classe o di grandi dimensioni che non hanno senso. –