Shape详解

news2025/7/8 11:58:37

Spape详解

1.自定义背景shape

1.1gradient

1.简介

  • 定义渐变色,可以定义两色渐变和三色渐变,及渐变样式,它的属性有下面几个

2.属性

  • angle,只对线性渐变是有效的
  • 放射性渐变必须指定放射性的半径,gradientRadious
  • centetX和centerY,设置渐变的中心位置,针对是放射性和扫描渐变的时候是有效的,默认0.5,识别小数,分数。范围0.0-1.0

3.重点属性

  • android:type=["linear" | "radial" | "sweep"]
  • android:startColor="color" //渐变开始点的颜色
  • android:centerColor="color" //渐变中间点的颜色,在开始与结束点之间
  • android:endColor="color" //渐变结束点的颜色
  • android:gradientRadius="float" //渐变的半径,只有当渐变类型为radial时才能使用

构造放射性渐变时,要加上android:gradientRadius属性(渐变半径),即必须指定渐变半径的大小才会起作用

图1 渐变方式

图2 渐变角度

4.案例1:线性渐变

    <gradient android:type="linear" android:startColor="@color/green" android:centerColor="@color/yellow" android:endColor="@color/red"/>

5.案例2:放射性渐变

  • 指定type为radial同时需要指定放射性半径gradientRadious
<gradient android:type="radial" android:startColor="@color/green" android:centerColor="@color/yellow" android:endColor="@color/red" android:gradientRadius="100dp"/>

6.案例3:扫描式渐变

  • 指定type为sweep
  <gradient android:type="sweep" android:startColor="@color/green" android:centerColor="@color/yellow" android:endColor="@color/red"/>

7.案例4:angle属性

  • 指定渐变的角度,必须为45的倍数,0为从左到右,90为从上到下
<!--    设置angle属性-->
    <gradient android:angle="45" android:type="linear" android:startColor="@color/green" android:centerColor="@color/yellow" android:endColor="@color/red"/>

8.案例5:centerX和centerY属性

  • 设置渐变的中心位置,针对是放射性和扫描渐变的时候是有效的

1)设置centerX=0.2

<gradient android:centerX="0.2" android:type="radial" android:startColor="@color/green" android:centerColor="@color/yellow" android:endColor="@color/red" android:gradientRadius="100dp"/>

2)设置centerY=0.8

    <gradient android:centerY="0.8" android:type="radial" android:startColor="@color/green" android:centerColor="@color/yellow" android:endColor="@color/red" android:gradientRadius="100dp"/>

3)给扫描式渐变设置也是可以的。

  • 设置纵向偏移为0.2
  <gradient android:centerY="0.2" android:type="sweep" android:startColor="@color/green" android:centerColor="@color/yellow" android:endColor="@color/red"/>

1.2solid

  • 设置的填充的颜色,就是控件内部使用什么颜色进行填充
  <solid android:color="@color/yellow"/>
  • 表示填充的颜色就是黄色

1.3corners圆角

  • 设置的是控件四个角的样式
  • 属性
    • radius,一下设置上左,上右,下左,下右
  • radius等价于下面四个,可以单设
    • topLeftRadius,上左
    • topRightRadius,上右
    • bottomLeftRadius,下左
    • bottomRightRadius,下右
<corners android:radius="20dp"/>
  • 下图明显的变成了圆角的了

1.4stroke

1.简介

  • 设置的描边的属性,定义边的宽度,颜色,是不是虚实线

2.属性

  • 属性:
    • width,宽度
    • color,颜色
    • dashWitth,虚线的宽度,0代表的就是实线
    • dashGap,虚线的间隔

3.案例-设置绿色虚线描边,虚线高度是20dp,虚线宽度为10dp虚线间距为1dp:

<stroke android:color="@color/green" android:width="20dp" android:dashWidth="15dp" android:dashGap="10dp"/>

1.5size和padding

1.简介

实际的作用并不是很大,控件本身就可以实现,关键是stroke,solid,corners以及gradient

  • size设置的是控件的宽度和高度
  <size android:width="300dp" android:height="50dp"/>
  • padding设置的是控件的内边距
 <padding android:bottom="5dp" android:top="5dp" android:left="5dp" android:right="5dp"/>

1.6shape

1.简介

  • 上面我们讲了Shape的子标签的的作用,但Shape本身还没讲,Shape自已是可以定义当前Shape的形状的,比如上面的矩形,还有椭圆形,线形和环形;这些都是通过Shape标签的 shape属性来定义的,Shape标签总共有下面几个属性,我们一个个讲:

