android drawable alpha-transparency

android - ¿Hay alguna manera de establecer Alpha dibujable usando XML?



drawable alpha-transparency (7)

Creo que podrías crear tu propio dibujable que podría tomar este argumento como un parámetro. Aunque nunca he hecho algo así.

mira este enlace:

Cómo establecer el valor alfa para drawable en un StateListDrawable?

si eso no es posible, siempre puedes hacerlo en código ...

Aquí hay 2 enlaces que he encontrado al respecto, en caso de que desee utilizar mapas de bits en su lugar:

Fácil como sí mismo. Quiero hacer un botón alfa, que tendría un dibujable seleccionado de esta manera:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Play/Pause --> <item android:state_selected="false" android:drawable="@drawable/item" /> <item android:state_selected="true" android:drawable="@drawable/item" /> </selector>

Me gustaría hacer algo como esto:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Play/Pause --> <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" /> <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" /> </selector>

Gracias por todo .


Ha pasado un tiempo desde la OP, pero personalmente encontré una solución que funcionó mucho mejor para mí que las respuestas sugeridas. Crear un BitmapDrawable hace que sea posible establecer el alfa:

<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/your_drawble" android:alpha="77"> </bitmap>

Alpha puede tener cualquier valor entre 0 y 255. Tenga en cuenta que es una especie de inversa del valor de color HEX alpha, como por ejemplo 70% alpha sería B3 en HEX y 77 en el mapa de bits derawable.


He estado buscando lo mismo. Aunque esto se publicó hace más de cuatro años, esta es la publicación más importante cuando se busca en Google, así que responderé aquí.

Esta es mi solución

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false"> <bitmap android:alpha="@integer/not_pressed_alpha" android:src="@drawable/item"/> </item> <item android:state_pressed="true" android:drawable="@drawable/item" /> </selector>


Logré lo mismo usando un drawable

<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#5000ddff" /> </shape>

Aquí utilizó el alfa 50, que establece el nivel de opacidad. Espero que ayude


Mi objetivo era hacer que un botón tuviera sus estados seleccionados y presionados en un alfa diferente, pero usando el mismo recurso (png) y afectando a la menor cantidad de archivos posible.

Mi solución es similar a la alteración del alfa en un mapa de bits desencadenable, pero lo hace desde el selector para que solo se vea afectado un archivo.

Utilice la función de tinte de Bitmap, recuerde que el tinte coloreará los píxeles existentes, por lo tanto, utilice un color blanco. Por ejemplo, # 80FFFFFF: para mantener el color como original pero reducir el alfa en un 50%. Esto también se puede usar para cambiar el color del icono cuando se presiona.

Este es mi archivo XML dibujable:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_selected="true"> <bitmap android:src="@drawable/ic_camera" android:tint="#80FFFFFF"> </bitmap> </item> <item android:state_pressed="true"> <bitmap android:src="@drawable/ic_camera" android:tint="#80FFFFFF"> </bitmap> </item> <item> <bitmap android:src="@drawable/ic_camera"> </bitmap> </item> </selector>


No creo que haya una manera de hacer eso. Hay un atributo android:alpha , pero se aplica a las vistas, no a los dibujables. Solo ha estado disponible desde API nivel 11.


Para aquellos que tienen el mismo problema que OP, AppCompat ahora le permite establecer el parámetro ''alpha'', como él deseaba en su código objetivo:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Play/Pause --> <item android:alpha="125" android:state_selected="false" android:drawable="@drawable/item" /> <item android:alpha="255" android:state_selected="true" android:drawable="@drawable/item" /> </selector>

Más información here .