2011-02-08 11 views

Respuesta

95

No, no hay, vea cómo la sección "Atributos XML relacionados" es falta en la documentación ImageView.setAlpha(int). La alternativa es usar View.setAlpha(float) cuyo XML counterpart es android:alpha. Toma un rango de 0.0 a 1.0 en vez de 0 a 255. Úselo, por ej. como

<ImageView android:alpha="0.4"> 

Sin embargo, en este último disponible sólo desde el nivel API 11.

+2

Sí, se puede hacer en xml. compruebe la respuesta de jfcogato a continuación. – AndroidDev

+6

Incluso si me estoy repitiendo aquí: 'ImageView.setAlpha (int)' está tomando un 'int' mientras que' android: alpha' está tomando un flotante, por lo que estrictamente hablando, este último no es el exacto Contraparte XML de la primera, pero es la contraparte de 'View.setAlpha (float)'. Y como se mencionó varias veces aquí, 'android: alpha' /' View.setAlpha (float) 'están disponibles solo a partir del nivel API 11 – sschuberth

+0

la diferencia es que el rango aceptable es 0-1 para el float y 0-255 para el int. – ataulm

38

No estoy seguro del XML pero puede hacerlo por código de la siguiente manera.

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

En pre-API 11:

  • rango es de 0 a 255 (inclusive), 0 ser transparente y 255 ser opaco.

En API 11+:

gama
  • es de 0F a 1f (inclusive), 0f ser transparente y 1F ser opaco.
+2

Sí, lo sé. (Esperaba que esto estuviera implícito en la pregunta.) Un punto de XML es quitar algo de este código. No tiene sentido para mí por qué 'alpha' no tiene una contraparte de atributo XML cuando varios tamaños, posiciones lo hacen. – SK9

+0

me pregunto: ¿por qué está obsoleto? ¿es porque ahora tienen un parámetro flotante? –

+0

Sí, puede usar imageView.setAlpha (1.0f), pero requiere el nivel de API 11. –

0

El alfa se puede configurar junto con el color con el siguiente formato hexadecimal #ARGB o #AARRGGBB. Ver http://developer.android.com/guide/topics/resources/color-list-resource.html

+0

Quiero establecer el alfa de una imagen mediante un atributo XML. ¿Esto ayuda? – SK9

+0

Estoy usando esto para crear diseños sobre un diseño con una imagen de fondo, seguramente establecería el alfa de una imagen en la imagen misma. – Grant

+0

¿Qué quiere decir "en la imagen en sí"? Dentro del XML? Puede ser un descuido, pero no hay un atributo alpha XML. – SK9

12

Tal vez una alternativa útil para un fondo de color liso :

Ponga un LinearLayout sobre el ImageView y utilizar el LinearLayout como un filtro de opacidad. En el siguiente un pequeño ejemplo con un fondo negro:

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

Variar el androide: Fondo atributo de la LinearLayout entre # 00000000 (totalmente transparente) y # FF000000 (completamente opaco).

+1

) No es realmente el mejor modo de hacerlo para resolver el problema alfa de una imagen, especialmente en el dispositivo del teléfono. –

+0

no es el mejor ... pero sigue siendo una respuesta legítima. – ByteMe

+0

Esto funciona muy bien cuando solo quieres hacer que el fondo sea transparente pero NO es un elemento secundario. Usar alfa en el contenedor principal, hace que todos sus elementos sean transparentes también – noni

199

Es más fácil que la otra respuesta. Hay un valor xml alpha que toma valores dobles.

android:alpha="0.0" eso invisibles

android:alpha="0.5" ver a través de

android:alpha="1.0" completa visibles

Eso es como funciona.

+14

Hay 'setAlpha (float)' y 'android: alpha' solo desde API 11 (Android 3.0). Antes de la API 11, uno debe usar el código para establecer alfa para la imagen. Como sschuberth ya dijo en anser arriba. – Salw

+3

¡Esta debería ser la respuesta correcta! – Antonio

+0

@Antonio ¿Por qué? Esta respuesta no agrega ninguna información sobre la mía y, por el contrario, es menos completa. – sschuberth

3

Utilice este formulario para la versión antigua de 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); 
7

Existe ahora una alternativa XML:

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

Es: androide: alfa = "0.7"

Con un valor de 0 (transparente) a 1 (opaco) .

4

use android: alpha = 0.5 para lograr la opacidad del 50% y para convertir los iconos de Android Material de Negro a Gris.