设置布局的Alpha /不透明度

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

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

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

您可以使用具有0持续时间和setFillAfter选项的AlphaAnimation在布局上设置alpha并使用它的子项(或任何其他视图)。

例:

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用于多个组件以节​​省内存。 并重新使用reset(),或者使用clearAnimation()来删除alpha。

虽然它看起来很粗糙并且被黑客攻击,但它实际上是一种在set ov视图上设置alpha的好方法,它不占用大量内存或处理器时间。

不确定是否获得当前的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); } 

显然,对于小于11的API,如果可以,您应该创建一个自定义视图,在绘制其子项之前调用Canvas.saveLayerAlpha() ( 感谢@RomainGuy )。

Alex的解决方案有效,但另一种方法是创建一个自定义视图,在绘制其子项之前调用Canvas.saveLayerAlpha()。 请注意,在Android 3.0中有一个新的View.setAlpha()API 🙂

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

很抱歉我的答案,但如果你想要alpha,你可以使用ViewCompat类

ViewCompat.setAlpha(View view,float alpha)

ViewCompat位于appcompat v4中