View 自定义 - View 类中的方法

一、概念

View这个类代表用户界面组件的基本构建块。View在屏幕上占据一个矩形区域,并负责绘制和事件处理。View是用于创建交互式用户界面组件(按钮、文本等)的基础类。它的子类ViewGroup是所有布局的父类,它是一个可以包含其他view或者viewGroup并定义它们的布局属性的看不见的容器。

构造

View(Context context)

单参构造:代码中 new 创建实例的时候调用。

View(Context context, AttributeSet attrs)

双参构造:xml中使用时调用(xml转java代码的时候反射),attrs是xml中的属性。

View(Context context, AttributeSet attrs, int defStyleAttr)

三参构造:使用主题Style的时候调用。

绘制过程

onFinishInflate()

当View和他的所有子控件被XML布局文件填充完成时被调用。(这个方法里面可以完成一些初始化,比如初始化子控件)。

onMeasure()

当测量View和它的子View的尺寸需求时被调用。

onLayout()

当View给他的子View分配大小和位置的时候调用。

onSizeChanged()

当view尺寸发生变化时调用。

事件处理

onKeyDown(int keyCode, KeyEvent event)

按下按键时调用,keyCode是按键编号,KeyEvent是按键事件。

onKeyUp(int keyCode, KeyEvent event)

抬起按键时调用。

onTouchEvent(MotionEvent event)

触摸屏幕时调用,MotionEvent是捕捉到的触摸事件。

焦点

onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect)

获取到或者失去焦点时调用。

onWindowFocusChanged(boolean hasWindowFocus)

窗口获取或者失去焦点时调用。

attach

onAttachedToWindow()

当View被连接到一个窗口时调用。

onDetachedFromWindow()

当View从窗口分离时调用。

onWindowVisibilityChanged()

当View的窗口的可见性发生改变时调用。

二、构造

一共有四个,常用的有下面三个。

View(Context context)

单参构造:代码中 new 创建实例的时候调用。

View(Context context, AttributeSet attrs)

双参构造:xml中使用时调用(xml转java代码的时候反射),attrs是xml中的属性。

View(Context context, AttributeSet attrs, int defStyleAttr)

三参构造:使用主题Style的时候调用。

class MyView : View {//改成this调用2个参数的构造constructor(context: Context?) : this(context, null)//改成this调用3个参数的构造constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, 0)//在3个参数的构造里统一进行处理constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {//TODO...}
}

三、绘制过程

onFinishInflate()当View和他的所有子控件被XML布局文件填充完成时被调用。(这个方法里面可以完成一些初始化,比如初始化子控件)。
onMeasure()当测量View和它的子View的尺寸需求时被调用。
onLayout()当View给他的子View分配大小和位置的时候调用。
onSizeChanged()当view尺寸发生变化时调用。

四、事件处理

onKeyDown()

onKeyDown(int keyCode, KeyEvent event)

按下按键时调用,keyCode是按键编号,KeyEvent是按键事件。

onKeyUp()

onKeyUp(int keyCode, KeyEvent event)

抬起按键时调用。

onTouchEvent()

onTouchEvent(MotionEvent event)

触摸屏幕时调用,MotionEvent是捕捉到的触摸事件。

五、焦点

onFocusChanged()

onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect)

获取到或者失去焦点时调用。

onWindowFocusChanged()

onWindowFocusChanged(boolean hasWindowFocus)

窗口获取或者失去焦点时调用。

六、attach

onAttachedToWindow()当View被连接到一个窗口时调用。
onDetachedFromWindow()当View从窗口分离时调用。
onWindowVisibilityChanged()当View的窗口的可见性发生改变时调用。

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

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

相关文章

将 pyparamvalidate 项目,发布至 pypi

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、编写 pyproject.toml 文件3、编写 LICENSE 文件4、编写 README.md 文件5、升级 pip、build、twine 工具6、打包发布的版本7、测试发布至 TestPyPI8、创建测试项目,测试发布结果9、正…

SQLite,ROOM 清空表数据并将自增量归零

1.先清空表数据: delete from [tablename]; 2.当数据库中包含自增列时,会自动建立一个名为 sqlite_sequence 的表。这个表包含两个列:name和seq。name记录自增列所在的表(即tablename),seq记录当前序号&…

SSM框架学习笔记04 | SpringMVC

文章目录 一、SpringMVC简介二、 请求与响应1. 请求映射路径2. get请求与post请求3. 响应 二、REST风格1.简介 三、 SSM整合四、拦截器1. 定义拦截器2.配置拦截器3.拦截器执行顺序4.拦截器参数5.多个连接器工作流程分析6.拦截器链的运行顺序 一、SpringMVC简介 SpringMVC技术与…