2.shape属性

  • android:shape=["rectangle" | "oval" | "line" | "ring"]
  • shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)
  • 下面的属性只有在android:shape="ring时可用:
  • android:innerRadius 尺寸,内环的半径。
  • android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
  • android:thickness 尺寸,环的厚度
  • android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio="2",
  • android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.

注意:注意,无论这里shape取什么形状,他的子标签都是可用的,但有时并不会有效果,比如在shape为椭圆时,那corners标签就不会有效果,很显然的道理。下面一个个看看各个形状都是怎么样的;

3.shape为oval椭圆

1)设置为椭圆

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" > ...</shape>

4.line线性,没有什么用处

5.ring环形

  • android:innerRadius 尺寸,内环的半径。
  • android:thickness 尺寸,环的厚度
  • android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
  • android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度
  • android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.

以上这些属性无非都是定义环形的属性的,要么指定大小去设置,要么去设置指定的比率去设置大小。

注意:必须设置useLevel为false不然的话没有效果!!!

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring" android:innerRadius="200dp" android:thickness="50dp" android:useLevel="false">
...
</shape>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu安装redis服务器

官网下载redis服务器的压缩包redis-6.0.16.tar.gz 点击download 6.2.8或任意版本即可。 上传下载的压缩包到服务器或者本地虚拟机 解压压缩包&#xff0c;并安装gcc tar -zxvf redis-6.0.16.tar.gz解压之后可以看到redis的目录结构&#xff1a; 没有bin目录&#xff0c;而redi…

Meta CTO专访:2023年AR/VR、元宇宙的下一步怎么走

2022年对于Meta来说注定是不平凡的一年&#xff0c;它经历了股价大跌、万人大裁员、项目重组、季度营收首次下滑、Reality Labs季度亏损破纪录&#xff0c;甚至前不久Meta AR/VR业务的元老级人物、Reality Labs顾问CTO John Carck也宣布离职&#xff0c;这件事对于Meta甚至整个…

HEVC学习之CTU划分

一,CTU相关概念 H.265将图像划分为“树编码单元&#xff08;coding tree units, CTU&#xff09;”&#xff0c;而不是像H.264那样的1616的宏块。根据不同的编码设置&#xff0c;树编码块的尺寸可以被设置为6464或有限的3232或1616。 上图就是一个6464树编码块的分区示例&am…

数字ic验证|SoC的功能验证

随着设计的进行&#xff0c;越接近最后的产品&#xff0c;修正一个设计缺陷的成本就会越高。 1.功能验证概述 在IC设计与制造领域&#xff0c;通常所说的验证&#xff08;Verification&#xff09;和测试&#xff08;Test&#xff09;是两种不同的事 验证 在设计过程中确认…

PHP 实现PDF转图片

目录 1.环境配置&#xff1a; 2.实现原理&#xff1a; 3.安装php扩展imagick 4.安装ghostscript 5.pdf转图片 1.环境配置&#xff1a; 2.实现原理&#xff1a; Php使用扩展插件imagick进行图片处理&#xff0c;处理pdf时使用imagick去调用ghostscript 3.安装php扩展imag…

spring-boot如何自行写一个starter并且使用

这里说的starter是pom中引入的一系列starter包&#xff0c;比如spring-boot-starter-web、mybatis-plus-boot-starter等。本文先已mybatis-spring-boot-starter的使用进行说明&#xff0c;然后得到使用的流程&#xff08;套路&#xff09;&#xff0c;然后根据该流程&#xff0…

ddim原理及代码(Denoising diffusion implicit models)

前言 之前学习了 DDPM(DDPM原理与代码剖析)和 IDDPM(IDDPM原理和代码剖析)&#xff0c; 这次又来学习另一种重要的扩散模型。它的采样速度比DDPM快很多(respacing)&#xff0c;扩散过程不依赖马尔科夫链。 Denoising diffusion implicit models, ICLR 2021 理论 Astract和Int…

百果园通过港交所上市聆讯:八成营收来自加盟店,余惠勇为董事长

撰稿|汤汤 来源|贝多财经 近日&#xff0c;深圳百果园实业&#xff08;集团&#xff09;股份有限公司&#xff08;下称“百果园”&#xff09;通过港交所上市聆讯&#xff0c;并披露了聆讯后招股书。 根据招股书介绍&#xff0c;百果园是中国最大的水果零售经营商。根据弗若斯…

数据库实验6 存储过程实验

前言&#xff1a;游标的mysql代码不懂写&#xff0c;所以没有运行结果 实验6 存储过程实验 实验6.1 存储过程实验 1.实验目的 掌握数据库 PL/SQL 编程语言&#xff0c;以及数据库存储过程的设计和使用方法。 2.实验内容和要求 存储过程定义,存储过程运行,存储过程更名,存…

