【Android】设置View 透明度

设置View 透明度两个方法:view.setAlpha(float
alpha)与view.getBackground().setAlpha(int alpha)

1、view.setAlpha(float alpha)

  • 是对整个view的透明度(包括它的子view)进行设置,setAlpha(0)时view和其子view就会消失。
  • 参数范围是0~1

2、view.getBackground().setAlpha(int alpha)

  • 是对背景透明度进行设置,setAlpha(0)是背景全透明,其子view并不会收到影响。
  • 传入的是0~255的整型数字
注意事项:
1、mutate问题
在使用view.getBackground().setAlpha(int alpha)
给透明值是会使得同色直的其他界面受到影响。
解决方案如下:
view.getBackground().mutate().setAlpha(int alpha) 
只需要在getBackground的后面加上.mutate()即可解决。

至于为什么加上mutate()就可以解决的原因在于:默认情况下,所有的从同一资源(R.drawable.xxxx等等)加载的实例都是一个共用的状态,如果改变一个实例状态,其余的实例都会收到通知,改变其状态。而mutate()方法的作用就在于获取的drawable实例变为单独的,让这个drawable可变,这个操作是不可逆的。一个可变Drawable可以保证不与其它的Drawable分享一个状态。当你需要修改资源中的Drawable的属性时这个方法是非常有用的,因为默认情况下加载相同资源的所有Drawable实例拥有同一个状态,如果你在一个地方改变了状态,其它的实例也会跟着改变。

2、view.getBackground()为空问题

在页面先设置一下background,再去获取即可。

你可能感兴趣的:(Android,android)