首页 > 其他分享 >Android 背景资源自定义 ShapeDrawble

Android 背景资源自定义 ShapeDrawble

时间:2024-05-24 17:25:51浏览次数:25  
标签:ShapeDrawble 自定义 StateListDrawable 渐变 边框 color Android 矩形 android

前言

制作随时可以编辑的背景图,不需要向UI要背景图。【规则的】

ShapeDrawable 是绘制形状的 Drawable ,定义了基本的几何图形,如(矩形,圆形,线条等)

ShapeDrawable 根元素是 <shape/>


效果图

分别四种形状情况:ectangle(矩形)、oval(椭圆,包括圆)、line(线段)、ring(环形)

代码都在使用示例里,更多好看好玩的背景自行探索鸭


节点解析

1、形状: <shape>
2、尺寸: <size>

android:width 图形形状宽度、android:height 图形形状高度

3、渐变: <gradient>
4、填充: <solid>

android:color 背景填充色,设置solid会覆盖gradient设置的效果

5、边框: <stroke>
属性说明
android:width边框的宽度
android:color边框的颜色
android:dashWidth边框虚线段的长度
android:dashGap边框虚线段的间距
6、圆角: <corner>

android:radius 圆角半径,适用于上下左右四角

android:toLeftRadius 左上圆角,同理右上、左下、右下改变方向变量

7、内边距: <padding>

android:left 左边距、andorid:right 右边距、android:top 上边距、android:bottom 下边距


使用示例

1、弧度、线性渐变、矩形

绘制一个有弧度渐变背景的矩形

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

    <corners android:radius="10dp"/>

    <size android:width="150dp" android:height="50dp"/>

    <gradient
        android:startColor="#ABABE8"
        android:centerColor="#FFFFFF"
        android:endColor="#55E0F1"
        android:type="linear"/>
</shape>
2、圆环
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadius="30dp"
    android:thickness="10dp"
    android:useLevel="false">

    <size android:height="100dp" android:width="100dp"/>

    <solid android:color="#0CC4F3"/>

</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadiusRatio="5"
    android:thicknessRatio="10"
    android:useLevel="false">

    <size android:height="100dp" android:width="100dp"/>

    <solid android:color="#0CC4F3"/>

</shape>

我这里写了两组,效果相同,制作填充蓝色的圆环,建议两组属性分开来使用

android:innerRadiusRatio、android:thicknessRatio 比率一组;

android:innerRadius、android:thickness 尺寸一组

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

    <solid android:color="#CD1B1B" />
    <size android:width="200dp" android:height="1dp" />
</shape>
4、黑白棋、放射性渐变、圆形
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <size android:width="100dp" android:height="100dp"/>

    <gradient
        android:startColor="#605E5E"
        android:centerColor="#2C2929"
        android:endColor="#000000"
        android:type="radial"
        android:gradientRadius="60dp"/>
</shape>

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

    <size android:width="100dp" android:height="100dp"/>

    <gradient
        android:startColor="#FFFFFF"
        android:centerColor="#BCB9B9"
        android:endColor="#000000"
        android:type="radial"
        android:gradientRadius="60dp"/>
</shape>

总结

学会自定义Drawable资源,背景不再是单一的颜色color,能胜任更多场景,还能配合StateListDrawable实现组件背景点击效果。

1、StateListDrawable实现组件效果查看 StateListDrawable 状态控制

标签:ShapeDrawble,自定义,StateListDrawable,渐变,边框,color,Android,矩形,android
From: https://blog.csdn.net/m0_66984757/article/details/139116102

相关文章

  • 三分钟获知快速自定义表单开发的优势特点
    如果想要轻松实现高效率的流程化办公,可以了解低代码技术平台、快速自定义表单开发等产品。在竞争越来越激烈的职场社会中,很多大中型企业都在对它越来越关注,希望能借助科技的力量打破信息孤岛,实现增值、降本、提效的发展目标。现在一起来了解低代码技术平台、快速自定义表单开发都......
  • Java 异常相关(二):异常处理机制的补充,自定义异常的使用等
    一、前言记录时间[2024-05-22]前置文章:Java异常相关:异常体系结构,异常与错误的区别等本文讲述Java异常相关知识,对异常处理机制进行补充,以及自定义异常的方式。文章对异常知识的描述显然是笼统而简洁的,对于异常的学习,更应注重平时的积累和整理。二、异常处理机......
  • 自定义Feign配置
    java代码的方式写一个配置类publicclassFeignConfig{/***将契约改为feign原生的默认契约。这样就可以使用feign自带的注解了。*@return默认的原生契约*/@BeanpublicContractfeignContract(){returnnewContract.Default......
  • kubernetes部署mongoDB 单机版 自定义配置文件、密码、日志路径等
    官方镜像地址:https://hub.docker.com/_/mongo?tab=descriptiondocker版的mongo移除了默认的/etc/mongo.conf,修改了db数据存储路径为/data/db.创建configmap配置,注意不能加fork=true,否则Pod会变成Completed。apiVersion:v1kind:ConfigMapmetadata:name:mongodb-confdat......
  • Android JNI/NDK环境的配置与Demo编译
    一、背景​JNI(JavaNativeInterface)和NDK(NativeDevelopmentKit)在Android开发中扮演着重要的角色。JNI,即Java本地接口,是Java平台的一部分,它允许Java代码与其他语言写的代码进行交互。通过JNI,Java代码可以调用本地应用程序或库中的代码,也可以被本地代码调用。这主要使得......
  • Android11快速编译并替换framework.jar
    Android11快速编译并替换framework.jar在Android11之前修改了framework相关代码,只需makeframework就可以编译出framework.jar。在Android11,这个编译命令不起作用了,根据framework/base/目录下Android.bp中的提示:java_library{name:"framework-minus-apex",defaults:......
  • 同样的APP为何在Android 8以后网络感觉变卡?
    前言 在无线网络技术不断发展的今天,Wi-Fi已经成为了我们日常生活中不可或缺的一部分。无论是家庭娱乐、办公还是在线游戏,Wi-Fi都在提供着便捷的互联网接入服务。然而,在安卓8.1后,为了进一步延长安卓设备的待机时间。原生安卓(AOSP等)默认开启了全局省电(低功耗模式),该模式下W......
  • SqlSugar : date绑定到XX失败,可以试着换一个类型,或者使用ORM自定义类型实现
    System.Exception:中文提示:date绑定到Machine失败,可以试着换一个类型,或者使用ORM自定义类型实现EnglishMessage:MachinedatebinderroratSqlSugarEntity(IDataRecord)atSqlSugar.IDataReaderEntityBuilder`1.Build(IDataRecorddataRecord)atSqlSugar.......
  • Senparc.Weixin.MP SDK 微信公众平台开发--自定义菜单相关
      publicvirtualIResponseMessageBaseOnImageRequest(RequestMessageImagerequestMessage);    publicvirtualIResponseMessageBaseOnLinkRequest(RequestMessageLinkrequestMessage);    publicvirtualIResponseMessageBaseOnLocationRequest(Requ......
  • .NetCore源码阅读笔记系列之Security (二) 自定义认证实践
    通过前面对AddCookie或者 AddOpenIdConnect等了解,其实里面都实现了一个AuthenticationHandler<TOptions>的认证处理,接下来我们来简单自定义一个试试首先我来实现下面这个方式,我添加了一个AddLIYOUMING()services.AddAuthentication(options=>{......