web-dev-qa-db-fra.com

Android et paramètre alpha pour la vue (image) alpha

N'y a-t-il vraiment pas d'attribut XML correspondant à setAlpha(int)?

Si non, quelles sont les alternatives?

111
SK9

Non, non, voir comment la section "Attributs XML associés" est manquante dans ImageView.setAlpha (int) Documentation. L'alternative consiste à utiliser View.setAlpha (float) dont contrepartie XML est Android:alpha. Il prend une plage de 0,0 à 1,0 au lieu de 0 à 255. Utilisez-le, par exemple. comme

<ImageView Android:alpha="0.4">

Cependant, ce dernier n'est disponible que depuis le niveau 11 de l'API.

162
sschuberth

C'est plus facile que l'autre réponse. Il existe une valeur XML alpha qui prend une double valeur.

Android:alpha="0.0" c'est invisible

Android:alpha="0.5" voir à travers

Android:alpha="1.0" entièrement visible

Ça fonctionne comme ça.

225
jfcogato

Je ne suis pas sûr du XML, mais vous pouvez le faire par code de la manière suivante.

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

En pré-API 11:

  • la plage est comprise entre 0 et 255 (inclus), 0 étant transparent et 255 étant opaque.

Dans API 11+:

  • la plage est comprise entre 0f et 1f (inclus), 0f étant transparent et 1f étant opaque.
46
Umesh

Peut-être une alternative utile pour un fond de couleur unie:

Placez un LinearLayout sur le ImageView et utilisez le LinearLayout en tant que filtre d'opacité. Ci-dessous, un petit exemple avec un fond noir:

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

Variez le Android: attribut de fond de LinearLayout entre # 00000000 (totalement transparent) et # FF000000 (totalement opaque).

13
marnaish

Il existe maintenant une alternative XML:

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

C'est: Android: alpha = "0.7"

Avec une valeur de 0 (transparent) à 1 (opaque).

7
Sorcerer

utilisez Android: alpha = 0.5 pour atteindre l'opacité de 50% et activer Android les icônes de matériau de noir à gris.

4
Sachiin Gupta

Utilisez ce formulaire pour l'ancienne version d'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
Rafael

setAlpha(int) est obsolète en tant qu'API 16: Android 4.1

Veuillez utiliser setImageAlpha(int) à la place

2
Alen Lee

L'alpha peut être défini avec la couleur en utilisant le format hexadécimal suivant: #ARGB ou #AARRGGBB. Voir http://developer.Android.com/guide/topics/resources/color-list-resource.html

0
Grant