设置布局的Alpha /不透明度

是否有可能设置和获得布局的Alpha /不透明度和所有的子视图? 我不是在谈论背景。 说一个video控件的集合,如相对布局中的播放,暂停和进度条。

我可以使用animation淡入淡出,但想知道是否有一个我可以使用的直接方法。

Solutions Collecting From Web of "设置布局的Alpha /不透明度"

你可以在布局上设置alpha,使用带有0持续时间的AlphaAnimation和setFillAfter选项来设置子节点(或者其他任何视图)。

例:

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

您可以使用多个组件的一个animation来节省内存。 并重置()再次使用,或clearAnimation()放弃阿尔法。

虽然它看起来粗糙和黑客实际上是一个很好的方法来设置alpha视图设置ov视图,不占用太多的内存或处理器时间。

不知道获得当前的alpha值,但。

这是一个适用于所有版本的方法( 感谢@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); } 

很明显,对于API小于11,如果你可以创build一个自定义的视图调用Canvas.saveLayerAlpha()之前绘制其子( 感谢@RomainGuy )。

亚历克斯的解决scheme的作品,但另一种方法是创build一个自定义视图,在绘制子对象之前调用Canvas.saveLayerAlpha()。 请注意,在Android 3.0中有一个新的View.setAlpha()API 🙂

现在,您可以使用ViewCompat.setAlpha(View, float)来执行此操作。

对不起,我的答案,但如果你想要的alpha你可以使用ViewCompat类

ViewCompat.setAlpha(View view,float alpha)

ViewCompat在appcompat v4中