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.


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.


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.

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).


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).


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.


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

3

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

Bitte verwenden Sie setImageAlpha(int)stattdessen


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.