android中通过自定义xml实现你需要的shape效果 xml属性配置

分类:android 265人阅读 评论(0) 收藏 举报 android shape 自定义drawable xml属性配置 圆角渐变填充 [java] view plain copy
在Android开发过程中,经常需要改变控件的默认样式, 那么通常会使用多个图片来解决。不过这种方式可能需要多个图片,比如一个按钮,需要点击时的式样图片,默认的式样图片,然后在写一个selector的xml文件放在drawable文件夹中,但是 这样drawable中的内容就非常多,就容易使apk变大。

那么除了使用drawable这样的图片外,还有其他方法吗?

就谈一下自定义图形shape,Android上支持以下几种属性gradient、stroke、corners、padding、solid等。

[html] view plain copy
  1. 1.<shape>
  2. 2.<!--实心-->
  3. 3.<solidandroid:color="#ff9d77"/>
  4. 4.<!--渐变-->
  5. 5.<gradient
  6. 6.android:startColor="#ff8c00"
  7. 7.android:endColor="#FFFFFF"
  8. 8.android:angle="270"/>
  9. 9.<!--描边-->
  10. 10.<stroke
  11. 11.android:width="2dp"
  12. 12.android:color="#dcdcdc"/>
  13. 13.<!--圆角-->
  14. 14.<corners
  15. 15.android:radius="2dp"/>
  16. 16.<padding
  17. 17.android:left="10dp"
  18. 18.android:top="10dp"
  19. 19.android:right="10dp"
  20. 20.android:bottom="10dp"/>
  21. 21.</shape>

solid:实心,就是填充的意思
android:color指定填充的颜色
gradient渐变
android:startColorandroid:endColor分别为起始和结束颜色

android: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为角的弧度,值越大角越圆。

[java] view plain copy
  1. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  2. <itemandroid:drawable="@drawable/y_calendar_btn_delete1"android:state_pressed="false"/>
  3. <itemandroid:drawable="@drawable/y_calendar_btn_delete2"android:state_pressed="true"/>
  4. </selector>

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <layer-listxmlns:android="http://schemas.android.com/apk/res/android">
  3. <item>
  4. <shape>
  5. <!--<strokeandroid:width="1sp"android:color="#c9c9c9"/>边框颜色-->
  6. <solidandroid:color="#bac4c5"/><!--填充色-->
  7. <cornersandroid:radius="5dip"/><!--圆角弧度-->
  8. </shape>
  9. </item>
  10. </layer-list>

[java] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <layer-listxmlns:android="http://schemas.android.com/apk/res/android">
  3. <item>
  4. <shape>
  5. <!--<strokeandroid:width="1sp"android:color="#c9c9c9"/>边框颜色-->
  6. <solidandroid:color="#bec9c9"/><!--填充色-->
  7. <cornersandroid:radius="5dip"/><!--圆角弧度-->
  8. </shape>
  9. </item>
  10. </layer-list>

效果图:



转自:http://blog.csdn.net/caijunjun1006/article/details/10340147







更多相关文章

  1. 使用NetBeans搭建Android开发环境
  2. Android(安卓)Service AIDL
  3. Android设置通知栏/状态栏透明改变通知栏颜色和app最上部分颜色
  4. android打电话发短信
  5. Android(安卓)组件资源库
  6. Android(安卓)5.x特性概览二
  7. Android(安卓)设置EditText光标Curso颜色及粗细
  8. android 中使用TextView实现分段显示不同颜色的字符串
  9. 整理:Android自带、第三方需要添加依赖的控件

随机推荐

  1. 善用Android预定义样式
  2. android 页面显示不下时怎么办?
  3. ImageView的属性android:scaleType
  4. android LinearLayout 相关知识
  5. ch010 Android(安卓)GridView
  6. Android(安卓)之 自定义控件用法介绍
  7. 自定义组件
  8. Android(安卓)Provider 属性
  9. android一些小技巧
  10. 如何进行Android单元测试