それ自体のように簡単。私はアルファボタンを作りたい、それはこのように選択されたドロウアブルを持つだろう:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<!-- Play/Pause -->
<item Android:state_selected="false" Android:drawable="@drawable/item" />
<item Android:state_selected="true" Android:drawable="@drawable/item" />
</selector>
私はこのようなものを作りたいです:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<!-- Play/Pause -->
<item Android:alpha="125" Android:state_selected="false" Android:drawable="@drawable/item" />
<item Android:alpha="255" Android:state_selected="true" Android:drawable="@drawable/item" />
</selector>
全てに感謝 。
それを行う方法はないと思います。属性Android:alpha
がありますが、ドローアブルではなくビューに適用されます。 APIレベル11以降でのみ利用可能です。
OPからしばらく経ちましたが、個人的には、提案された回答よりもはるかに優れたソリューションを見つけました。 BitmapDrawable を作成すると、アルファを簡単に設定できます。
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@drawable/your_drawble"
Android:alpha="77">
</bitmap>
アルファは、0〜255の任意の値にできます。たとえば、HEXカラー値アルファの逆の並べ替えであることに注意してください。たとえば、70%アルファは、HEXではB3、BitmapDrawableでは77です。
ドローアブルを使用して同じことを達成しました
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<solid Android:color="#5000ddff" />
</shape>
ここでは、不透明度レベルを設定するアルファ50を使用しました。役立つことを願っています
私は同じものを探していました。これは4年以上前に投稿されていますが、これは問題をグーグル検索する際のトップポストなので、ここで返信します。
これは私の解決策です
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_pressed="false">
<bitmap Android:alpha="@integer/not_pressed_alpha" Android:src="@drawable/item"/>
</item>
<item Android:state_pressed="true" Android:drawable="@drawable/item" />
</selector>
OPと同じ問題を抱えている人のために、AppCompatでは、ターゲットコードで望んでいたように、 'alpha'パラメーターを設定できるようになりました。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<!-- Play/Pause -->
<item Android:alpha="125" Android:state_selected="false" Android:drawable="@drawable/item" />
<item Android:alpha="255" Android:state_selected="true" Android:drawable="@drawable/item" />
</selector>
詳細 こちら 。
私の目標は、ボタンが異なるアルファで選択され、押された状態になるようにすることでしたが、同じ(png)リソースを使用し、できるだけ少ないファイルに影響を与えます。
私の解決策は、BitmapDrawableのアルファを変更することと似ていますが、セレクターからアルファを変更するため、1つのファイルのみが影響を受けます。
ビットマップの濃淡関数を使用します。濃淡は既存のピクセルを着色するため、白色を使用することに注意してください。たとえば、#80FFFFFF-元の色を維持するが、アルファを50%減らすために、これを使用してアイコンを押すとアイコンの色を変更することもできます。
これは私の描画可能なXMLファイルです。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:state_selected="true">
<bitmap
Android:src="@drawable/ic_camera"
Android:tint="#80FFFFFF">
</bitmap>
</item>
<item Android:state_pressed="true">
<bitmap
Android:src="@drawable/ic_camera"
Android:tint="#80FFFFFF">
</bitmap>
</item>
<item>
<bitmap
Android:src="@drawable/ic_camera">
</bitmap>
</item>
</selector>
無効になっているときに斜めに打ち消す必要があるカスタムラジオボタンに次を使用しています。
4つのラジオボタンが有効になっている5つのラジオボタンの画像例
<item Android:state_enabled="false">
<layer-list>
<item>
<shape Android:shape="rectangle">
<size
Android:height="35dp"
Android:width="35dp"/>
<stroke
Android:color="@color/someGrey"
Android:width="1dp"/>
<corners Android:radius="1dp"/>
</shape>
</item>
<item>
<rotate
Android:fromDegrees="135"
Android:pivotX="50%"
Android:pivotY="50%"
Android:toDegrees="135">
<shape Android:shape="line">
<stroke
Android:color="@color/someGrey"
Android:width="1dp"/>
</shape>
</rotate>
</item>
</layer-list>
</item>
この引数をパラメーターとして使用できる独自のドロウアブルを作成できると思います。私はそのようなことをしたことがない。
このリンクをチェックしてください:
StateListDrawableでdrawableのアルファ値を設定する方法?
それが不可能な場合は、いつでもコードで実行できます...
代わりにビットマップを使用したい場合に備えて、それについて私が見つけた2つのリンクがあります:
私はKasium sugestに同意します。そのため、一部のAndroidバージョンでは、Alphaへの仕様はパーセント単位です。
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@drawable/your_drawble"
Android:alpha="0.5">
</bitmap>