Android图形绘制之Shapes包详解

Android图形绘制之Shapes包详解

在Android开发中,图形绘制是一个非常重要的部分,尤其是在自定义View和UI设计时。Android提供了丰富的API来帮助开发者实现各种图形绘制需求。其中,android.graphics.drawable.shapes包提供了一系列用于绘制基本形状的类。本文将深入探讨android.graphics.drawable.shapes包的使用,帮助开发者更好地理解和应用这些类。

1. android.graphics.drawable.shapes包概述

android.graphics.drawable.shapes包包含了一系列用于绘制基本形状的类。这些类都是Shape类的子类,Shape类是一个抽象类,定义了绘制形状的基本行为。通过使用这些类,开发者可以轻松地绘制矩形、圆形、椭圆形、线条等基本形状。

1.1 Shape

Shape类是所有形状类的基类,它是一个抽象类,定义了绘制形状的基本行为。Shape类的主要方法包括:

  • draw(Canvas canvas, Paint paint):在指定的画布上绘制形状。
  • getWidth():获取形状的宽度。
  • getHeight():获取形状的高度。
  • resize(float width, float height):调整形状的大小。

1.2 RectShape

RectShape类用于绘制矩形。它是Shape类的子类,提供了绘制矩形的基本功能。

1.3 OvalShape

OvalShape类用于绘制椭圆形。它是Shape类的子类,提供了绘制椭圆形的基本功能。

1.4 RoundRectShape

RoundRectShape类用于绘制圆角矩形。它是Shape类的子类,提供了绘制圆角矩形的基本功能。

1.5 ArcShape

ArcShape类用于绘制弧形。它是Shape类的子类,提供了绘制弧形的基本功能。

1.6 PathShape

PathShape类用于绘制自定义路径形状。它是Shape类的子类,提供了绘制自定义路径形状的基本功能。

2. 使用ShapeDrawable绘制形状

在Android中,ShapeDrawable类用于将Shape对象绘制到屏幕上。ShapeDrawableDrawable的子类,因此它可以像其他Drawable对象一样使用。

2.1 创建ShapeDrawable对象

要创建一个ShapeDrawable对象,首先需要创建一个Shape对象,然后将其传递给ShapeDrawable的构造函数。例如,以下代码创建了一个RectShape对象,并将其传递给ShapeDrawable

RectShape rectShape = new RectShape();
ShapeDrawable shapeDrawable = new ShapeDrawable(rectShape);

2.2 设置ShapeDrawable的属性

ShapeDrawable提供了一些方法来设置其属性,例如颜色、大小等。以下是一些常用的方法:

  • setIntrinsicWidth(int width):设置ShapeDrawable的固有宽度。
  • setIntrinsicHeight(int height):设置ShapeDrawable的固有高度。
  • getPaint():获取ShapeDrawablePaint对象,可以通过Paint对象设置颜色、样式等。

例如,以下代码设置了ShapeDrawable的颜色和大小:

shapeDrawable.getPaint().setColor(Color.RED);
shapeDrawable.setIntrinsicWidth(100);
shapeDrawable.setIntrinsicHeight(100);

2.3 绘制ShapeDrawable

要将ShapeDrawable绘制到屏幕上,可以将其设置为View的背景,或者直接在Canvas上绘制。例如,以下代码将ShapeDrawable设置为View的背景:

View view = findViewById(R.id.my_view);
view.setBackground(shapeDrawable);

或者,以下代码直接在Canvas上绘制ShapeDrawable

@Override
protected void onDraw(Canvas canvas) {super.onDraw(canvas);shapeDrawable.draw(canvas);
}

3. 使用Shape类绘制基本形状

3.1 绘制矩形

要绘制矩形,可以使用RectShape类。以下代码展示了如何创建一个RectShape对象,并将其绘制到屏幕上:

RectShape rectShape = new RectShape();
ShapeDrawable shapeDrawable = new ShapeDrawable(rectShape);
shapeDrawable.getPaint().setColor(Color.BLUE);
shapeDrawable.setIntrinsicWidth(200);
shapeDrawable.setIntrinsicHeight(100)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

