Android使用XML的方式为背景添加渐变,描边,圆角的效果

来源:互联网 发布:湖北广电网络武汉有线 编辑:程序博客网 时间:2024/06/18 04:04

使用XML的方式为背景添加渐变的效果
首先,在res/Drawable 文件夹里面添加一个jbshape.xml文件,然后写入如下代码:


shape 节点配置的是图形的形式,主要包括方形、圆形等,上边代码为方形,

gradient 节点主要配置起点颜色、终点颜色及中间点的颜色、坐标、渐变效果(0,90,180从左到右渐变,270从上到下渐变)默认从左到右
padding 节点主要配置上下左右的间距

corners 节点配置四周园脚的半径

实现这个效果,需要定一个title.xml 内容如下:

复制代码
<?xml version=”1.0″ encoding=”UTF-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:background=”@drawable/jbshape”

android:paddingLeft=”0px”
>
复制代码

 

在实现背景渐变的帖子里

http://androidturing.iteye.com/blog/1238909

有朋友建议看看shape的用法,确实很有帮助。这里我偷懒转一篇比较详细的帖子,和大家一起进步~!

Android中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结:
先看下面的代码:

复制到剪贴板  XML/HTML代码
  1. <shape> 
  2.     <!-- 实心 --> 
  3.     <solidandroid:color="#ff9d77"/> 
  4.     <!-- 渐变 --> 
  5.     <gradient 
  6.         android:startColor="#ff8c00" 
  7.         android:endColor="#FFFFFF" 
  8.         android:angle="270"/> 
  9.     <!-- 描边 --> 
  10.     <stroke 
  11.         android:width="2dp" 
  12.         android:color="#dcdcdc"/> 
  13.     <!-- 圆角 --> 
  14.     <corners 
  15.         android:radius="2dp"/> 
  16.     <padding 
  17.         android:left="10dp" 
  18.         android:top="10dp" 
  19.         android:right="10dp" 
  20.         android:bottom="10dp"/> 
  21. </shape> 

 

solid:实心,就是填充的意思 android:color指定填充的颜色
gradient:渐变 android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。 另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。
stroke:描边 android:width="2dp" 描边的宽度,android:color 描边的颜色。 我们还可以把描边弄成虚线的形式,设置方式为: android:dashWidth="5dp"
android:dashGap="3dp" 其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。
corners:圆角 android:radius为角的弧度,值越大角越圆。 我们还可以把四个角设定成不同的角度,方法为:

XML/HTML代码
  1. <corners 
  2.  
  3.         android:topRightRadius="20dp"    右上角 
  4.         android:bottomLeftRadius="20dp"    右下角 
  5.         android:topLeftRadius="1dp"    左上角 
  6.         android:bottomRightRadius="0dp"    左下角 
  7. /> 

这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。 还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。
padding:间隔 这个就不用多说了,XML布局文件中经常用到。
大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:

 

 XML/HTML代码
  1. main.xml: 
  2. <Button 
  3.     android:layout_width="wrap_content" 
  4.     android:layout_height="wrap_content" 
  5.     android:text="TestShapeButton" 
  6.     android:background="@drawable/button_selector" 
  7.     /> 
  8. > 

button_selector.xml:

 

