三者的使用的方法:
Java代码中:R.drawable.文件的名称
XML中:Android:background="@drawable/文件的名称"
1.Shape
[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <!--
  3. android:shape=["rectangle"|"oval"|"line"|"ring"]
  4. shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)下面的属性只 android:shape="ring"时可用:
  5. android:innerRadius尺寸,内环的半径。
  6. android:innerRadiusRatio浮点型,以环的宽度比率来表示内环的半径,例如,如果android:innerRadiusRatio,表示 内环半径等于环的宽度除以5,这个值是可以被覆盖的,默认为9.
  7. android:thickness尺寸,环的厚度
  8. android:thicknessRatio浮点型,以环的宽度比率来表示环的厚度,例如,如果 android:thicknessRatio="2"那么环的厚度就等于环的宽度除以2。这个值是可以被android:thickness覆盖的,默认值是 3.
  9. android:useLevelboolean值,如果当做是LevelListDrawable使用时值为true,否则为false.
  10. -->
  11. <shape
  12. xmlns:android="http://schemas.android.com/apk/res/android"
  13. android:shape="rectangle">
  14. <!--
  15. 圆角
  16. android:radius整型半径
  17. android:topLeftRadius整型左上角半径
  18. android:topRightRadius整型右上角半径
  19. android:bottomLeftRadius整型右下角半径
  20. android:bottomRightRadius整型左下角半径
  21. 这里有个地方需要注意,bottomleftradius是右下角,而不是左下角,这个不要记错了
    还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。
  22. -->
  23. <corners
  24. android:radius="8dp"
  25. android:topLeftRadius="5dp"
  26. android:topRightRadius="15dp"
  27. android:bottomLeftRadius="20dp"
  28. android:bottomRightRadius="25dp"
  29. />
  30. <!--
  31. 渐变色
  32. android:startColor颜色值起始颜色
  33. android:endColor颜色值结束颜色
  34. android:centerColor整型 渐变中间颜色,即开始颜色与结束颜色之间的颜色
  35. android:angle整型 渐变角度
  36. 使用android:angle的注意事项:
  37. angle=0时,渐变色是从左向右。然后逆时针方向转,当angle=90时为从下往上。angle必须为45的整数倍

    另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientradius="50"。

       android:angle网 上有各种说法,这里,我说说自己的实验结果,渐变的时候,最原始的,即android:angle=“0”时,是从左到右,按照开始颜色到结束颜色来渲染 的,android:angle=“90”是从上到下来渲染的,android:angle=“180”是从右到左来渲染的,android:angle=“360”和android:angle=“0”是一样的,所以这里应该是这样的,渲染时按照最原始的渲染色板(把控件内部看作一块可以绕中心旋转的板子)围绕控件中心来旋转相应的度数,即android:angle里面的值就是所需要旋转的角度,只是这个旋转角度必须是45的整数倍)

  38. android:type["linear"|"radial"|"sweep"]渐变类型(取值:linear、radial、sweep)
  39. linear线性渐变,这是默认设置
  40. radial放射性渐变,以开始色为中心。
  41. sweep扫描线式的渐变。
  42. android:useLevel["true"|"false"] 如果要使用LevelListDrawable对象,就要设置为 true。设置为true无渐变。false有渐变色
  43. android:gradientRadius整型渐变色半径.当android:type="radial"时才使用。 单独使用android:type="radial"会报错。
  44. android:centerX整型渐变中心X点坐标的相对位置
  45. android:centerY整型渐变中心Y点坐标的相对位置
  46. -->
  47. <gradient
  48. android:startColor="#FFFF0000"
  49. android:endColor="#80FF00FF"
  50. android:angle="45"
  51. />
  52. <!--
  53. 内边距,即内容与边的距离
  54. android:left整型左内边距
  55. android:top整型上内边距
  56. android:right整型右内边距
  57. android:bottom整型下内边距
  58. -->
  59. <padding
  60. android:left="10dp"
  61. android:top="10dp"
  62. android:right="10dp"
  63. android:bottom="10dp"
  64. />
  65. <!--
  66. size大小
  67. android:width整型宽度
  68. android:height整型高度
  69. -->
  70. <size
  71. android:width="600dp"
  72. />
  73. <!--
  74. 内部填充
  75. android:color颜色值填充颜色
  76. -->
  77. <solid
  78. android:color="#ffff9d77"
  79. />
  80. <!--
  81. 描边
  82. android:width整型描边的宽度
  83. android:color颜色值描边的颜色
  84. android:dashWidth整型表示描边的样式是虚线的宽度,值为0时,表示为实线。值大于0则为虚线。
  85. android:dashGap整型表示描边为虚线时,虚线之间的间隔即“----”
  86. -->
  87. <stroke
  88. android:width="2dp"
  89. android:color="#dcdcdc"
  90. />
  91. </shape>
