transparencia studio semi black java android user-interface

java - studio - Establecer Alpha/Opacity of Layout



transparency android studio (5)

La solución de Alex funciona pero otra forma es crear una vista personalizada que llame a Canvas.saveLayerAlpha () antes de dibujar sus elementos secundarios. Tenga en cuenta que en Android 3.0 hay una nueva API View.setAlpha () :)

¿Es posible establecer y obtener la Alpha / Opacity de un Layout y todas sus vistas secundarias? No estoy hablando del trasfondo. Digamos una colección de controles de video como Play, Pausa y Progressbar en un diseño relativo.

Puedo utilizar la animación para desvanecerme, pero quería saber si había un método directo que pudiera usar.


Puede establecer el alfa en el diseño y sus elementos secundarios (o cualquier otra vista para el caso) usando AlphaAnimation con duración 0 y la opción SetFillAfter.

Ejemplo:

AlphaAnimation alpha = new AlphaAnimation(0.5F, 0.5F); alpha.setDuration(0); // Make animation instant alpha.setFillAfter(true); // Tell it to persist after the animation ends // And then on your layout yourLayout.startAnimation(alpha);

Puede usar una animación para múltiples componentes para ahorrar memoria. Y reinicie () para volver a usar, o borre la animación () para soltar alfa.

Aunque parece crudo y pirateado, en realidad es una buena forma de establecer alfa en un conjunto de vistas que no requiere mucha memoria o tiempo de procesador.

Sin embargo, no estoy seguro acerca de obtener el valor alfa actual.



Perdón por mi respuesta, pero si quiere el alfa, puede usar la clase ViewCompat

ViewCompat.setAlpha (Ver vista, flotante alfa)

ViewCompat está en el appcompat v4


Aquí hay un método que funciona en todas las versiones ( gracias a @AlexOrlov ):

@SuppressLint("NewApi") public static void setAlpha(View view, float alpha) { if (Build.VERSION.SDK_INT < 11) { final AlphaAnimation animation = new AlphaAnimation(alpha, alpha); animation.setDuration(0); animation.setFillAfter(true); view.startAnimation(animation); } else view.setAlpha(alpha); }

Claramente, para API menos de 11, si puede, debe crear una vista personalizada que invoque Canvas.saveLayerAlpha() antes de dibujar sus elementos secundarios ( gracias a @RomainGuy ).