import org.springframework.data.jpa.repository.JpaRepository<T, ID>;

org.springframework.data.jpa.repository.JpaRepository<T, ID> 接口中的 ID 类型参数。 理解 JpaRepository<T, ID> 中的 T 和 ID&#xff1a; T (Type): T 代表的是你想要操作的 实体类 的类型。例如&#xff0c;如果你有一个名为 User 的实体类&#xff0c;那…

docker项目部署流程(Vue+Spingboot)

文章目录 1.docker安装(Ubuntu)1.卸载原有的docker引擎和旧版本软件包(第一次使用跳过)2.使用存储库安装apt 2.安装nginx并运行3.安装Mysql4.构建jdk镜像1.准备条件(3样东西)拉取ubuntu镜像DockerfileDockerfile简洁版 2.构建java镜像3.创建并运行java容器 5.网络配置1.自定义网…

《童年-高尔基》阅读笔记

《童年-高尔基》阅读笔记 2024-12-29日读完&#xff0c;在图书馆的书架上&#xff0c;大批的厚厚的外国文学书&#xff0c;只有这本薄薄的&#xff0c;我就拿下来看了一下&#xff0c;发现这本书就是初中就在语文课本中提到的自传体三部曲之一&#xff0c;其他两本是《在人间》…

fpga系列 HDL:ModelSim显示模拟波形以及十进制格式数值

FPGA中使用数字滤波器时&#xff0c;可通过观察模拟波形更好地查看滤波效果。可以通过ModelSim中的波形格式设置来实现更直观的波形显示。 右键波形->Format-> Analog 效果 不同的数值格式显示&#xff1a;右键波形->Radix-> Decimal 效果 示例代码 ver…

AI大模型语音识别转文字

提取音频 本项目作用在于将常见的会议录音文件、各种语种音频文件进行转录成相应的文字&#xff0c;也可从特定视频中提取对应音频进行转录程文字保存在本地。最原始的从所给网址下载对应视频和音频进行处理。下载ffmpeg(https://www.gyan.dev/ffmpeg/builds/packages/ffmpeg-…

《计算机组成及汇编语言原理》阅读笔记:p128-p132

《计算机组成及汇编语言原理》学习第 10 天&#xff0c;p128-p132 总结&#xff0c;总计 5 页。 一、技术总结 1.8088 organization and architecture 8088处理器是16位电脑&#xff0c;寄存器是16位&#xff0c;数据总线(data bus)是8位&#xff0c;地址总线是20位。 (1)g…

【ArcGIS Pro】完整的nc文件整理表格模型构建流程及工具练习数据分享

学术科研啥的要用到很多数据&#xff0c;nc文件融合了时间空间数据是科研重要文件。之前分享过怎样将nc文件处理成栅格后整理成表格。小编的读者还是有跑不通整个流程的&#xff0c;再来做一篇总结篇&#xff0c;也分享下练习数据跟工具&#xff0c;如果还是弄不了的&#xff0…

安装了python,环境变量也设置了,但是输入python不报错也没反应是为什么?window的锅!

目录 问题 结论总结 衍生问题 1 第1步&#xff1a;小白python安装&#xff0c;不要埋头一直点下一步&#xff01;&#xff01;&#xff01; 2 第2步&#xff1a;可以选择删了之前的&#xff0c;重新安装python 3 第3步&#xff1a;如果你不想或不能删了重装python&#…

图像处理-Ch7-快速小波变换和小波包

个人博客&#xff01;无广告观看&#xff0c;因为这节内容太多了&#xff0c;有点放不下&#xff0c;分了三节 文章目录 快速小波变换(The Fast Wavelet Transform)与两频段子带编译码系统的关系例&#xff1a;计算一维小波变换 一维快速小波反变换例&#xff1a;计算一维小波…

【从零开始】11. LLaMA-Factory 微调 Qwen 模型(番外篇)