XML/HTML代码
  1. <?xmlversion="1.0"encoding="utf-8"?> 
  2. <selector 
  3.     xmlns:android="http://schemas.android.com/apk/res/android"> 
  4.     <itemandroid:state_pressed="true"> 
  5.         <shape> 
  6.             <!-- 渐变 --> 
  7.             <gradient 
  8.                 android:startColor="#ff8c00" 
  9.                 android:endColor="#FFFFFF" 
  10.                 android:type="radial" 
  11.                 android:gradientRadius="50"/> 
  12.             <!-- 描边 --> 
  13.             <stroke 
  14.                 android:width="2dp" 
  15.                 android:color="#dcdcdc" 
  16.                 android:dashWidth="5dp" 
  17.                 android:dashGap="3dp"/> 
  18.             <!-- 圆角 --> 
  19.             <corners 
  20.                 android:radius="2dp"/> 
  21.             <padding 
  22.                 android:left="10dp" 
  23.                 android:top="10dp" 
  24.                 android:right="10dp" 
  25.                 android:bottom="10dp"/> 
  26.         </shape> 
  27.     </item> 
  28.     <itemandroid:state_focused="true"> 
  29.         <shape> 
  30.             <gradient 
  31.                 android:startColor="#ffc2b7" 
  32.                 android:endColor="#ffc2b7" 
  33.                 android:angle="270"/> 
  34.             <stroke 
  35.                 android:width="2dp" 
  36.                 android:color="#dcdcdc"/> 
  37.             <corners 
  38.                 android:radius="2dp"/> 
  39.             <padding 
  40.                 android:left="10dp" 
  41.                 android:top="10dp" 
  42.                 android:right="10dp" 
  43.                 android:bottom="10dp"/> 
  44.         </shape> 
  45.     </item> 
  46.     <item>       
  47.         <shape> 
  48.             <solidandroid:color="#ff9d77"/> 
  49.             <stroke 
  50.                 android:width="2dp" 
  51.                 android:color="#fad3cf"/> 
  52.             <corners 
  53.                 android:topRightRadius="5dp" 
  54.                 android:bottomLeftRadius="5dp" 
  55.                 android:topLeftRadius="0dp" 
  56.                 android:bottomRightRadius="0dp" 
  57.             /> 
  58.             <padding 
  59.                 android:left="10dp" 
  60.                 android:top="10dp" 
  61.                 android:right="10dp" 
  62.                 android:bottom="10dp"/> 
  63.         </shape> 
  64.     </item> 
  65. </selector> 

 

运行效果如下图: 一般状态: 
获得焦点状态: 
按下状态: 

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 申请微信公众号邮箱被占用怎么办 邮箱注册微博需要手机验证怎么办 苹果手机的ad码忘记了怎么办 苹果手机酷狗音乐没有声音怎么办 在手机屏上不能缷载软件怎么办? 手机酷狗音乐下载歌曲要钱怎么办 酷狗下载歌曲后歌词不见了怎么办 手机酷我音乐缓冲文件损坏怎么办 苹果手机音乐里的歌删掉了怎么办 上课学生把粉笔擦藏起来了怎么办 手机没法解压10g压缩包怎么办 苹果id被锁邮箱也忘记密码怎么办 手机号注册的微信忘记密码怎么办 qq号注册微信忘记密码怎么办 云课堂密码忘记手机号更改了怎么办 孩子做事才要奖励怎么办的教案 员工做事效率低家庭情况不好怎么办 安全云课堂人脸识别失败怎么办 酷我k歌里音乐太少怎么办 酷狗里面的歌没有了怎么办 第一试用网登录密码忘记了怎么办 第一试用网登录密码忘了怎么办 微博登录直播间帐号被锁定怎么办 硫酸不小心弄到皮肤上怎么办 小米平板进水了开不了机怎么办 U盘被弹出后再插没有显示怎么办 视频从U盘传下来不能播放怎么办 微博账号忘了登录名怎么办 迅雷应版权方要求无法下载怎么办? 微信账号忘记密码上面有钱怎么办 蘑菇街账号忘记了里面有钱怎么办 手机注册的百度云帐号换号怎么办 网易云音乐sd卡写入失败怎么办? 玩客云涌u盘满了怎么办 手机安装杜比音效失败死机该怎么办 网易云音乐下载额度用完了怎么办 苹果手机付费app连续扣费怎么办 oppoO粉卡的流量用没了怎么办 qq邮箱里的文件过期了怎么办 163邮箱里的文件过期了怎么办 做人事的给员工漏交社保了怎么办