shape

作者: 我家猫猫不睡觉 | 来源:发表于2020-09-02 11:01 被阅读0次

属性简介

  • 设置shape的形状
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>

其他相关

  • select 背景颜色
<?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>
  • select 字体颜色
<?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>
  • select 图片
<?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>

相关文章

网友评论

      本文标题:shape

      本文链接:https://www.haomeiwen.com/subject/fdyisktx.html