0

Android では、ボタン (つまり ImageButton) をクリックするたびに、ボタンの色を変更してユーザーにフィードバックを提供したいと考えています (色を反転したり暗くしたりするなど)。この時点では、新しいボタンなどに変更したくはありません。クリックを反映するように状態を変更したいだけです。

新しいドローアブルを追加できるので、各ボタンには 2 つの状態があります (クリックすると、2 番目の状態に変わります)。

つまり(疑似コード):

オンクリック {

   ImageButton.setDrawable(R.drawable.myclickedbutton)

}

これを行うためのより良い方法はありますか (クリックすると iOS が ImageColors で再生されると思います。これが Android で必要なことです)、または私が考えているのは唯一の可能性ですか?

このコンセプトには大きな何かが欠けているように感じます。

前もって感謝します。

編集:違いが生じる場合、私のアプリは最小ターゲット2.2で実行されます。

編集 2 : 明確にするために、カスタム描画可能なリソースを既に持っている画像ボタンを使用しています。それが私がonClickを操作したいものです。

編集 3 : ここでは十分に明確ではないと思います。2つのドローアブル(onTouch、XML、onClickなど)を使用して状態を変更する方法を知っています.Android(または何らかの方法)がすべてのボタンの色を自動的に反転または暗くする方法があるかどうかを尋ねていましたクリックしました(iOSと同じように、私は信じています)。ボタンごとにこれを行う方法を尋ねているのではありません。これは、ボタンごとに 2 つのドローアブルを使用して実現できます。

4

3 に答える 3

2

ボタン.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <corners android:radius="5dp"/>
            <solid android:color="#f00"/>
            <padding android:left="10.0dip" android:top="10.0dip"
                android:right="10.0dip" android:bottom="10.0dip"/>
            <stroke android:width="1.0dip" android:color="#222"/>
        </shape>
    </item>
    <item android:state_pressed="false">
        <shape android:shape="rectangle">
            <corners android:radius="5dp"/>
            <solid android:color="#f1f1f1"/>
            <padding android:left="10.0dip" android:top="10.0dip"
                android:right="10.0dip" android:bottom="10.0dip"/>
            <stroke android:width="1.0dip" android:color="#222"/>
        </shape>
    </item>
</selector>

このボタンを背景として適用

<Button
    android:background="@drawable/button"/>

クラスファイルで次のようにします

public void onClick(View v) {

  pressedButton.setPressed(true);
}

赤色が安定するように

于 2012-11-01T04:47:04.800 に答える
0

drawables を切り替えるために、言及したコードを使用する必要はありません。むしろ、2 つの異なる状態を持つドローアブルを作成します。

既にカスタム ドローアブルがあるとおっしゃったように、それらをさまざまな状態に使用できます。

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

  <item android:state_pressed="true"
   android:drawable="@drawable/drawable1" /> <!-- for clicked state-->        
 <item android:drawable="@drawable/drawable2" /> <!-- for normal state--> 
</selector>

この xml を drawable_1.xml として drawable フォルダーに配置し、この drawable をコードで使用します。

yourButton.setDrawable(R.drawable.drawable_1)
于 2012-11-01T05:02:56.607 に答える
0

ボタンに onTouchListener を使用し、ボタンのクリックに応じてボタンの状態を変更できます。

                button.setOnTouchListener(new OnTouchListener() {

                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                     if(event.getAction()==MotionEvent.ACTION_DOWN)
                     {
                   // here u can change the button color or image as clickable as 
                   button.setBackgroundImage(R.drawable.image_pressed);

                     }
                     if(event.getAction()==MotionEvent.ACTION_UP)
                     {
                  // here u can change the button color or image as released as 
                   button.setBackgroundImage(R.drawable.image_released); 
                     }
                        return false;
                    }
                });

私はそれがあなたに役立つかもしれないと思う..

于 2012-11-01T05:17:22.163 に答える