Salut !

J'explique mon problème : j'ai une activité principale dans mon application , et en cas d'erreur de connexion je fais apparaitre un message dans un cadre avec un bouton retour. Pour ça j'ajoute le layout contenant la fenêtre d'erreur dynamiquement dans le layout principale de l'activité (un relative layout) lorsque l'erreur est détecté.
Et quand j'appuie sur le bouton retour , le cadre avec le message disparait.

Tout ceci fonctionne parfaitement. Là où est mon problème c'est lorsque je veux rajouter des animations. Lorsque le cadre d'erreur apparait , il arrive par le bas de l'écran. Et une fois le bouton retour enclenché , le cadre repart d'où il est arrivé et est supprimé du layout principal. Le problème c'est que ce fameux cadre utilise en background une image png extensible fabriquée avec draw9patch et c'est aussi le cas du bouton. C'est ça qui me provoque ces erreurs :

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
24
25
26
27
28
29
30
31
32
33
34
11-07 21:29:44.565: E/AndroidRuntime(14532): FATAL EXCEPTION: main
11-07 21:29:44.565: E/AndroidRuntime(14532): java.lang.NullPointerException
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.GLES20RecordingCanvas.drawPatch(GLES20RecordingCanvas.java:97)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.graphics.NinePatch.draw(NinePatch.java:125)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.graphics.drawable.NinePatchDrawable.draw(NinePatchDrawable.java:189)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.draw(View.java:11152)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.drawChild(ViewGroup.java:2901)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.draw(View.java:11170)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.drawChild(ViewGroup.java:2901)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2503)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.getDisplayList(View.java:10604)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2611)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.getDisplayList(View.java:10569)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2611)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.getDisplayList(View.java:10569)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2611)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.getDisplayList(View.java:10569)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2611)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.getDisplayList(View.java:10569)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:2611)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.View.getDisplayList(View.java:10569)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:842)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewRootImpl.draw(ViewRootImpl.java:2108)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1832)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2644)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.os.Handler.dispatchMessage(Handler.java:99)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.os.Looper.loop(Looper.java:137)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at android.app.ActivityThread.main(ActivityThread.java:4517)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at java.lang.reflect.Method.invokeNative(Native Method)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at java.lang.reflect.Method.invoke(Method.java:511)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
11-07 21:29:44.565: E/AndroidRuntime(14532): 	at dalvik.system.NativeStart.main(Native Method)
Si j'utilise de simples background pour le bouton et le layout le contenant , l'erreur ne survient pas. Elle n'apparait pas non plus si j'utilise un background 9patch pour un seul des deux.
Voici le code qui est concerné :

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
24
25
26
27
28
29
retour.setOnTouchListener(new View.OnTouchListener() {        
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch(event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                    	retour.setBackgroundResource(R.drawable.btn_rouge_actif);
                        return true;
                    case MotionEvent.ACTION_UP:
                    	retour.setBackgroundResource(R.drawable.btn_rouge);
                    	animationRetourB.setAnimationListener(new AnimationListener() {
        		        	@Override
        		            public void onAnimationStart(Animation arg0) {
        		                               //Functionality here
        		            }
        		        	@Override
        		            public void onAnimationRepeat(Animation arg0) {
        		                               //Functionality here
        		            }
        		        	@Override
        		            public void onAnimationEnd(Animation arg0) {
                	    		layoutGeneral.removeView(contenu);
        		            }
        		        });
                    	layoutErreur.startAnimation(animationRetourB);
                        return true;
                }
                return false;
            }
        });
Je précise que le problème survient lorsque" layoutGeneral.removeView(contenu);" est lu. L'animation s'effectue donc sans problème , à "l'aller" comme au "retour". Sans quand la vue doit être supprimer du layout général que ça plante.
Après quelques recherches sur l'erreur obtenu , j'en ai conclu qu'il fallait désactiver l'accélérateur hardware. J'ai tenté plusieurs choses :

retour.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
layoutErreur.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
layoutGeneral.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Mais aucun ne semble fonctionner.

Voilà un beau pavé que j'espère pas trop brouillon.
Pouvez-vous m'aider ?