Android coder进阶我爱编程Android开发经验谈

Android样式开发之shape总结

2017-10-29  本文已影响214人  芒果味的你呀

android的样式主要则是通过shape、selector、layer-list、level-list、style、theme等组合实现。


Shape篇

1.shape:基础形状定义工具。一般用shape定义的xml文件存放在drawable目录下

2.使用shape可以自定义形状,可以定义下面四种类型的形状,通过android:shape属性指定:

3.具体使用:

【1】新建xml文件命名为bg_shape.xml,放在drawable目录下:

【2】通过android:shape属性指定形状

【3】最重要的是根据自己指定形状需要的样式指定特性:

公有的特性:
rectangle特性:
ring特性:

【4】在哪里使用就可以直接引用xml文件就好了

4.shape实例弧形矩阵


<?xml version="1.0" encoding="utf-8"?>
<!-- android:shape指定形状类型,默认为rectangle -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!-- solid指定形状的填充色,只有android:color一个属性 -->
    <solid android:color="#2F90BD" />
    <!-- padding设置内容区域离边界的间距 -->
    <padding
        android:bottom="12dp"
        android:left="12dp"
        android:right="12dp"
        android:top="12dp" />
    <!-- corners设置圆角,只适用于rectangle  200就会变成弧形 小一点就是我们常见的圆形矩阵-->
    <corners android:radius="200dp" />
</shape>
引用:
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="8dp"
    android:text="弧形边的矩形"
    android:textSize="16sp"
    android:textColor="@android:color/white"
    android:background="@drawable/bg_rectangle" />

5.shape实例之画圆--渐变圆

<?xml version="1.0" encoding="utf-8"?>
<!-- android:shape指定形状类型,默认为rectangle -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <!-- padding设置内间距 -->
    <padding
        android:bottom="4dp"
        android:left="4dp"
        android:right="4dp"
        android:top="4dp" />
    <!-- size设置形状的大小  宽度高度不一致就是椭圆,一致就是正圆)-->
    <size
        android:width="40dp"
        android:height="40dp" />
    <!-- gradient设置渐变.值得注意的是:使用radial渐变时,必须指定渐变的半径,即android:gradientRadius属性。 -->
    <gradient
        android:endColor="#000000"
        android:gradientRadius="40dp"
        android:startColor="#FFFFFF"
        android:type="radial" />
</shape>
引用:
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:layout_margin="8dp"
    android:text="6"
    android:textSize="20sp"
    android:textColor="@android:color/black"
    android:background="@drawable/bg_oval" />

6.shape实例之画线

line主要用于画分割线,是通过stroke和size特性组合来实现
画线时,有几点特性必须要知道的:
1.只能画水平线,画不了竖线;
2.线的高度是通过stroke的android:width属性设置的;
3.size的android:height属性定义的是整个形状区域的高度;
4.size的height必须大于stroke的width,否则,线无法显示;
5.线在整个形状区域中是居中显示的;
6.线左右两边会留有空白间距,线越粗,空白越大;
7.引用虚线的view需要添加属性android:layerType,值设为"software",否则显示不了虚线;

//画虚线
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">
    <!-- 实际显示的线 -->
    <stroke
        android:width="1dp"
        android:color="#2F90BD"
        android:dashGap="2dp"
        android:dashWidth="4dp" />
    <!-- 形状的高度 -->
    <size android:height="4dp" />
</shape>

7.shape实例之画环--渐变描边的环

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadiusRatio="3"
    android:shape="ring"
    android:thicknessRatio="9"
    android:useLevel="false">
    <gradient
        android:endColor="#2F90BD"
        android:startColor="#FFFFFF"
        android:type="sweep" />
    <stroke
        android:width="1dp"
        android:color="@android:color/black" />
</shape>

8. shape实例之旋转的环形进度条

其他就是在上面shape外层包多一个rotate元素就可以了

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="1080.0">
    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false">
        <gradient
            android:endColor="#2F90BD"
            android:startColor="#FFFFFF"
            android:type="sweep" />
    </shape>
</rotate>
上一篇下一篇

猜你喜欢

热点阅读