2016-08-10 14 views
0

アルファチャンネルを16進数で追加することで不透明度を設定できますが(#AARRGGBB)、それ以外の場合は不透明度を追加したくないcolors.xmlの値を使用する場合はどうすればよいですか?カラーリソースに不透明度を設定するにはどうすればいいですか?

は例えば、私のような、私のcolors.xmlに#074EB2の濃い青色を使用します。

<color name="DarkBlue">#074EB2</color> 

は今、私は、国境で​​のカスタムボタンの背景を持っています。私は境界線にこの濃い青色を使用したいが、不透明度を追加する。ボタンは次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 
    <stroke android:width="1dp" android:color="@color/DarkBlue"/> 
    <corners android:radius="2dp"/> 
</shape> 

どのように不透明度を追加できますか? colors.xmlに不透明度の新しい値を追加する必要がありますか?すなわち、<color name="DarkBlueTransparent">#80074EB2</color>?私が見るこの問題はスケーラビリティがないということです。もしこの色の80%不透明度が必要な場所があればどうしますか? 90%?私のcolors.xmlファイルは、私が物事をどのように透明にするかという異なる値で爆発するでしょう。

+0

リソースを増やすか、コンテナの不透明度を必要なものに設定します。 – Shaishav

+0

"私のcolors.xmlファイルは、透明性のためにさまざまな値で爆発します。"本当に?あなたは本当に様々な色に非常に多くの透過レベルが必要ですか? DarkBlue70PercentやDarkBlue71Percentのように? – Salem

+0

あまりにも過激ですが、あなたはポイントを得る。 –

答えて

1

xmlで動的不透明度を設定することはできません。しかし、あなたはJava側でアルファを動的に適用することができます。

このメソッドを使用して、あなたの色にアルファを適用します。今

public static int getColorWithAlpha(int yourColor, int alpha) { 
    int red = Color.red(yourColor); 
    int blue = Color.blue(yourColor); 
    int green = Color.green(yourColor); 
    return Color.argb(alpha, red, green, blue); 
} 

方法

blueWithAlpha = getColorWithAlpha(darkBlue, 120); 

120を呼び出すことによって、アルファとの色を取得し、あなたのアルファレベルは、アルファレベルが

225から0の間であることが必要です

です

はあなたのボタンにカラーを適用しました

mButton.setBackgroundColor(blueWithAlpha); 
関連する問題