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>
相关推荐
BoomHe2 小时前
Now in Android 架构模式全面分析
android·android jetpack
二流小码农9 小时前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
鹏程十八少9 小时前
4.Android 30分钟手写一个简单版shadow, 从零理解shadow插件化零反射插件化原理
android·前端·面试
Kapaseker10 小时前
一杯美式搞定 Kotlin 空安全
android·kotlin
三少爷的鞋10 小时前
Android 协程时代,Handler 应该退休了吗?
android
火柴就是我1 天前
让我们实现一个更好看的内部阴影按钮
android·flutter
砖厂小工1 天前
用 GLM + OpenClaw 打造你的 AI PR Review Agent — 让龙虾帮你审代码
android·github
张拭心1 天前
春节后,有些公司明确要求 AI 经验了
android·前端·人工智能
张拭心1 天前
Android 17 来了!新特性介绍与适配建议
android·前端
Kapaseker1 天前
Compose 进阶—巧用 GraphicsLayer
android·kotlin