2012-07-28 5 views
-1

dans mon fichier xml j'ai ce bouton:séjour Bouton pressé

<Button 
android:id="@+id/button_8" 
android:layout_width="0dp" 
android:layout_height="wrap_content" 
android:text="@string/Bf" 
android:background="@drawable/button_purple" 
android:layout_weight="1" 
android:textColor="#ffffff" 
android:onClick="action"    
/> 

Et dans mon activité j'ai cette méthode pour le bouton:

public void action (View v) 
{ 
    s = "m"; 
    changeCouleur("blue"); 
    v.setPressed(true); 
} 

Quand j'appuyé sur le bouton, il fonctionne, mais la le bouton ne reste pas enfoncé.

Je ne pas utiliser une image ce que j'utilise pour la couleur:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" > 
     <shape> 
      <solid 
       android:color="#449def" /> 
      <stroke 
       android:width="1dp" 
       android:color="#2f6699" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
    <item android:state_focused="true" > 
     <shape> 
      <solid 
       android:color="#449def" /> 
      <stroke 
       android:width="1dp" 
       android:color="#2f6699" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 
      <gradient 
       android:startColor="#449def" 
       android:endColor="#2f6699" 
       android:angle="270" /> 
      <stroke 
       android:width="1dp" 
       android:color="#2f6699" /> 
      <corners 
       android:radius="4dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 

J'ai essayé le bouton à bascule mais cela ne correspond pas à ce que j'essaie de faire. Merci d'avance si vous avez remarqué quelque chose de mal.

+0

Vous pouvez essayer ceci: http://stackoverflow.com/questions/4747311/how -peut-je-garder-un-bouton-comme-pressé-après-clic-sur-le – Michael

Répondre

0

peut-être vous pouvez changer le bouton pour une image alors vous pouvez créer une animation lorsque le bouton pressé

ceci est un exemple

Bitmap source0 = BitmapFactory.decodeResource(getResources(), R.drawable.top); 
Bitmap source1 = BitmapFactory.decodeResource(getResources(), R.drawable.top_a); 
Bitmap source2 = BitmapFactory.decodeResource(getResources(), R.drawable.top_b); 
Bitmap source3 = BitmapFactory.decodeResource(getResources(), R.drawable.top_c); 
v.startAnimation(AnimationUtils.loadAnimation(mainContext, R.anim.image_click)); 
toptop.setImageBitmap(source0); 
top_a.setImageBitmap(processingBitmap_Brightness(source1)); 
top_b.setImageBitmap(source2); 
top_c.setImageBitmap(source3); 

lieu ce code sur un événement OnTouch puis de v.startanimation est pour l'animation lorsque l'image a touché puis nous avons mis en surbrillance l'image sélectionnée avec la luminosité plus claire que l'autre image

this est le code anim.image_click

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

<alpha 
android:fromAlpha = "1.0" 
android:toAlpha = "0.5" 
android:duration = "300"> 
</alpha> 
<scale 
android:fromXScale = "1" 
android:toXScale = "0.9" 
android:fromYScale = "1" 
android:toYScale = "0.9" 
android:pivotX="50%" 
android:pivotY="50%" 
android:duration = "50"> 
</scale> 
</set> 

et cela est le procssingBitmap_Brightness (pour le traitement de la luminosité de l'image)

private Bitmap processingBitmap_Brightness(Bitmap src){ 
      Bitmap dest = Bitmap.createBitmap(
       src.getWidth(), src.getHeight(), src.getConfig()); 

      for(int x = 0; x < src.getWidth(); x++){ 
      for(int y = 0; y < src.getHeight(); y++){ 
       int pixelColor = src.getPixel(x, y); 
       int pixelAlpha = Color.alpha(pixelColor); 

       int pixelRed = Color.red(pixelColor) + brightnessValue; 
       int pixelGreen = Color.green(pixelColor) + brightnessValue; 
       int pixelBlue = Color.blue(pixelColor) + brightnessValue; 

       if(pixelRed > 255){ 
       pixelRed = 255; 
       }else if(pixelRed < 0){ 
       pixelRed = 0; 
       } 

       if(pixelGreen > 255){ 
       pixelGreen = 255; 
       }else if(pixelGreen < 0){ 
       pixelGreen = 0; 
       } 

       if(pixelBlue > 255){ 
       pixelBlue = 255; 
       }else if(pixelBlue < 0){ 
       pixelBlue = 0; 
       } 

       int newPixel = Color.argb(
       pixelAlpha, pixelRed, pixelGreen, pixelBlue); 

       dest.setPixel(x, y, newPixel); 

      } 
      } 
      return dest; 
      } 
+0

Merci d'avoir essayé de m'aider mais cette solution ne correspond pas. Je pense que je ferai pour chaque couleur un autre bouton par exemple "button_purple_pressed" et l'état normal de celui-ci sera l'état pressé de "button_purple". – user1527152

+0

Vous êtes les bienvenus :) –

Questions connexes