图文详解Andorid顶用Shape界说GradientDrawable-Android-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝30
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:270回复:0

  图文详解Andorid顶用Shape界说GradientDrawable

楼主#
更多 发布于:2016-05-21 22:58


Android中提供了各种类型的Drawable,也能够用XML界说各种Drawable。这篇文章重点叙述如何用XML中的shape节点界说GradientDrawable。
用XML界说的drawable文件放在res/drawable目录下。
用XML文件界说GradientDrawable的语法如下所示:

该文件以为根结点,其shape特点可取四种值:rectangle、oval、line或ring。以上语法格局中尽管列出了许多特点,可是并不是关于一切类型的shape都支撑这些特点。下面别离对这四种shape进行解说。
rectangle
在res/drawable下面用XML文件界说了一个名为rectangle的GradientDrawable,其对应的shape值为rectangle,标明咱们界说的drawable的形状是矩形。在layout文件中界说了一个TextView,其运用了上述drawable,如下所示:

solidrectangle.xml界说如下所示:

在上面的XML文件中,咱们将shape特点设置为rectangle,咱们将节点的color特点设置为绿色,特点是用来设置面的填充色的,作用如下所示:

corners
节点用于设置drawable四个角落的半径,对应的XML文件如下所示:

作用如下所示:

只有当shape特点值为rectangle时,节点才会有用。节点的radius特点一起界说了四个角的半径,假如想让这四个角的半径不相同,能够别离设置topLeftRadius、topRightRadius、bottomLeftRadius和bottomRightRadius特点,不过在设置这四个特点之前应先设置radius特点作为默许值,且默许值要大于1,无法正常运用别的四个特点。
padding
节点用于设置drawable的padding,能够别离设置left、right、top、bottom四个特点,其作用与直接对TextView设置的四个paddingLeft、paddingRight、paddingTop、paddingBottom特点等价。XML文件如下所示:

作用如下所示:

size
能够用节点的width和height特点设置drawable的尺度。默许情况下,用界说的drawable会自动缩放到包括drawable的View尺度规模。比如咱们有如下的ImageView的src设置了界说的drawable,当咱们设置了其scaleType值为center时,中界说的size尺度就会约束drawable缩放。界说的ImageView如下所示:

对应的drawable界说如下所示:

作用如下所示:

stroke
能够用节点设置drawable的轮廓线,经过width特点设置轮廓线的宽度,经过color特点设置轮廓线的色彩。默许情况下,界说的是实线,除此以外,还能够设置dashWidth和dashGap特点,假如设置了这两个特点,那么即是虚线。其间,dashWidth界说了每个虚线段的长度,dashGap界说了两个虚线段之间的间隔。对应的XML文件如下所示:

作用如下所示:

gradient
上面咱们说到,经过能够设置drawable的色彩,可是仅仅一种纯色,假如想让drawable发生突变作用,能够运用节点创立突变色作用。节点具有以下特点:type、startColor、centerColor、endColor、angle、centerX、centerY、gradientRadius。其间type有三种取值:linear、radial和sweep,默许值是linear。当type取不相同的值时,并不是支撑悉数特点,下面具体阐明。
linear
当的type值为linear时,表明色彩是线性突变的,此刻支撑startColor、centerColor、endColor、angle这四个特点,别的特点不支撑。咱们能够经过设置startColor和endColor指定突变的开始色彩以及停止色彩,XML如下所示:

咱们将startColor设置为赤色,endColor设置为蓝色,作用如下所示:

咱们还能够设置centerColor特点,指定中间色,XML如下所示:
<padding
android:left="20dp"        android:top="20dp"        android:right="20dp"      
 android:bottom="20dp" />    
咱们将中间色设置为绿色,作用如下所示:

默许情况下,突变是从左向右进行的,假如想调整突变的方向能够设置angle特点,angle的默许值为0,对应着自左向右突变,angle的单位是视点,angle的值有必要是45的倍数,不然不会有突变作用。咱们能够更改angle值,XML如下所示:

咱们将angle设置为90度,那么突变方向就变成了从下上,作用如下所示:

radial
当的type值为radial时,表明色彩从某点向周围辐射突变,此刻支撑除angle以外的别的一切特点。咱们有必要经过设置gradientRadius特点以指定突变的辐射半径,经过startColor指定开始色彩,XML如下所示:

咱们将startColor设置为赤色,作用如下所示:

由上图咱们能够发现,startColor(赤色)从基地沿着圆的半径逐突变淡。
在设置了startColor的基础上,咱们还能够设置centerColor,XML如下所示:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle">
  
作用如下图所示:

由上图能够看出,startColor(赤色)从基地沿着圆的半径逐步突变到centerColor(绿色)。
除了设置startColor、centerColor,还能够设置endColor,XML如下所示:

咱们将centerColor设置为绿色,作用如下所示:

由上图能够看出,startColor(赤色)从基地沿着圆的半径逐步突变到centerColor(绿色),在指定的半径以外色彩用endColor(蓝色)填充。
本来,startColor、centerColor、endColor这三个特点能够恣意组合,我们能够自个测验一下各种组合的作用。
默许圆心的方位处于drawable的基地,咱们能够经过centerX和centerY特点改动突变圆心的方位,centerX和centerY的取值规模都是0到1,这两个特点的默许值都是0.5,drawable的左上角的centerX和centerY的值都是0,右下角的centerX和centerY的值都是1。咱们改动centerX和centerY的值,XML如下所示:

