亲测实现:绘制有边距的边线框

这个标题不太好取,其实就是实现:在矩形内绘制边线框(stroke),如下图:

 

一开始拿到这个UI,相信有人跟我一样,立即想到shape、stroke,然后一顿猛虎操作:

在drawable下新建stroke_bg.xml,敲出如下代码:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <stroke
        android:width="@dimen/x5"
        android:color="@color/black"
        android:dashWidth="@dimen/x20"
        android:dashGap="@dimen/x35" />

    <solid android:color="#E6F1FA" />

    <corners android:radius="@dimen/x55" />

</shape>

效果图如下,跟UI差一点,怎么使虚线框往里面挪一点距离,添加padding尝试,还是不行!

稍稍思考一会后,那我在上面效果图的基础上,加个阴影不就实现UI了吗?这时候就需要了解一下layer-list(把item效果依次叠加显示)、item,改良后的代码如下(实现了UI):

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--第一层阴影-->
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#E6F1FA" />

            <corners android:radius="@dimen/x55" />
        </shape>
    </item>
    <!--第二层前景,四边的距离是相对第一层的偏移量-->
    <item
        android:bottom="@dimen/x45"
        android:left="@dimen/x45"
        android:right="@dimen/x45"
        android:top="@dimen/x45">
        <shape android:shape="rectangle">
            <!--  stroke边框,width宽度,color颜色,
            dashWidth虚线的长度(切换大小,看看是长度还是宽度在变化),dashGap虚线间距(为0是实线)          -->
            <stroke
                android:width="@dimen/x2"
                android:color="@color/black"
                android:dashWidth="@dimen/x15"
                android:dashGap="@dimen/x15" />
            <!--填充的颜色-->
            <solid android:color="#E6F1FA" />
            <!--圆角,radius四个角;可以单独设置四个角,
            同时设置优先显示"单独设置"的效果,eg:topRightRadius="@dimen/x155",右上角角度是155而不是55-->
            <corners android:radius="@dimen/x55" />
        </shape>
    </item>
</layer-list>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值