股票价、量走势图绘制

在证券投资分析领域中价、量走势分布图是投资者常用的一个参考方面。本案例主要介绍股票每日收盘价格、成交量的走势图以及月交易量分布饼图的绘制技能&#xff0c;并进一步介绍了子图的绘制方法。今有股票代码600000行情交易数据表&#xff08;trd.xlsx&#xff09;&#xff0…

SPDK线程模型

一、reactor线程 与传统的reactor线程模型相比&#xff0c;SPDK的reactor在功能实现上还是有很大区别的&#xff0c;线程不在基于流水线形式进行作业&#xff0c;而是采用Run-To-Complete来做运行处理。 如图所示&#xff0c;每个reactor线程会绑定一个cpu core&#xff0c;线…

力扣刷题笔记day7(数组中重复的数字+在排序数组中查找数字+0~n-1中缺失的数字)

文章目录数组中重复的数字题目思路代码在排序数组中查找数据题目思路代码0&#xff5e;n-1中缺失的数字题目思路代码数组中重复的数字 题目 思路 创建一个哈希表&#xff0c;将数组遍历&#xff0c;如果不存在则添加到哈希表中&#xff0c;如果存在则直接返回 代码 var fin…

电磁功率流和坡印廷矢量

回顾&#xff1a; 场源的影响周围的快慢取决于距离和传播速度 场源变化引起电磁波&#xff0c;电磁波传输能量 电磁能量的流动满足能量守恒定律 我们关心的是 体积V里面和体积外怎么交换能量&#xff0c;S是包围的闭合面 大家想一想&#xff0c;体积里面有场源 随着能量的…

Spring 中使用Nacos服务发现

引入依赖 <dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-spring-context</artifactId><version>${latest.version}</version> </dependency>本文使用的版本为&#xff1a;1.1.1&#xff08;与Spring 中…

微服务(二)——注册中心(Eureka、Nacos)

目录1. 概念2. Eureka1. 服务搭建1. 依赖导入2. 配置文件3. 启动项目2. 服务注册1. 依赖导入2. 配置文件3. 启动多个实例3. 服务发现1. 依赖导入2. 配置文件3. 服务拉取和负载均衡4. 小结3. Ribbon1. 负载均衡流程2. 负载均衡策略3. 加载策略4. Nacos1. 下载安装2. 注册中心1. …

css:隐藏input file标签并触发点击上传文件事件

目录方式一&#xff1a;将input标签覆盖到按钮的最上层方式二&#xff1a;通过label标签触发点击事件方式三&#xff1a;js触发文件上传的点击事件总结通用的按钮样式 /* button样式来自element-ui */ .button {color: #fff;background-color: #409eff;display: inline-block;…

【MQTT】mqtt + go + M5Stack + SSR 远程灯控程序

1. mqtt服务搭建 参考上一篇文章【MQTT】mqtt 服务器部署--go 生产和消费demo_平静不绝望的博客-CSDN博客 2. M5stack 烧录和编程 详细文档&#xff1a;m5-docs mac 需要安装USB驱动 和 m5burner 如下图 3. flow ui 编程 SSR 4. go web远程代码 s.Router.HandleFunc(&…

UE中的FString操作

此篇是指单纯记录&#xff0c;方便之后查阅。 目录 创建 转型到FString FString转型到其他类型 字符串中是否包含指定串 查找给定串在其中是什么位置 字符串比较 读文件 裁剪字符串 编码解决的是文字问题 稍微细致一些的可以看&#xff1a; UE4随笔&#xff1a;FStri…

TI 2640 Quick start

&#xff08;1&#xff09;下载ccs 并且安装 &#xff08;2&#xff09;下载对应版本的SDK&#xff0c;并且安装 SDK对应版本下载可以通过搜索的方式&#xff1a;simplelink_cc2640r2_sdk_5_30_00_03 &#xff08;3&#xff09;导入对应的工程文件 此篇文档可以作为参考&#x…

喜讯丨计讯物联荣获厦门软件园党群服务中心篮球赛亚军

蓄势待发迎“篮”上&#xff0c;齐心协力谱新篇。12月17日&#xff0c;厦门软件园党群服务中心篮球赛完美落幕。计讯物联一路过关斩将&#xff0c;荣获厦门软件园党群服务中心篮球赛亚军。 决胜雅马哈&#xff0c;强势晋级半决赛 随着一声哨响&#xff0c;比赛正式拉开帷幕&…