来讲个故事吧,这是我一个朋友最近遇到的一件事情,需求UI稿中有需要为一个视图设置渐变的背景颜色,然后我的这个朋友就屁颠屁颠地去根据UI稿去实现了。与渐变相关的实现如下,仅仅需要设置渐变开始颜色和结束颜色,其余都采用默认值即可。
<gradient
android:startColor="@color/..."
android:endColor="@color/..."
/>
然后流程就到了UI验收阶段了,借了同事两台机器截图给UI看,UI说:小老弟,不对啊......(哦,不,UI是一位可爱的小姐姐)你这个UI的实现没有按照UI稿来实现啊!我的设计稿里面是从上到下的,但是你的实现却是从左到右的。
我被问懵逼了,明明在自己手机上测试的时候方向是正常的啊?经过测试,同一个应用包就算是在小米的手机上也会有不同的情况,有的默认设置从左到右,有的默认设置从上到下。
让我们重新理一下,当我们仅仅设置了startColor和endColor时,android会将未设置但必要的angle和type字段添加默认值并予以设置,type默认会设置成linear也就是线性的。但是angle按照这次的情况可以看出,默认的数值会有不同。
当angle=0时,说明渐变是横向从左到右按照startColor到endColor的,angle值是按照逆时针旋转的角度。所以如果是希望从上到下进行颜色渐变,那么就需要将angle设置为270,而不能不设置使用默认值,虽然谷歌官方的默认值就是270.
<gradient
android:startColor="@color/..."
android:endColor="@color/..."
android:angle="..."
android:type="..."
/>