关于xml自定义形状的一点发现

 

这篇文章应该是前天(2015-4-7)发表的,由于最近项目比较紧,晚上回去的比较晚,所以之前的文章在这里补上,也作为记录之用

PS:话说节后上班第一天就有这么神奇的发现,想想还真是令人兴奋哪

好了,言归正传。抛砖引玉,更多好玩的东西有待各位看官继续研究。

关于在xml文件中自定义形状作为按钮背景的用法相信做过一两个正式的app的开发人员应该都是熟悉的,在此简单提下。

1.layer-list

顾名思义,就是层叠的意思,将多个颜色或者图片按照顺序叠加起来,使用方法和引用正常图片一样。具体的例子大家可以百度,有不会的或者不懂的可以留言。虽然我自己用的不多,不过原 理还是理解的。

基本语法:

<layer-listxmlns:android="http://schemas.android.com/apk/res/android">

<itemandroid:drawable="@android:color/white"/>

<itemandroid:drawable="@drawable/logo_overlay"/>

</layer-list>

2.shape

shape算是笔者在这段时间的工作中用的比较多的了,用法也比较灵活。

介绍下shape相关的属性:

1.<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

通过shape属性设置形状,一共有四个选项rectangle(矩形)、oval(椭圆)、line(线)、ring(圆环)

2.<corners android:topLeftRadius="2dp android:topRightRadius="2dp"
android:bottomLeftRadius="2dp" android:bottomRightRadius="2dp"/>

在corners标签中设置各个角的圆角半径值,如果都相等的话可以通过radius统一设置。

3. padding标签与corner类似 设置的是top/left/right/bottom 四个边的padding值。

4. stroke表示边线。可以通过color设置颜色,通过width设置宽度。

5. solid 表示填充颜色,相当于背景

6. gradient 表示渐变色,可以设置的属性相对较多,一般设置startColor起始颜色,endColor结束时候的颜色,angle表示角度。具体的效果大家可以自己尝试。

简单的介绍到此为止,有问题的可以留言继续讨论。

下面才是重点。

在开发中遇到这样一种情况:需要设置颜色为循环颜色,当然如果拿图片做背景进行循环也可以,这里提供另外一种思路----GradientDrawable

官方解释是:A Drawable with a color gradient for buttons,backgrounds,etc. 一张通过颜色渐变实现的图片用来作为按钮或者背景等。

It can be defined in an XML file with the<shape> element. 可以在xml中通过shape元素进行定义。(话说当时看到这句话真的是豁然开朗,犹如醍醐灌顶。)

没错就是它。在代码中修改属性的也全是靠它完成的。

比如在drawable文件夹中通过shape标签定义了一个btn_bgxml文件作为按钮的背景,如果修改它的背景颜色的话,也就相当于修改xml中的solid属性,可以通过下面两行代码实现。

GradientDrawable drawable = context.getResources().getDrawable(R.drawable.btn_bg);

drawable.setColor(Color.parseColor(colorList.get(position%colorList.size())));

其中的colorList就是要循环的颜色列表啦,字符串类型的list。需要说明的是与shape标签对应的是GradientDrawable,与layerList标签对应的是LayerDrawable,不做赘述。

相信看到这里,大家应该能明白一二了。更多属性和好玩的东西希望大家能够亲自去尝试,去发现。

再举个例子,如果要实现三个角是圆角一个角是直角的矩形效果的话,也可以采用这种方式。这里留个悬念,大家可以自行尝试。下篇文章会进行解答和说明。

限于篇幅,本篇文章到此为止,多谢大家细心阅读完~












相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念