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

トグルボタンを試しましたが、それは私がやろうとしていることに合いません。何かおかしいことに気づいたら、よろしくお願いします。

4

1 に答える 1

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は画像がタッチされたときのアニメーション用であり、選択した画像ビューを他の画像よりも明るい明るさに設定して強調表示するように設定します

これは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;
           }
于 2012-07-28T09:50:31.350 に答える