Android y configuración alfa para (imagen) ver alfa


Respuestas:


195

No, no lo hay, vea cómo falta la sección "Atributos XML relacionados" en la documentación de ImageView.setAlpha (int) . La alternativa es usar View.setAlpha (float) cuya contraparte XML es android:alpha. Se necesita un rango de 0.0 a 1.0 en lugar de 0 a 255. Úselo, por ejemplo, como

<ImageView android:alpha="0.4">

Sin embargo, este último solo está disponible desde el nivel 11 de API.


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

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

232

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

android:alpha="0.0" eso es invisible

android:alpha="0.5" transparente

android:alpha="1.0" totalmente visible

Asi es como funciona.


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

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

@sschuberth su respuesta es completamente correcta, pero la falta de un ejemplo podría hacer que esta respuesta tome más atención que la suya. Aunque su respuesta proporciona más información, esta respuesta proporciona una solución más cercana a lo que realmente necesito. Por favor, agregue algunos ejemplos para usar lo que ha explicado, ¡eso ayudará absolutamente!
Antonio

@Antonio Done. Hice mi respuesta ahora super-duper-over-verbose ;-)
sschuberth

53

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

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

En pre-API 11:

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

En API 11+:

  • el rango es de 0f a 1f (inclusive), 0f es transparente y 1f es opaco.

2
Si, lo sé. (Esperaba que esto estuviera implícito en la pregunta). Un punto de XML es eliminar parte de este código. No tiene sentido para mí por qué alphano tiene una contraparte de atributo XML cuando hay varios tamaños y posiciones.
SK9

Me pregunto: ¿por qué está en desuso? ¿es porque ahora tienen un parámetro flotante?
Desarrollador de Android el

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

12

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

Coloque LinearLayout sobre ImageView y use LinearLayout como filtro de opacidad. A continuación, 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>

Varíe el atributo android: background del LinearLayout entre # 00000000 (totalmente transparente) y # FF000000 (completamente opaco).


1
Realmente no es lo mejor para resolver el alfa de un problema de imagen, especialmente en el dispositivo del teléfono.
Prakash Nadar

Esto funciona muy bien cuando solo desea hacer que el fondo sea transparente pero NO sus hijos. El uso de alfa en el contenedor principal también hace que todos sus hijos sean transparentes
noni

8

Ahora hay 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: android: alpha = "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 cambiar los íconos de Android Material de negro a gris.


4

setAlpha(int)está en desuso a partir de API 16:Android 4.1

Por favor use setImageAlpha(int)en su lugar


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

0

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


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

Estoy acostumbrado a esto para combinar diseños sobre un diseño con una imagen de fondo, ¿seguramente establecerías el alfa de una imagen en la imagen misma?
Grant

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

Quiero decir, cuando creas la imagen, agregarías una capa de transparencia y establecerías la opacidad de tu imagen en 50 o cualquier valor que necesites.
Grant

Estoy MUY sorprendido de que Android: tinte no tenga ningún efecto. Permite un valor alfa ... pero no tiene efecto en una imagen en blanco: - (((((
alguien en algún lugar
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.