书接上回&#xff0c;在完成了 RAGChecker 测试后&#xff0c;离 RAG 应用真正发布还差最后一步 - 基础信息指令微调。考虑到模型还是需要具备一定程度的“自我认知”&#xff0c;因此需要将公司信息“嵌入”到模型里面的。为此&#xff0c;我选择了 LLaMA-Factory&#xff08;…

小程序配置文件 —— 15 页面配置

页面配置 小程序的页面配置&#xff0c;也称为局部配置&#xff0c;每一个小程序页面也可以使用自己的 .json 文件来对页面的窗口表现进行配置&#xff1b; 需要注意的是&#xff1a;页面配置文件的属性和全局配置文件中的 window 属性几乎一致&#xff0c;只不过这里不需要额…

Linux高级--2.4.5 靠协议头保证传输的 MAC/IP/TCP/UDP---协议帧格式

任何网络协议&#xff0c;都必须要用包头里面设置写特殊字段来标识自己&#xff0c;传输越复杂&#xff0c;越稳定&#xff0c;越高性能的协议&#xff0c;包头越复杂。我们理解这些包头中每个字段的作用要站在它们解决什么问题的角度来理解。因为没人愿意让包头那么复杂。 本…

算法基础一:冒泡排序

一、冒泡排序 1、定义 冒泡排序&#xff08;英语&#xff1a;Bubble Sort&#xff09;是一种简单的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序&#xff08;如从大到小、首字母从A到Z&#xff09;错误就把他们交换过来。 …

Spring Cloud LoadBalancer (负载均衡)

目录 什么是负载均衡 服务端负载均衡 客户端负载均衡 Spring Cloud LoadBalancer快速上手 启动多个product-service实例 测试负载均衡 负载均衡策略 自定义负载均衡策略 什么是负载均衡 负载均衡(Load Balance&#xff0c;简称 LB) , 是高并发, 高可用系统必不可少的关…

OneNet平台2024版MQTT协议完整开发案例教程【MQTT数据流模式】

一、前言 此篇文章是以智慧路灯项目为例&#xff0c;完整的演示介绍 OneNet平台的开发。 OneNet平台 是2024年的新版本&#xff0c;采用数据流模版为例。 方便大家&#xff0c;腾讯云IOT 转 OneNet平台。 因为目前腾讯云IOT平台无法白嫖了&#xff0c;新用户已经无法免费使用…

一起学Git【第六节:查看版本差异】

git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…

【小程序】wxss与rpx单位以及全局样式和局部样式

目录 WXSS 1. 什么是 WXSS 2. WXSS 和 CSS 的关系 rpx 1. 什么是 rpx 尺寸单位 2. rpx 的实现原理 3. rpx 与 px 之间的单位换算* 样式导入 1. 什么是样式导入 2. import 的语法格式 全局样式和局部样式 1. 全局样式 2. 局部样式 WXSS 1. 什么是 WXSS WXSS (We…

uniapp-vue3(下)

关联链接&#xff1a;uniapp-vue3&#xff08;上&#xff09; 文章目录 七、咸虾米壁纸项目实战7.1.咸虾米壁纸项目概述7.2.项目初始化公共目录和设计稿尺寸测量工具7.3.banner海报swiper轮播器7.4.使用swiper的纵向轮播做公告区域7.5.每日推荐滑动scroll-view布局7.6.组件具名…

大数据技术-Hadoop(一)Hadoop集群的安装与配置

目录 一、准备工作 1、安装jdk&#xff08;每个节点都执行&#xff09; 2、修改主机配置 &#xff08;每个节点都执行&#xff09; 3、配置ssh无密登录 &#xff08;每个节点都执行&#xff09; 二、安装Hadoop&#xff08;每个节点都执行&#xff09; 三、集群启动配置&a…

ipad如何直连主机(Moonlight Sunshine)

Windows 被连接主机&#xff08;Windows&#xff09; 要使用的话需要固定ip&#xff0c;不然ip会换来换去&#xff0c;固定ip方法本人博客有记载Github下载Sunshine Sunshine下载地址除了安装路径需要改一下&#xff0c;其他一路点安装完成后会打开Sunshine的Web UI&#xff…