Bonjour

Le but ici est de changer la couleur du bouton "buttonEnHaut" en vert quand l'utilisateur clique dessus et de remettre la couleur par défaut au bout d'une seconde.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    @Override
    public void onClick(View v) {
        RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) buttonEnHaut.getLayoutParams();
        switch (v.getId()) {
            case R.id.buttonEnHaut:
                buttonEnHaut.setBackgroundColor(Color.GREEN);
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {
                }
                buttonEnHaut.setBackgroundResource(android.R.drawable.btn_default);
                break;
        }
Sauf que le résultat n'est pas du tout celui attendu, voila ce que ça donne:

l'utilisateur clique une première fois: la couleur ne change pas cependant l'interface graphique du boutton reagis comme si l'utilisateur laissait son soigt appuyé pendant 1 seconde. Ensuite l'interface graphique du bouton est legerement differente des autres boutons par défault (fond gris avec degradé et petit contour)

l'utilisateur clique une deuxième fois: le bouton devient ORANGE ( ) pendant une seconde et redevient comme avant (fond gris degradé et petit contour).

les fois suivantes: idem que la deuxième fois.


Auriez vous une idée les amis ? Je vous laisse le code de l'activité complete au cas ou mais je suis a peu pret sur que le soucis ne vient pas du reste du code:


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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.graphics.Color;
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
 
    private Button buttonEnHaut = null;
    private Button buttonEnBas = null;
    private Button buttonAGauche = null;
    private Button buttonADroite = null;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        buttonEnHaut = (Button) findViewById(R.id.buttonEnHaut);
        buttonEnBas = (Button) findViewById(R.id.buttonEnBas);
        buttonAGauche = (Button) findViewById(R.id.buttonAGauche);
        buttonADroite = (Button) findViewById(R.id.buttonADroite);
 
        buttonEnHaut.setOnClickListener(this);
        buttonEnBas.setOnClickListener(this);
        buttonAGauche.setOnClickListener(this);
        buttonADroite.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)buttonEnHaut.getLayoutParams();
        switch (v.getId()) {
            case R.id.buttonEnHaut:
                buttonEnHaut.setBackgroundColor(Color.GREEN);
                try {
                    Thread.sleep(1000);
                } catch (Exception e) {}
                buttonEnHaut.setBackgroundResource(android.R.drawable.btn_default);  //cette ligne fait tout foirer
                break;
            case R.id.buttonEnBas:
                break;
            case R.id.buttonAGauche:
                break;
            case R.id.buttonADroite:
                break;
        }
    }
 
}