Android und Alpha für (Bild-) Ansicht Alpha einstellen

Antworten:

195

Nein, es gibt keine Informationen darüber , wie der Abschnitt "Verwandte XML-Attribute" in der Dokumentation zu ImageView.setAlpha (int) fehlt . Die Alternative besteht darin, View.setAlpha (float) zu verwenden, dessen XML-Gegenstück ist . Es dauert einen Bereich von 0,0 bis 1,0 anstelle von 0 bis 255. Verwenden Sie es zB wieandroid:alpha

<ImageView android:alpha="0.4">

Letzteres ist jedoch erst seit API-Level 11 verfügbar.

sschuberth
quelle
7
Auch wenn ich mich hier nur wiederhole: Es ImageView.setAlpha(int)dauert eine intWeile, android:alphabis ich schwebe, also ist das letztere streng genommen nicht das genaue XML-Gegenstück zum ersteren, sondern das Gegenstück zu View.setAlpha(float). Und wie hier bereits mehrfach erwähnt, sind android:alpha/ View.setAlpha(float)nur ab API-Level 11 verfügbar.
Sschuberth
Der Unterschied besteht darin, dass der akzeptable Bereich 0-1 für den Float One und 0-255 für den Int One beträgt.
Ataulm
232

Es ist einfacher als die andere Antwort. Es gibt einen XML-Wert alpha, der doppelte Werte annimmt.

android:alpha="0.0" das ist unsichtbar

android:alpha="0.5" durchschauen

android:alpha="1.0" voll sichtbar

So funktioniert das.

jfcogato
quelle
15
Es gibt setAlpha(float)und android:alphanur seit API 11 (Android 3.0). Vor API 11 muss Code verwendet werden, um Alpha für das Bild festzulegen. Wie sschuberth oben bereits in anser sagte.
Salw
@ Antonio Warum? Diese Antwort fügt keine Informationen über meine hinzu und ist im Gegenteil weniger vollständig.
Sschuberth
@sschuberth Ihre Antwort ist völlig richtig, aber das Fehlen eines Beispiels könnte dazu führen, dass diese Antwort mehr Aufmerksamkeit erhält als Ihre. Obwohl Ihre Antwort mehr Informationen enthält, bietet diese Antwort eine Lösung, die näher an dem liegt, was ich wirklich brauche. Bitte fügen Sie einige Beispiele hinzu, um das zu verwenden, was Sie erklärt haben, das wird absolut helfen!
Antonio
@ Antonio Done. Ich habe meine Antwort jetzt super-duper-over-verbose gemacht ;-)
sschuberth
53

Ich bin mir über das XML nicht sicher, aber Sie können es auf folgende Weise per Code tun.

ImageView myImageView = new ImageView(this);
myImageView.setAlpha(xxx);

In Pre-API 11:

  • Der Bereich reicht von 0 bis einschließlich 255, wobei 0 transparent und 255 undurchsichtig ist.

In API 11+:

  • Der Bereich reicht von 0f bis 1f (einschließlich), wobei 0f transparent und 1f undurchsichtig ist.
Umesh
quelle
2
Ja ich weiß. (Ich hoffte, dass dies in der Frage impliziert war.) Ein Punkt von XML besteht darin, einen Teil dieses Codes zu entfernen. Es macht für mich alphakeinen Sinn, warum es kein XML-Attribut-Gegenstück gibt, wenn verschiedene Größen und Positionen dies tun.
SK9
Ich frage mich: Warum ist es veraltet? liegt es daran, dass sie jetzt einen float-Parameter haben?
Android-Entwickler
Ja, Sie können imageView.setAlpha (1.0f) verwenden, benötigen jedoch API-Level 11.
Tony Ceralva
12

Vielleicht eine hilfreiche Alternative für einen einfarbigen Hintergrund:

Platzieren Sie ein LinearLayout über der ImageView und verwenden Sie das LinearLayout als Deckkraftfilter. Im Folgenden ein kleines Beispiel mit schwarzem Hintergrund:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF000000" >

<RelativeLayout
    android:id="@+id/relativeLayout2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon_stop_big" />

    <LinearLayout
        android:id="@+id/opacityFilter"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="#CC000000"
        android:orientation="vertical" >
    </LinearLayout>
</RelativeLayout>

Variieren Sie das android: background- Attribut des LinearLayout zwischen # 00000000 (vollständig transparent) und # FF000000 (vollständig undurchsichtig).

marnaish
quelle
1
Nicht wirklich das Beste, um das Alpha eines Bildproblems zu lösen, insbesondere auf dem Telefongerät.
Prakash Nadar
Dies funktioniert hervorragend, wenn Sie nur den Hintergrund transparent machen möchten, aber NICHT die untergeordneten Elemente. Die Verwendung von Alpha für den übergeordneten Container macht auch alle untergeordneten Container transparent
noni
8

Es gibt jetzt eine XML-Alternative:

        <ImageView
        android:id="@+id/example"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/example"
        android:alpha="0.7" />

Es ist: android: alpha = "0.7"

Mit einem Wert von 0 (transparent) bis 1 (undurchsichtig).

Zauberer
quelle
4

Verwenden Sie Android: Alpha = 0,5, um die Deckkraft von 50% zu erreichen und die Symbole für Android-Material von Schwarz nach Grau zu ändern.

Sachiin Gupta
quelle
3

Verwenden Sie dieses Formular für die alte Version von Android.

ImageView myImageView;
myImageView = (ImageView) findViewById(R.id.img);

AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F);
alpha.setDuration(0); 
alpha.setFillAfter(true); 
myImageView.startAnimation(alpha);
Rafael
quelle
3

setAlpha(int)ist ab API veraltet 16:Android 4.1

Bitte verwenden Sie setImageAlpha(int)stattdessen

Alen Lee
quelle
0

Das Alpha kann zusammen mit der Farbe unter Verwendung des folgenden Hex-Formats #ARGB oder #AARRGGBB eingestellt werden. Siehe http://developer.android.com/guide/topics/resources/color-list-resource.html

Gewähren
quelle
Ich möchte das Alpha eines Bildes mithilfe eines XML-Attributs festlegen. Hilft das?
SK9
Ich benutze dies, um Layouts über einem Layout mit einem Hintergrundbild zu blähen. Würden Sie sicher das Alpha eines Bildes im Bild selbst einstellen?
Grant
Was meinst du mit "im Bild selbst"? Innerhalb der XML? Ein Versehen mag es sein, aber es gibt kein Alpha-XML-Attribut.
SK9
Ich meine, wenn Sie das Bild erstellen, fügen Sie eine Transparenzebene hinzu und setzen die Deckkraft Ihres Bildes auf 50 oder einen beliebigen Wert.
Grant
Ich bin SEHR überrascht, dass android: tint keine Wirkung hat. Es erlaubt einen Alpha-Wert ... aber es hat keine Auswirkung auf ein weißes Bild: - (((((
Jemand irgendwo