2.Selector

根据不同的选定状态来定义不同的现实效果,分为四大属性:

android:state_selected是选中

android:state_focused是获得焦点

android:state_pressed是点击

android:state_enabled是设置是否响应事件,指所有事件

另:

android:state_window_focused默认时的背景图片


[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:Android="http://schemas.android.com/apk/res/android">
  3. <!--默认时的背景图片-->
  4. <itemAndroid:drawable="@drawable/pic1"/>
  5. <!--没有焦点时的背景图片-->
  6. <item
  7. Android:state_window_focused="false"
  8. android:drawable="@drawable/pic_blue"
  9. /><!--获得焦点时的图片背景-->
    <item
    Android:state_focused="true"
    Android:drawable="@drawable/pic_green"
    />
  10. <!--非触摸模式下获得焦点并单击时的背景图片-->
  11. <item
  12. Android:state_focused="true"
  13. android:state_pressed="true"
  14. android:drawable="@drawable/pic_red"
  15. />
  16. <!--触摸模式下单击时的背景图片-->
  17. <item
  18. Android:state_focused="false"
  19. Android:state_pressed="true"
  20. Android:drawable="@drawable/pic_pink"
  21. />
  22. <!--选中时的图片背景-->
  23. <item
  24. Android:state_selected="true"
  25. android:drawable="@drawable/pic_orange"
  26. />
  27. <!--获得焦点时的图片背景-->
  28. <item
  29. Android:state_focused="true"
  30. Android:drawable="@drawable/pic_green"
  31. />
  32. </selector>


3.layer-list

3.1 多图层叠加效果(1)

四个角都是圆角的效果。如果让UI设计人员直接出图,可能会更简单一些。但是我们使用android中layer-list多图层叠加效果同样可以实现。

我们把它拆分为三个部分,第一个部分是最顶端的那一行(我这里称为顶部),第二部分是中间部分(中间部分不需要圆角效果),第三部分是底部。

顶部的实现:

顶部是一个有灰色边框但无下边框,带圆角,白色背景的长方体。实现效果如下:

<?xml version="1.0" encoding="UTF-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">      <item >          <shape>              <solid android:color="#FFFFFF" />              <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomRightRadius="0.1dp" android:bottomLeftRadius="0.1dp" />              <stroke android:width="1dp" android:color="#ffa8abad" />          </shape>      </item>       <item android:top="1dp" android:left="1dp" android:right="1dp">          <shape>              <solid android:color="#FFFFFF" />              <corners android:topLeftRadius="10dp" android:topRightRadius="10dp" android:bottomRightRadius="0.1dp" android:bottomLeftRadius="0.1dp" />              <stroke android:width="1dp" android:color="#ffffffff" />          </shape>      </item> </layer-list>

中间部分是一个不带圆角 白色背景 灰色边框 无下边框 长方体.实现效果如下:

<?xml version="1.0" encoding="UTF-8"?>  <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >    <item>          <shape>              <solid android:color="#FFFFFF" />              <stroke android:width="1dp" android:color="#ffa8abad" />          </shape>      </item>      <item android:left="1dp" android:right="1dp" android:top="1dp">          <shape>              <solid android:color="#FFFFFF" />              <stroke android:width="1dp" android:color="#ffffffff" />          </shape>      </item> </layer-list>

底部是一个具有底部圆角,白色背景,灰色边框的长方体,实现效果如下:

<?xml version="1.0" encoding="UTF-8"?>  <layer-list xmlns:android="http://schemas.android.com/apk/res/android">      <item>          <shape>              <solid android:color="#FFFFFF" />              <corners android:topLeftRadius="0.1dp" android:topRightRadius="0.1dp" android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" />              <stroke android:width="1dp" android:color="#ffa8abad" />          </shape>      </item>     <item android:top="1dp" android:bottom="1dp" android:left="1dp" android:right="1dp">          <shape>              <solid android:color="#FFFFFF" />              <corners android:topLeftRadius="0.1dp" android:topRightRadius="0.1dp" android:bottomRightRadius="10dp" android:bottomLeftRadius="10dp" />              <stroke android:width="1dp" android:color="#ffffffff" />          </shape>      </item></layer-list>
3.2 背景图片直接加阴影效果

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 <? xml version = "1.0" encoding = "utf-8" ?> < layer-list xmlns:android = "http://schemas.android.com/apk/res/android" > <!-- 阴影部分 --> <!-- 个人觉得更形象的表达:top代表下边的阴影高度,left代表右边的阴影宽度。其实也就是相对应的offset,solid中的颜色是阴影的颜色,也可以设置角度等等 --> < item android:left = "2dp" android:top = "2dp" > < shape android:shape = "rectangle" > < gradient android:angle = "270" android:endColor = "#0F000000" android:startColor = "#0F000000" /> < corners android:bottomLeftRadius = "6dip" android:bottomRightRadius = "6dip" android:topLeftRadius = "6dip" android:topRightRadius = "6dip" /> </ shape > </ item > <!-- 背景部分 --> <!-- 形象的表达:bottom代表背景部分在上边缘超出阴影的高度,right代表背景部分在左边超出阴影的宽度(相对应的offset) --> < item android:bottom = "3dp" android:right = "3dp" > < shape android:shape = "rectangle" > < gradient android:angle = "270" android:endColor = "#FFFFFF" android:startColor = "#FFFFFF" /> < corners android:bottomLeftRadius = "6dip" android:bottomRightRadius = "6dip" android:topLeftRadius = "6dip" android:topRightRadius = "6dip" /> </ shape > </ item > </ layer-list >
3.3 多图层叠加效果(2)

<?xmlversion="1.0"encoding="UTF-8"?>
  1. <layer-list
  2. xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!--图片1-->
  4. <itemandroid:id="@+id/user_faceback_drawable"
  5. android:drawable="@drawable/faceback"/>
  6. <!--图片2-->
  7. <itemandroid:id="@+id/user_face_drawable"
  8. android:drawable="@drawable/h001"
  9. android:left="10.0dip"
  10. android:top="18.0dip"
  11. android:right="25.0dip"
  12. android:bottom="35.0dip"/>
  13. </layer-list>
  14. <!--2个图片的叠加-->

效果图如下:

更多相关文章

  1. android studio适配器Adapter
  2. android intent 传递list或者对象
  3. ListView 样式自定义
  4. android listview、GridView中item点击后改变其他item中的状态 s
  5. color 颜色代码 android res/values/colors.xml
  6. android SpannableString
  7. Android(安卓)中颜色对应的值
  8. 【Android-View】Android(安卓)View控相关低频属性
  9. Android——TextView指定字符串颜色高亮,实现类似微信、支付宝搜

随机推荐

  1. 详解android:scaleType属性
  2. Android PagerTabStrip和PagerTitleStrip
  3. 最新Android ADT, SDK, SDK_tool等官方下
  4. [Android]"@string/hello"和"你好"的区别
  5. Android 布局属性详解
  6. 黑马程序员之手机卫士第八天
  7. RelativeLayout 重要的属性
  8. Android Textview 阴影效果
  9. android 图片自动切换
  10. Android(安卓)TextView中显示图片的4种方