作用如下所示:

sweep
当的type值为sweep时,表明色彩是环绕基地点360度顺时针旋转的,起点即是3点钟方位。
咱们能够只设置startColor,XML文件如下所示:

咱们将startColor设置为赤色,作用如下所示:

咱们也能够只设置endColor,XML文件如下所示:

将endColor设置为蓝色,作用如下所示:

咱们也能够只设置centerColor的值,XML文件如下所示:

将centerColor设置为绿色,作用如下所示:

咱们也能够一起设置startColor、centerColor、endColor的值,XML文件如下所示:

将startColor、centerColor、endColor别离设置为红、绿、蓝,作用如下所示:

centerX和centerY的默许值都是0.5,表明基地点的默许方位即是drawable的基地,咱们也能够更改centerX和centerY的值,从而更新基地点的方位,XML文件如下所示:

咱们将centerX的值设置为0.25,作用如下所示:

oval
在res/drawable下面用XML文件界说了一个名为oval的GradientDrawable,其对应的shape值为oval,表明drawable的形状是椭圆,并将该drawable作为TextView的background。oval和rectangle的首要差异即是drawable的形状不相同,大多数的节点特点的作用是相同的。
solid
好像rectangle,咱们能够经过solid指定drawable的色彩,XML如下所示:

作用如下所示:

corners
当shape为oval时,不支撑节点。
padding
oval相同支撑节点,将四个padding值设置为20dp,作用如下所示:

size
oval不支撑节点。
stroke
同rectangle相同,咱们也能够为oval设定,作用如下所示:

gradient
oval相同支撑节点完成突变作用,type特点也是支撑linear、radial、sweep三个特点。节点完成的突变作用桶rectangle的突变作用根本相同。
linear
当type为linear时,完成线性突变作用,咱们将startColor、centerColor、endColor别离设置为红、绿、蓝,并设置angle为45度,作用如下所示:

radial
当type为radial时,完成放射突变作用,咱们将startColor、centerColor、endColor别离设置为红、绿、蓝,作用如下所示:

sweep
当type为sweep时,表明色彩是环绕基地点360度顺时针旋转的,起点即是3点钟方位。咱们将startColor、centerColor、endColor别离设置为红、绿、蓝,作用如下所示:

节点中的多个参数组合的作用能够参见上述rectangle中的阐明。
line
在res/drawable下面用XML文件界说了一个名为line的GradientDrawable,其对应的shape值为line,并将该drawable作为TextView的background。当shape为line时,表明drawable的形状是线,该线会切割drawable。line只支撑和两个节点,不支撑别的的节点。
XML文件如下所示:

作用如下所示:

ring
在res/drawable下面用XML文件界说了一个名为ring的GradientDrawable,其对应的shape值为ring,表明drawable的形状是圆环,并将该drawable作为TextView的background。所谓圆环即是大圆套小圆。当shape为ring时,shape有额定的四个特点可用:innerRadius、thickness、innerRadiusRatio、thicknessRatio。
需求特别注意的是,在API<=19的真机上运用shape为ring的drawable时,Android有个bug,会不显现drawable,解决办法是将shape设置useLevel特点为true。
咱们经过innerRadius指定小圆的半径,经过thickness指定大圆和小圆之间的宽度。XML如下所示:

作用如下所示:

咱们还能够经过innerRadiusRatio指定小圆的半径,innerRadiusRatio的值是float类型,假如其值是9,表明小圆的半径等于TextView宽度的1/9。相同,也能够经过thicknessRatio指定大圆和小圆之间的宽度,其值类型也是float,假如值为8,则表明大小圆之间的宽度等于TextView的1/8。XML文件如下所示:

作用如下所示:

假如给ring设置了,那么大小圆都会运用该设置的轮廓线,作用如下所示:

ring相同支撑完成突变作用,默许type为linear,只将startColor设置为赤色,作用如下所示:

type为linear时,只将centerColor设置为绿色,作用如下所示:

type为linear时,只将endColor设置为蓝色,作用如下所示:

type为linear时,也支撑angle参数。我们能够自个测验多种色彩的组合作用。
当的type值设置为gradial时,需求指定gradientRadius特点,不然会报错。gradial并不能像上面那样完成辐射突变作用,gradial的ring仅仅用startColor填充圆环的色彩,完成的作用与指定节点中的color特点相同,此处就不贴图了。
当type为sweep时,表明色彩是环绕基地点360度顺时针旋转的,起点即是3点钟方位。咱们将startColor、centerColor、endColor别离设置为红、绿、蓝,作用如下所示:
[img]http://img.blog.csdn.net/20160101162012862[/img]

期望这篇文章对我们用Shape界说GradientDrawable有所协助!

[img]https://img.alicdn.com/imgextra/i2/2223466637/TB2PnMukXXXXXcvXpXXXXXXXXXX_!!2223466637.png[/img]

优质IT资源分享社区[font=Tahoma  ]为你提供此文。 [font=Tahoma  ]
[font=Tahoma  ]本站有大量优质android教程视频,资料等资源,包含android基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。[font=Tahoma  ]

android教程视频
优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客