使用layerDrawable绘制icon

本文分享了一次使用XML绘制图标的实践经验,介绍了如何通过layer-list组合不同形状来构建图标,并讨论了在这一过程中遇到的问题及解决方案。

需求里面有个icon这这样的

想尝试下用xml 直接绘制 思路是一个layer-list 里面3个item

  • 白色圆形背景
  • 灰色线段1
  • 灰色线段2

尝试了一下发现使用line 在设置padding 的时候起到的效果难以理解,始终无法使用一个layer-list就搞定

不管在item 上控制 height ,width 还是在shape中控制padding ,都不能准确获得合适长度的line

没有办法最后使用ImageView 设置 backgroundsrc 显示两个drawable 完成,真的是太糟糕了(如果切图只需要一个文件,但是这里需要二份!)。

不过这二个文件

  • shape - 白色圆形
  • layer-list - 灰色叉 在其他地方也可以用到,就先这样吧~

在使用过程中发现一个问题

layer-listitem中我给其中一个item 设置了padding 居然会影响另外一个item 简直无语 查看官方文档也没有对 使用xml 绘制line做出一个比较友好的指导,太坑了

https://developer.android.google.cn/guide/topics/resources/drawable-resource.html#LayerList

白色圆形

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff"/>
    <corners android:radius="99dp"/>
</shape>
复制代码

灰色叉

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <rotate android:fromDegrees="45">
            <shape android:shape="line">
                <stroke
                    android:width="2dp"
                    android:color="#8e8e91"/>
            </shape>
        </rotate>
    </item>
    <item>
        <rotate android:fromDegrees="-45">
            <shape android:shape="line">
                <stroke
                    android:width="2dp"
                    android:color="#8e8e91"/>
            </shape>
        </rotate>
    </item>
</layer-list>
复制代码

显示的图片

 <ImageView
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:background="@drawable/bg_white_circle"
        android:padding="10dp"
        android:src="@drawable/bg_close_ebank"/>
复制代码

显示效果

转载于:https://juejin.im/post/5a31ee4951882554bd511137

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值