2010-08-03 6 views

Répondre

0

Il n'y a pas de moyen facile de le faire. En effet, un ImageView peut avoir été défini avec un Bitmap, un StateListDrawable, un ColorDrawable ou autre chose entièrement. Une seule de ces classes a une seule couleur; sur n'importe quel autre dessin, l'alpha peut être différent pour chaque pixel (les pixels sont au format ARGB, w/1 octet chacun pour alpha, rouge, vert et bleu). Je suis assez sûr que la méthode setAlpha() ne fonctionne que sur les drawables qui le supportent, comme mentionné par Sephy ci-dessus.

Que devez-vous exactement savoir sur la transparence de l'image? Si vous savez ce que l'ImageView sera rempli à l'avance, alors peut-être vous pouvez extraire l'alpha à l'avance. Si vous n'avez pas d'accès direct à l'alpha, mais que vous êtes en mesure de déterminer la couleur, l'alpha sera égal à color >>> 24.

+0

J'anime certains ImageViews en utilisant un AlphaAnimation et je veux vérifier si leur alpha est 1 pour déterminer si je devrais exécuter mon animation fadeIn sur eux. – Joren

+0

Est-ce juste pour connaître la différence entre les vues déjà animées et celles qui ne l'étaient pas? Vous devriez probablement trouver une autre façon de calculer cela, par exemple si 'imgView.getAnimation()! = FadeIn' alors vous supposez que l'animation n'a pas encore été appliquée. Alternativement, vous pourriez sous-classer 'ImageView' et remplacer la méthode' onSetAlpha() '; C'est la méthode qui sera appelée quand l'alpha change en raison de l'animation. –

0

En fait, vous devez utiliser getOpacity() parce que l'alpha n'existe que pour ColorDrawable, Transformation et quelques autres. et vous devez l'utiliser sur le drawable du ImageView pas la vue elle-même.

+0

Cool, merci pour la pointe. – Joren

+0

Hmm. getDrawable() est null si je définis le src ImageView via XML au lieu de setImageResource lors de l'exécution. Des idées? – Joren

+0

Woops, je mettais en arrière-plan au lieu de src. getOpacity ne fait rien d'utile, il renvoie juste l'une des 4 constantes, j'ai besoin de quelque chose qui renvoie la valeur de transparence réelle. – Joren

1

Au cas où quelqu'un juste besoin d'obtenir et définir une visibilité des commandes, getVisibility et setVisibility peut être une alternative, vous pouvez utiliser:

if(vw.getVisibility() == View.VISIBLE) 
{ 
    // do something 
} 

et vous pouvez définir la visibilité:

vw.setVisibility(View.INVISIBLE); 
1

Ici ya allez

Vous pouvez utiliser ceci avec une instruction if pour obtenir une valeur booléenne et vérifier l'état alpha actuel d'une vue.

0

Vous ne pouvez pas directement. Vous pouvez contourner le problème, à condition que vous définissiez l'alpha par programmation, c'est de conserver la valeur alpha lorsque vous l'avez définie. E.g .:

private int mCurrentAlpha; 

private void setAlpha(int newAlpha){ 
    mCurrentAlpha=newAlpha; 
    ImageView imageView=... 
    imageView.setAlpha(mCurrentAlpha); 
}