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>
相关推荐
Coffeeee15 小时前
Android功耗优化,哪些代码会让你的机子发热又耗电
android·架构·kotlin
xianrenli3817 小时前
Android14自动时区更新
android·学习·framework·aosp14·自动时区
心中有国也有家17 小时前
AtomGit Flutter 鸿蒙客户端:零外部资源的应用打包策略
android·javascript·flutter·华为·harmonyos
恋猫de小郭17 小时前
Fluter 共享内存多线程正在落地,IsolateGroupBound 来了
android·前端·flutter
三少爷的鞋17 小时前
Kotlin 协程的七重境界:从 launch(IO) 到执行模型设计
android
-SOLO-1 天前
Android Event 日志完全指南
android
壮哥_icon1 天前
【Android 系统开发】从掉帧卡顿到丝滑:高频硬件中断(IRQ)的 CPU 亲和性性能优化实战
android·性能优化
千里马学框架1 天前
Android Framework 新手学习踩坑建议指南
android·智能手机·性能优化·framework·aaos·车载开发·系统工程师
我命由我123451 天前
执行 Gradle 指令报错,无法将“grep”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
狂奔solar1 天前
ARMA 模型:从白噪声到万能逼近器
android