Android et configuration alpha pour la vue (image) alpha

Réponses:

195

Non, il n'y en a pas, voyez comment la section "Attributs XML associés" est manquante dans la documentation ImageView.setAlpha (int) . L'alternative consiste à utiliser View.setAlpha (float) dont l' équivalent 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 d'API 11.

sschuberth
la source
7
Même si je ne fais que me répéter ici: ImageView.setAlpha(int)prend un intcertain temps android:alphaprend un flottant, donc à proprement parler ce dernier n'est pas l'équivalent XML exact du premier, mais c'est le pendant View.setAlpha(float). Et comme déjà mentionné plusieurs fois ici, android:alpha/ View.setAlpha(float)sont disponibles à partir du niveau d'API 11 uniquement.
sschuberth
la différence est que la plage acceptable est de 0-1 pour le float one et de 0-255 pour celui int.
ataulm
232

C'est plus facile que l'autre réponse. Il existe une valeur xml alphaqui prend des valeurs doubles.

android:alpha="0.0" c'est invisible

android:alpha="0.5" voir à travers

android:alpha="1.0" entièrement visible

Voilà comment ça marche.

jfcogato
la source
15
Il existe setAlpha(float)et android:alphaseulement depuis l'API 11 (Android 3.0). Avant l'API 11, il fallait utiliser du code pour définir l'alpha pour l'image. Comme sschuberth l'a déjà dit dans anser ci-dessus.
Salw
@Antonio Pourquoi? Cette réponse n'ajoute aucune information sur la mienne, et au contraire est moins complète.
sschuberth
@sschuberth votre réponse est tout à fait correcte, mais l'absence d'exemple pourrait faire en sorte que cette réponse retienne plus l'attention que la vôtre. Bien que votre réponse fournisse plus d'informations, cette réponse fournit une solution plus proche de ce dont j'ai vraiment besoin. S'il vous plaît, ajoutez quelques exemples pour utiliser ce que vous avez expliqué, cela aidera absolument!
Antonio
@Antonio fait. J'ai fait ma réponse maintenant super-duper-over-verbose ;-)
sschuberth
53

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

Dans la pré-API 11:

  • la plage va de 0 à 255 (inclus), 0 étant transparent et 255 étant opaque.

Dans l'API 11+:

  • l'intervalle va de 0f à 1f (inclus), 0f étant transparent et 1f étant opaque.
Umesh
la source
2
Oui, je sais. (J'espérais que c'était implicite dans la question.) Un point de XML est de supprimer une partie de ce code. Cela n'a pas de sens pour moi de alphane pas avoir d'équivalent d'attribut XML lorsque différentes tailles, positions le font.
SK9
Je me demande: pourquoi est-il obsolète? est-ce parce que maintenant ils ont un paramètre float?
développeur android
Oui, vous pouvez utiliser imageView.setAlpha (1.0f), mais nécessite le niveau d'API 11.
Tony Ceralva
12

Peut-être une alternative utile pour un arrière - plan uni:

Mettez un LinearLayout sur la ImageView et utiliser le LinearLayout comme un filtre d'opacité. Dans ce qui suit, 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>

Varier le androïde: fond attribut de l' LinearLayout entre # 00000000 (entièrement transparent) et # FF000000 (entièrement opaque).

marnaish
la source
1
Ce n'est pas vraiment la meilleure solution pour résoudre l'alpha d'un problème d'image, en particulier sur le téléphone.
Prakash Nadar
Cela fonctionne très bien lorsque vous voulez simplement rendre l'arrière-plan transparent mais PAS ses fils. L'utilisation d'alpha sur le conteneur parent rend également tous ses fils transparents
noni
8

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 comprise entre 0 (transparent) et 1 (opaque).

Sorcier
la source
4

utilisez android: alpha = 0,5 pour atteindre l'opacité de 50% et faire passer les icônes de matériel Android du noir au gris.

Sachiin Gupta
la source
4

setAlpha(int)est obsolète à partir de l'API 16:Android 4.1

Veuillez utiliser à la setImageAlpha(int)place

Alen Lee
la source
3

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);
Rafael
la source
0

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

Subvention
la source
Je souhaite définir l'alpha d'une image à l'aide d'un attribut XML. est-ce que cela aide?
SK9
J'utilise cela pour bleand et les mises en page sur une mise en page avec une image d'arrière-plan, vous définiriez sûrement l'alpha d'une image dans l'image elle-même?
Accorder
Que voulez-vous dire "dans l'image elle-même"? Dans le XML? C'est peut-être un oubli, mais il n'y a pas d'attribut XML alpha.
SK9
Je veux dire que lorsque vous créez l'image, vous ajoutez un calque de transparence et définissez l'opacité de votre image sur 50 ou la valeur dont vous avez besoin.
Accorder
Je suis TRÈS surpris qu'androïde: teinte n'ait aucun effet. Cela permet une valeur alpha ... mais cela n'a pas d'effet sur une image blanche: - ((((
Someone Somewhere