最新消息:

android中使用LayerDrawable制作颜色渐变的背景

android 大步 1111浏览 0评论
Z]3E@GFO@`K)5B8BC}2GZ1K.png
先设置LayerDrawable :

 

分两层,我们以最下面的一层为第一层。
第一层:设置为android:angle="0"  切 android:type="linear" 表示水平线性渐变。
第二层: android:color="#40000000" ,所以是有透明度的。但是为了达到上面的图片的效果,第一层只能有一半被覆盖。所以,我们先设置了第二层的属性 android:top="50dp" 。这样能看到渐变的效果,不过,这还不能达到上面的效果,因为这个属性会导致Button的高度变高。
进步一步完善:
仅仅依靠xml是无法达到目的地 ,必须要用java来设置LayerDrawable的高度。如下:

 

我们通过getHeight()获取Button的高度,然后再设置LayerDrawable第二层的顶部偏移量为Button高度的一半,这样就可以实现效果。
但是发现没有效果,原因是因为:因为我们是在Activity的onCreate()方法中来获取LayerDrawable的高度,而只有在onResume()方法回掉之后才会完成布局。那怎么办呢?
使用OnGlobalLayoutListener监听器:

 

然后,就是实现了我们想要的效果。
=====================
当然,如果我们想实现A——B——A的渐变,也可以使用这种思路,使用两个渐变的Drawable进行上下拼接。
参考自:《Multi-gradient shapes

 

 

转载请注明:大步's Blog » android中使用LayerDrawable制作颜色渐变的背景

SiteMap