AI嵌入式K210项目(3)-GPIO控制

文章目录 前言一、背景知识二、背景知识二、开始你的表演代码实现 总结 前言 前面介绍了开发板和环境搭建的基本情况,接下来我们开始学习使用C进行裸板开发,本节课先来学习下K210最基础的功能,引脚映射和点灯。 在开始具体学习之前&#xff…

java数据结构与算法刷题-----LeetCode96. 不同的二叉搜索树

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难,但它就是固定套路而已。其实动态规划只…

TRB 2024论文分享:融合Transformer和自监督学习的长时交通流预测模型

TRB(Transportation Research Board,美国交通研究委员会,简称TRB)会议是交通研究领域知名度最高学术会议之一,近年来的参会人数已经超过了2万名,是参与人数和国家最多的学术盛会。TRB会议几乎涵盖了交通领域…

Ceph的介绍与部署

目录 存储基础 单机存储设备 DAS(直接附加存储,是直接接到计算机的主板总线上去的存储) NAS(网络附加存储,是通过网络附加到当前主机文件系统之上的存储) SAN(存储区域网络) 单…

基于ssm的数学课程评价系统的设计与开发+jsp论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本数学课程评价系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

List转数组,使用toArray时,new String[0] 的数组空间大小怎么传?

我们在日常开发中,经常遇到List转数组,数组转List的场景。当我们List转数组时,一般使用这种方式: String[] queryTaskIdArr queryTaskIds.toArray(new String[0]); 但是toArray方法中的入参有什么需要注意的呢? 如下…

Hive日期函数详细讲解

Hive 提供了一系列的内建日期函数,用于处理日期和时间数据。以下是您提到的日期函数的详细讲解,包括案例和使用注意事项: FROM_UNIXTIME() 功能:将 Unix 时间戳(秒为单位)转换为日期时间格式。语法&#xf…

故障处理流程规范(新)

一、背景 为什么要重新制定故障处理流程? 2020年写过一篇文章: 故障处理流程和规范,在过去的这三年内,故障处理流程输出了好几个版本,但都没有很好的落地,所以本次的目标是,制定一个简单、易操…

【架构】docker实现集群主从扩容【案例3/4】

实现集群主从扩容 当整个集群扛不住流量的情况时,需要给集群扩容增加设备,由3主3从,扩为4主4从。实现: 示意图如下: 第一步:新创建两个节点(redis-node-7,端口6387和 redis-node…

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)

文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆显位个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的…

11 最小字符子串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。如果…

LeetCode每周五题_2024/01/15~01/19

文章目录 82. 删除排序链表中的重复元素 II题目题解 82. 删除排序链表中的重复元素 II 82. 删除排序链表中的重复元素 II 题目 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 题解 /**…

数据结构之list类

前言 list是列表类。从list 类开始,我们就要接触独属于 Python 的数据类型了。Python 简单、易用,很大一部分原因就是它对基础数据类型的设计各具特色又相辅相成。 话不多说,让我们开始学习第一个 Python 数据类型一list。 1. list的赋值 输…

【shell】读取表格文件的数据

碎碎念 shell在处理复杂问题的时候不具备优势,如果业务环境能够使用python的话用python又简单又好用,但是很多云平台的现场可能需要shell脚本文件(还好是要求bash) 但是现在有一个业务场景就是运维人员会把参数写在excel表格中 …

连接世界:2024 年 5G 及未来技术趋势

在不断发展的技术领域,2024 年有望实现突破性的进步,从而重塑我们与世界的联系方式。 这场革命的前沿是备受期待的 5G 技术的推出及其后续发展。 当我们步入互联无极限的未来时,可能性似乎是无限的。 5G的兴起: 开启互联新时代 …

《教育》期刊是什么级别的期刊?是正规期刊吗?能评职称吗?

《教育》以教育行业的各类新闻为重点,积极推广各地教育部门改革经验及优秀成果,努力挖掘教育一线先进单位和个人,充分发挥新闻舆论的监督作用。 收录情况:知网收录 投稿方式:教育类|《教育》省级 出版周期&…

ftp的介绍与安装

ftp 文章目录 ftp1. ftp简介2. ftp架构3. ftp数据连接模式4. 用户认证5. vsftpd5.1 vsftpd安装5.2 vsftpd配置5.3 vsftpd虚拟用户配置 1. ftp简介 网络文件共享服务主流的主要有三种,分别是ftp、nfs、samba。 FTP是File Transfer Protocol(文件传输协议…