Android shape记录

之前一直觉得dataPath很好用,可以画各种矢量图。今天发现用shape画图也不错,记录一下自己用shape画的图。

一般使用shape就是定义形状、stroke边、solid内部、corners圆角等,代码

复制代码
<?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" />
    <solid
        android:color="?attr/colorBgKey" />
    <stroke android:width="@dimen/dp_1" android:color="@color/black"/>
</shape>

然后,shape也可以处理一下复杂一点的。

这其实是画两层,一层是一个渐变圆,一层是是个实心圆。

shape分层就需要用到 layer-list 每一层用 item 包裹,在 item 中写具体的shape。其中item可以指定width、height、top、left、right、bottom来控制每一层的位置。

代码如下

复制代码
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:width="@dimen/dp_30"
        android:height="@dimen/dp_30">
        <shape android:shape="oval">
            <gradient
                android:centerX="50%"
                android:centerY="50%"
                android:endColor="#00FF0000"
                android:gradientRadius="50%"
                android:startColor="#FFFF0000"
                android:type="radial" />
        </shape>

    </item>
    <item
        android:width="@dimen/dp_10"
        android:height="@dimen/dp_10" android:top="@dimen/dp_10" android:left="@dimen/dp_10">
        <shape android:shape="oval">
            <solid android:color="#FFFF0000"/>
        </shape>
    </item>
</layer-list>

下面是一个拍照背景图片

也是用到layer-list,代码如下

复制代码
<?xml version ="1.0" encoding ="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <stroke
                android:width="@dimen/dp_5"
                android:color="?attr/colorBorder"
                android:dashWidth="@dimen/dp_10"
                android:dashGap="@dimen/dp_10" />
            <corners android:radius="@dimen/dp_15" />
            <solid android:color="?attr/colorBg" />
        </shape>

    </item>
    <item
        android:left="@dimen/dp_50"
        android:right="@dimen/dp_50">
        <shape android:shape="line">
            <stroke
                android:width="@dimen/dp_5"
                android:color="?attr/colorBorder" />
        </shape>
    </item>
    <item
        android:left="@dimen/dp_50"
        android:right="@dimen/dp_50">
        <rotate android:fromDegrees="90">
            <shape android:shape="line">
                <stroke
                    android:width="@dimen/dp_5"
                    android:color="?attr/colorBorder" />

            </shape>
        </rotate>
    </item>
</layer-list>
相关推荐
独行soc5 小时前
2026年渗透测试面试题总结-20(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
常利兵6 小时前
2026年,Android开发已死?不,它正迎来黄金时代!
android
Risehuxyc6 小时前
备份三个PHP程序
android·开发语言·php
Doro再努力16 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
Daniel李华16 小时前
echarts使用案例
android·javascript·echarts
做人不要太理性17 小时前
CANN Runtime 运行时组件深度解析:任务调度机制、存储管理策略与维测体系构建逻辑
android·运维·魔珐星云
我命由我1234517 小时前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
朗迹 - 张伟18 小时前
Tauri2 导出 Android 详细教程
android
lpruoyu18 小时前
【Android第一行代码学习笔记】Android架构_四大组件_权限_持久化_通知_异步_服务
android·笔记·学习
独自破碎E19 小时前
【BISHI15】小红的夹吃棋
android·java·开发语言