属性简介
android:shape="rectangle" 矩形
android:shape="oval " 圆形
android:shape="line" 线形
android:shape="ring" 环形
- 设置填充颜色
<solid android:color="#FFFFFF"/>
- 设置圆弧角度
<corners android:radius="@dimen/dp_10"/>
- 边框
<stroke android:width="1dp" android:color="#FF0000"/>
更多参考
Android shape属性大全
实用案例
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorLightGray"/>
<corners android:radius="@dimen/dp_10"/>
</shape>
上方两个圆角
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- rectangle表示为矩形 -->
<!-- 填充的颜色 -->
<solid android:color="#FFFFFF" />
<!-- 边框的颜色和粗细 -->
<stroke
android:width="1dp"
android:color="#FF0000"/>
<!-- android:radius 圆角的半径 -->
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
</shape>
有文章指出部分圆角必须添加android:radius属性
<!-- android:radius 圆角的半径 -->
<corners
android:radius="2dp" //关键点
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"/>
1:在设置圆角时,圆角半径的大小必须大于1,否则是没有圆角效果的
2:如果你想单独设置某几个角是圆角, 你必须首先声明 radius 属性(必须大于1),
然后在其他四个角的属性中设置每个角的实际想要的半径大小, 不想圆角的设置为("0dp")
目前我没遇到这个问题,仅仅记录一下.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/dp_10"/>
<stroke android:width="@dimen/dp_1"
android:color="@color/color_49B0F3"/>
</shape>
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--下层画布,灰色-->
<item>
<shape>
<solid android:color="@color/colorLightGray" />
</shape>
</item>
<!--上层画布,白色,向左移1dp-->
<item android:right="@dimen/dp_1">
<shape>
<solid android:color="@color/colorWhile" />
</shape>
</item>
</layer-list>
# 图一
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<gradient
android:endColor="#0000FF"
android:gradientRadius="50%"
android:startColor="#FF0000"
android:type="radial" />
</shape>
# 图二
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:endColor="#0000FF"
android:centerColor="#00FF00"
android:startColor="#FF0000"
android:type="linear" />
</shape>
# 图三
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:endColor="#0000FF"
android:centerColor="#00FF00"
android:startColor="#FF0000"
android:angle="180"
android:type="linear" />
<corners android:radius="10dp" />
</shape>
# 图四
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:endColor="#0000FF"
android:startColor="#FF0000"
android:type="sweep" />
<corners android:radius="10dp" />
</shape>
- 阴影
之前阴影一般图省事都直接用CardView包裹实现
后来公司的一台三星平板CardView无任何效果,只好使用shape实现阴影
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<padding
android:bottom="@dimen/dp_2"
android:left="@dimen/dp_2"
android:right="@dimen/dp_2"
android:top="@dimen/dp_1" />
<solid android:color="#0DCCCCCC" />
<corners android:radius="@dimen/dp_8" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="@dimen/dp_2"
android:left="@dimen/dp_2"
android:right="@dimen/dp_2"
android:top="@dimen/dp_1" />
<solid android:color="#10CCCCCC" />
<corners android:radius="@dimen/dp_8" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="@dimen/dp_2"
android:left="@dimen/dp_2"
android:right="@dimen/dp_2"
android:top="@dimen/dp_1" />
<solid android:color="#15CCCCCC" />
<corners android:radius="@dimen/dp_8" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="@dimen/dp_2"
android:left="@dimen/dp_2"
android:right="@dimen/dp_2"
android:top="@dimen/dp_1" />
<solid android:color="#20CCCCCC" />
<corners android:radius="@dimen/dp_8" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="@dimen/dp_2"
android:left="@dimen/dp_2"
android:right="@dimen/dp_2"
android:top="@dimen/dp_1" />
<solid android:color="#30CCCCCC" />
<corners android:radius="@dimen/dp_8" />
</shape>
</item>
<item>
<shape>
<solid android:color="#FFFFFF" />
<corners android:radius="@dimen/dp_4" />
</shape>
</item>
</layer-list>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<size
android:width="100dp"
android:height="100dp" />
<stroke
android:width="1px"
android:color="#FF0000"
android:dashWidth="5dp"
android:dashGap="2dp" />
<!--线高-->
<!--颜色-->
<!--线长-->
<!--间隔-->
</shape>
其他相关
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_month_selected" android:state_checked="true" />
<item android:drawable="@drawable/shape_month_selected" android:state_pressed="true" />
<item android:drawable="@drawable/shape_month_selected" android:state_selected="true" />
<item android:drawable="@drawable/shape_month_normal" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@color/theme_color"/>
<item android:state_pressed="true" android:color="@color/theme_color" />
<item android:state_selected="true" android:color="@color/theme_color"/>
<item android:color="@color/color_666666" />
</selector>
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@mipmap/icon_home_index_pre"/>
<item android:state_pressed="true" android:drawable="@mipmap/icon_home_index_pre" />
<item android:state_selected="true" android:drawable="@mipmap/icon_home_index_pre"/>
<item android:drawable="@mipmap/icon_home_index" />
</selector>
网友评论