Shape--------详解和运用

2023-10-19 22:32
文章标签 详解 -------- 运用 shape

本文主要是介绍Shape--------详解和运用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、概述

最近太忙了,几乎每天都在做项目
在我们开发中,会经常遇到shape这种属性,这种属性可以在没有美工的情况照样可以实现我们想要的效果。自动动手,丰衣足食。

二、效果图

这里写图片描述

二、属性

shape描述
rectangle矩形(默认)
oval椭圆
line直线
ring环形

三、基本属性

基本属性描述
Corners圆角
Solid内部填充颜色
Gradient渐变色
Stroke这是描边属性,可以定义描边的宽度,颜色,虚实线等
Size定义控件大小
padding内部边距
  • Corners

    Android:radius=”dimension” 全部的圆角半径
    android:topLeftRadius=”dimension” 左上角的圆角半径
    android:topRightRadius=”dimension” 右上角的圆角半径
    android:bottomLeftRadius=”dimension” 左下角的圆角半径
    android:bottomRightRadius=”dimension” 右下角的圆角半径

  • Solid

    android:color=”color” 填充颜色

  • Gradient

    android:type=[“linear” | “radial” | “sweep”] 3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变
    android:angle=”integer” 渐变角度,必须为45的倍数,0为从左到右,90为从上到下 (只对线性渐变有效)
    android:centerX=”float” 渐变中心X的相当位置,范围为0~1
    android:centerY=”float” 渐变中心Y的相当位置,范围为0~1
    android:startColor=”color” 渐变开始点的颜色
    android:centerColor=”color” 渐变中间点的颜色,在开始与结束点之间
    android:endColor=”color” 渐变结束点的颜色
    android:gradientRadius=”float” 渐变的半径,只有当渐变类型为radial时才能使用
    android:useLevel=[“true” | “false”] /> 使用LevelListDrawable时就要设置为true。设为false时才有渐变效果

  • stroke

    android:width=”dimension” 描边的宽度
    android:color=”color” 描边的颜色
    以下两个属性设置虚线
    android:dashWidth=”dimension” 虚线的宽度,值为0时是实线
    android:dashGap=”dimension” 虚线间隔

  • size

    android:width=”dimension” 控件宽度
    android:height=”dimension” 控件高度

  • padding

    android:left=”dimension” 左
    android:top=”dimension” 上
    android:right=”dimension” 右
    android:bottom=”dimension” 下

  • 特殊

    • ring(环形特有属性)

    android:innerRadius 尺寸,内环的半径。
    android:thickness 尺寸,环的厚度
    android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
    例如,如果android:innerRadiusRatio,表示内环半径等于环的宽度除以5,这个值是可以被覆盖的,默认为9.
    android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio=”2”,
    那么环的厚度就等于环的宽度除以2。这个值是可以被android:thickness覆盖的,默认值是3.
    android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.

四、问题

在xml里面已经设置BackGround已经为shape属性了。如果在代码在设置BackGround会把shape的属性覆盖掉,我们怎么能保证shape属性不变,又可以切换颜色那?当然定义多个shape.xml也可以实现的。

我可以通过 GradientDrawable这个类来实现我们的想要的效果

 findViewById(R.id.rectangle).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {position++;GradientDrawable myGrad = (GradientDrawable) allRectangle.getBackground();switch (position % 6) {case 0:myGrad.setColor(Color.argb(255, 249, 122, 3));break;case 1:myGrad.setColor(Color.argb(255, 240, 94, 63));break;case 2:myGrad.setColor(Color.argb(255, 96, 79, 171));break;case 3:myGrad.setColor(Color.argb(255, 36, 198, 89));break;case 4:myGrad.setColor(Color.argb(255, 94, 92, 93));break;case 5:myGrad.setColor(Color.argb(255, 65, 179, 205));break;}}});

这样就可以实现我们想要的效果了。

五、总结

上面这些基本上是shape属性所有用法了,没有美工我照样可以做出好看的效果!

六、源码

点击下载

这篇关于Shape--------详解和运用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242790

相关文章

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

Java中的Cursor使用详解

《Java中的Cursor使用详解》本文介绍了Java中的Cursor接口及其在大数据集处理中的优势,包括逐行读取、分页处理、流控制、动态改变查询、并发控制和减少网络流量等,感兴趣的朋友一起看看吧... 最近看代码,有一段代码涉及到Cursor,感觉写法挺有意思的。注意是Cursor,而不是Consumer

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

Java 8 Stream filter流式过滤器详解

《Java8Streamfilter流式过滤器详解》本文介绍了Java8的StreamAPI中的filter方法,展示了如何使用lambda表达式根据条件过滤流式数据,通过实际代码示例,展示了f... 目录引言 一.Java 8 Stream 的过滤器(filter)二.Java 8 的 filter、fi