2016-08-10 6 views
0

Ich weiß, dass ich Opazität durch Hinzufügen eines Alphakanals in hex (#AARRGGBB) festlegen kann, aber was ist, wenn ich einen Wert aus meiner colors.xml verwenden möchte, der ich sonst keine Deckkraft hinzufügen möchte?Wie setze ich die Deckkraft einer Farbressource?

Zum Beispiel verwende ich eine dunkelblaue Farbe von # 074EB2 in meinem Colors.xml, als solche:

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

Nun, ich habe eine benutzerdefinierte Schaltfläche Hintergrund mit einem Rand. Ich möchte, dass die Umrandung diese dunkelblaue Farbe verwendet, aber eine Deckkraft hinzugefügt hat. Die Schaltfläche sieht so aus:

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

Wie kann ich die Opazität hinzufügen? Muss ich colors.xml einen neuen Wert mit Opazität hinzufügen? dh <color name="DarkBlueTransparent">#80074EB2</color>? Das Problem, das ich damit sehe, ist, dass es nicht skalierbar ist - was, wenn ich woanders habe, dass diese Farbe 80% Opazität braucht? 90%? Meine colors.xml-Datei würde mit verschiedenen Werten explodieren, wie transparent ich die Dinge haben möchte.

+0

Machen Sie entweder mehr Ressourcen oder stellen Sie die Deckkraft des Containers auf das ein, was Sie benötigen. – Shaishav

+0

"Meine colors.xml-Datei würde mit verschiedenen Werten explodieren, wie transparent ich die Dinge haben möchte." "Ja wirklich?" Sie brauchen wirklich so viele Transparenzstufen für verschiedene Farben? Wie DarkBlue70Percent und DarkBlue71Percent? – Salem

+0

Übertrieben, aber Sie bekommen den Punkt. –

Antwort

1

Sie können die dynamische Deckkraft in XML nicht ausführen. Aber Sie können Alpha dynamisch in Java-Seite anwenden.

Verwenden Sie diese Methode, um Alpha auf Ihre Farbe anzuwenden.

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

jetzt die Farbe mit Alpha erhalten durch Aufruf der Methode

blueWithAlpha = getColorWithAlpha(darkBlue, 120); 

120 ist Ihr Alpha-Level

Alpha-Ebene sollte zwischen 0 bis 225

sein müssen

Jetzt wenden Sie Ihre Farbe auf Ihre Schaltfläche

mButton.setBackgroundColor(blueWithAlpha); 
Verwandte Themen