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.


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.


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.

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


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


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.


4

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

Veuillez utiliser à la setImageAlpha(int)place


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

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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.