2012-07-28 103 views
-1

在我的XML文件,我有这个按钮:按钮住宿按下

<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"    
/> 

而且在我的活动我有按钮这种方法:

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

当我按下按钮,它的工作,但按钮不会保持按下状态。

我不使用的图像这是我使用的颜色:

<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> 

我试图切换按钮,但是,这并不与我试图做配合。 如果您发现有问题,请提前致谢。

+0

你可以试试这个:http://stackoverflow.com/questions/4747311/how -can-i-keep-one-button-as-pressed -after-click-on-it – Michael 2012-07-28 09:06:44

回答

0

也许你可以更改按钮图像 那么你可以创建动画时,按下按钮

这是一个例子

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); 

地方这个代码在ontouch事件 然后v.startanimation用于在图像触摸时进行动画 然后我们将选定的图像视图设置为高亮度,并将亮度设置为比其他图像亮度更高

this是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> 

而这是procssingBitmap_Brightness(用于处理图像亮度)

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

谢谢你试图帮助我,但这个解决方案不匹配。我想我会为每个颜色做另一个按钮,例如“button_purple_pressed”,并且这个按钮的正常状态将是按钮“button_purple”的状态。 – user1527152 2012-07-28 10:49:31

+0

不客气:) – 2012-08-08 08:04:18