自定义View控件流程是怎样的?(2),秋招现场面试

安卓面试之自定义View流程及原理 自定义View原理学习博客整理 阅读详情
  • 测量
  • 一个View在展示时是有宽和高,测量View就是为了能够让自定义的控件能够根据各种不同的情况以合适的宽高去展示。测量就必须要提到onMeasure方法。onMeasure方法是一个view确定宽高的地方。
  • 重写onMeasure的固定伪代码写法:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measureWidth = measure(widthMeasureSpec, true);
int measureHeight = measure(heightMeasureSpec, false);
setMeasuredDimension(measureWidth, measureHeight);
}

  • 计算出height和width之后在onMeasure中要调用setMeasuredDimension()方法。否则会出现运行时异常。
  • 计算一些自定义控件需要的值 onSizeChange()
  • onSizeChange() 方法在view第一次被指定了大小值、或者view的大小发生改变时会被调用。

绘制View(Draw)

  • 自定义控件被创建并且测量代码写好后,接下来就调用onDraw()来绘制View
  • onDraw方法包含一个Canvas叫做画布的参数,onDraw()简单来说就两点:Canvas决定要去画什么;Paint决定怎么画
  • Canvas提供了画线方法,Paint就来决定线的颜色。Canvas提供了画矩形,Paint又可以决定让矩形是空心还是实心。
  • 在onDraw方法中开始绘制之前
  • 画笔Paint对象信息要初始化完毕。因为View的重新绘制是比较频繁的,可能多次调用onDraw,所以初始化的代码不应该放在onDraw方法里。
  • Paint画笔
  • 在绘图过程中起到了极其重要的作用,画笔主要保存颜色,样式等绘制信息,指定如何绘制文本和图形,画笔对象有很多设置方法,大体上可以分为两类,一类与图形绘制相关,一类与文本绘制相关。
  • Canvas画布
  • 当调整好画笔之后,需要绘制到画布上,这就得用Canvas类。Canvas画布可以绘制任何东西。还需要设置一些关于画布的属性,比如,画布的颜色、尺寸等。
  • 常见绘制操作有哪些
  • drawRect,drawRoundRect,绘制矩形
  • drawOval,drawCircle,drawArc:绘制椭圆,圆,以及圆弧
  • drawText:绘制文本
  • drawBitmap:绘制图片
  • Rect和RectF介绍和区别
  • Rect的参数为int类型,而RectF的参数类型为float类型,从这一点上来看,RectF的精度更高一些,但是他们都是通过四个坐标参数来确定一个矩形的区域。

与用户进行交互

  • 某些情况自定义控件不仅只是展示漂亮的样式,还需要支持用户点击,拖动操作。自定义控件就需要做用户交互这一步。
  • 在Android系统中最常见的事件就是触摸事件,会调用View的onTouchEvent(android.view.MotionEvent).重写这个方法去处理事件逻辑。
  • 触控有了更多的手势,比如轻点,快速滑动等,所以在支持特殊用户交互的时需要用到android提供的GestureDetector. 只需要实现GestureDetector中相对应的接口,并且处理相应的回调方法。
  • 除手势之外,如果有移动之类的情况还需要让滑动的动画显示得比较平滑。动画应该是平滑的开始和结束,而不是突然消失突然开始。建议使用属性动画

优化自定义View

在上述步骤结束之后,其实一个较为完善的自定义控件已经出来。接下来需要确保自定义控件运行得流畅,官方说法是:为了避免控件体验迟缓,确保动画尽可能保持每秒60帧效果。

官网给出的优化建议:

1、避免不必要的代码
2、在onDraw()方法中不应该有会导致垃圾回收的代码
3、尽可能少让onDraw()方法调用,大多数onDraw()方法调用都伴随调用invalidate(),所以不是必须,不要调用invalidate()方法。

Android 学习笔录

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数HarmonyOS鸿蒙开发工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年HarmonyOS鸿蒙开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上HarmonyOS鸿蒙开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注鸿蒙获取)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

Android View绘制与自定义控件面试总结 继承现有控件 (如 TextView, Button)只是在现有控件基础上增加一些功能,改变一些外观。继承自现有控件,重写onDraw()等方法,在调用super.onDraw(canvas)前后加入自己的逻辑。一个带边框的TextView。继承 ViewGroup (如 LinearLayout, RelativeLayout)需要实现一种全新的布局方式。继承自ViewGroup,必须重写onMeasure()和onLayout()方法,来实现自己的测量和布局规则。 阅读详情

相关推荐

阿里面试官: 自定义View跟绘制流程相关知识点?,2024年Android笔试题总

在res/values目录下的attrs.xml文件中在布局中使用app:name=“温度”mIcon = ta.getResourceId(R.styleable.CustomView_leftIcon, -1) //左图像initView()上面给出大致的代码 记得获取最后要调用利用对象池回收ta加以复用学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!最后如何才能让我们在面试中对答如流呢?

m0_57541068的博客 1216

Android自定义View面试总结

自定义view,是在Android中非常重要的知识点,也是面试官喜欢考察的面试题。 很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试关于自定义view都会问哪些问题,再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,最后以惨淡收场。 那么面试官关于自定义View通常都喜欢问那些问题呢?下述是我整理的Android View知识点以及常见面试题汇总: 自定义View基础 View的分类 View类简介 AttributeSet与自定义属性 V.

Android23333的博客 3626

阿里面试官: 自定义View跟绘制流程相关知识点?(标准参考解答,值得收藏)

本文用于记录自定义View的基础步骤以及一些基础的信息,后期可能针对具体的点写一些补充性的文章。 一 、View中关于四个构造函数参数 自定义View中View的构造函数有四个 // 主要是在java代码中生命一个View时所调用,没有任何参数,一个空的View对象 public ChildrenView(Context context) { super(conte...

weixin_43901866的博客 615

Android自定义控件面试题,自定义View面试总结

本着针对面试,不负责任的态度,写下《面试总结》系列。本系列记录面试过程中各个知识点,而不是入门系列,如果有不懂的自行学习。自定义View三种方式,组合现有控件,继承现有控件,继承View本文只针对继承View的方式,另两种自行学习。1. 重写方法onMeasure、 onLayout、onDraw、onTouchEventonMeasure可能多次触发,在measure的过程中注意MeasureS...

weixin_36082346的博客 1976

Android自定义View之(一)View绘制流程详解——向源码要答案

前言 View作为整个app的颜值担当,在Android体系中占有重要的地位。深入理解Android View的绘制流程,对正确使用View来构建赏心悦目的外观,以及用自定义View来设计理想中的酷炫效果等方面,有着极其重要的帮助作用,所以将View的绘制流程作为自定义View系列文章的第一篇。当然,View的绘制流程原理,在现实的工作中是成为高级工程师路上必须克服的障碍;在面试中...

编程知识分享 1124

自定义View相关面试题

一.说一说你对RecycleView的认识。 1.RecycleView的概述。RecycleView是一个滚动控件,可以看作的ListView的升级版,不仅可以轻松的完成ListView的效果,还可以实现其他效果,例如横向滑动、瀑布流等。而且还封装优化了ListView的缺点,例如:ViewHolder的复用。 2. ...

龚礼鹏的博客 4891

一篇文章带你走近Android自定义view

系列文章目录 一篇文章带你走近Android自定义view 文章目录系列文章目录前言一、为什么要自定义view二、先看看一个超级简单的自定义view(三个构造函数)三、了解手机的坐标系四、使用Canvas画一个折线图(重写onDraw()方法)五、如何自定义属性,且在view中获取到属性的值(小提,在六中会有案例)六、绘制图案以及加入设置简单的动画(案例讲解很详细)七、自定义view的实现分类以及自定义组合控件的案例八、简单测量以及自定义接口实例来控制动画的更新计算表达式(onMeasure,TypeE

计蒙不吃鱼的博客 6028

ThingsBoard实战指南:RPC命令下发与设备交互详解

本文深入解析了ThingsBoard平台中RPC命令下发的核心机制与实战应用。通过对比客户端与服务端RPC模式,详细阐述了从仪表盘控件配置到设备端Python代码响应的完整双向交互流程,并提供了常见问题排查与进阶优化技巧,帮助开发者构建可靠、实时的物联网设备控制系统。

weixin_29168153的博客 213

自定义View控件流程是怎样的?(1),小程序FMP优化实录

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

code8889的博客 905

部署资源管理系统chemx

资源管理系统的部署教程

weixin_40784215的博客 823

labview的TDMS文件读写

本文先介绍TDMS概念和文件结构,然后介绍VI如何使用,最后分析一个labview的自带范例

观则明的博客 1万+

自定义View绘制流程(面试专用)

(自己整理的比较乱,但这么说没问题的!) 自定义view是干嘛的呢? 当我们不满足于Android提供的原生控件和布局时,就应该考虑到自定义view。 自定义View分为两大块。  自定义控件  和  自定义容器 自定义View必须重写两个构造方法  第一个是一个参数的上下文,用于在java代码中new对象使用  第二个是两个参数的一个上下文,一个AttributSet。 主要用于在x...

Natty的博客 8146

KUKA机器人与S7-1200 PLC实现Profinet通讯配置步骤详解

在工业自动化产线中,PLC与工业机器人之间的高效数据交换是控制逻辑落地的关键。传统硬接线方案在信号点多时布线复杂、故障排查困难,而现场总线技术通过一根网线即可实现主从设备间的周期通讯。Profinet作为主流工业以太网协议,由S7-1200作为IO Controller主站,KUKA机器人作为IO Device从站,在WorkVisual与TIA Portal中完成设备组态、I/O映射及信号分配,即可替代成捆电缆,稳定传输启停、状态及报警信号。这一方案适用于汽车、3C、物流等行业的自动化产线,尤其适合需要扩

weixin_42519985的博客 251

Android自定义view面试

1.view绘制流程:measure,layout,draw measure:onMeasure,measureChild,measureChildren,setMeasureDimesion 先测量子view的大小,最后测量自身的大小 layout:onLayout,setFrame 先确定自身的位置,然后调用child.layout()确定子类位置 getLeft,getRight都是相对父控件的位置,相对原点的位置是getRawX MeasureSpec:32位,父类传递过来的值和自己的LayoutP

筱筱_之家的博客 1411

手把手教你用Silvaco Atlas复现GaN蓝光LED仿真:从网格划分到光谱分析全流程避坑

本文详细介绍了如何使用Silvaco Atlas进行GaN蓝光LED仿真,从网格划分到光谱分析的全流程避坑指南。重点讲解了网格划分技巧、材料参数设置、极化效应处理以及结果分析方法,帮助用户快速掌握半导体器件仿真技术,提升研发效率。

weixin_42552716的博客 229

特斯拉 Model 3解析(八)全面拆解特斯拉自动驾驶大脑:AP控制器硬核技术解析

算力极限:双FSD = 144 TOPS,专为AI推理优化。存储架构:LPDDR4 + NAND + NOR,保证高速/可靠启动。通信架构:以太网传视频,CAN传控制,TSN保障实时性。感知输入:多路摄像头 + 高速SerDes,满足全景感知。电源设计:功率模块+被动元件海洋,稳定性优先。功能安全:双芯片冗余 + GPS + 紧急呼叫,容错率极高。🎯 在我看来,特斯拉AP控制器就是一台“车载超算”,它在电源设计、存储架构和功能安全上远超一般新势力方案。

weixin_43199439的博客 1447

阿里面试官;Android自定义View你都知道吗?

##思维导图工作流程其实通过中的第二张图我们已经知道了控件大小的计算了。对于ViewGroup而言,就是对容器内子控件的遍历和计算了。因为直接继承自的控件使用和是显示出来的效果是相同的。需要我们使用中的方法来对当前的模式进行区分和比较。@Override在确定位置时,我们有一个非常需要主要的地方—— 坐标系。Android系统的坐标系和平时画的坐标系并不相同。所以相对应的,我们的位置计算方法自然和我们原来的正好是相反的。4个顶点的位置分别由4个值决定::子View上边界到所在容器上边界的距离。:子View左

2401_84004012的博客 998

Android 音频源码分析——AudioTrack设备选择

Android 音频源码分析——AndroidRecord录音(一) Android 音频源码分析——AndroidRecord录音(二) Android 音频源码分析——AndroidRecord音频数据传输流程 Android 音频源码分析——audioserver启动 Android 音频源码分析——AudioFlinger Android 音频源码分析——AudioTrack设备选择 基于Andorid9.0源码 以AudioTrack为例,梳理下输出设备选择流程。 音频设备选择的影响因素: Au

奋斗的菜鸟ing 3975

android自定义view面试,自定义View面试总结

本着针对面试,不负责任的态度,写下《面试总结》系列。本系列记录面试过程中各个知识点,而不是入门系列,如果有不懂的自行学习。自定义View三种方式,组合现有控件,继承现有控件,继承View本文只针对继承View的方式,另两种自行学习。1. 重写方法onMeasure、 onLayout、onDraw、onTouchEventonMeasure可能多次触发,在measure的过程中注意MeasureS...

weixin_42699679的博客 760

52、基于格的具有解密密钥暴露抗性的可撤销(分层)身份基加密方案

本文提出了首个基于格的具有解密密钥暴露抗性(DKER)的可撤销分层身份基加密(RHIBE)方案。通过引入分层密文、分层解密密钥和级别转换密钥等创新工具,克服了格结构与传统密钥重新随机化属性不匹配的难题。该方案不仅支持可扩展的密钥撤销机制,还具备密钥委托功能,为后量子密码学领域的发展提供了新的思路和方法。

efc12345678的博客 124

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Android自定义View面试完全指南:从原理到实践

想要在Android面试中脱颖而出吗?掌握自定义View技术是每个高级Android开发者必备的核心技能!🎯 这篇终极指南将带你从基础原理到实战应用,全面掌握Android自定义View的面试要点,让你在面试中游刃有余。 自定义View是Android开发中的重要组成部分,它不仅能提升应用的用户体验,更是衡量开发者技术水平的关键指标。无论是简单的按钮定制,还是复杂的图表绘制,自定义View都扮

gitblog_01177的博客 1153

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android 自定义控件(2),面试流程4轮技术面+1轮HR

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。我搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

2401_84150102的博客 943

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

面试官问你:自定义View跟绘制流程懂吗?帮你搞定面试官

/ 今日科技快讯 /据外媒报道, 美国当地时间周二,谷歌联合创始人拉里·佩奇宣布,他将辞去Alphabet首席执行官职位。谷歌首席执行官桑达尔·皮查伊将接任母公司CEO一职。与此...

郭霖 994

2020跳槽大厂,最常问的9个自定义View面试题!【建议收藏】

注:因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。 讲下View的绘制流程? 参考回答: View的工作流程主要是指measure、layout、draw这三大流程,即测量、布局和绘制,其中measure确定View的测量宽/高,layout确定View的最终宽/高和四个顶点的位置,而...

chuhe1989的博客 3671

154.自定义View中如何对其他官方控件重写拦截事件

────────────────────────────── 【一、事件传递基础】在 Android 中,事件传递主要由以下几个方法构成(以触摸事件为例):是 Android 中View类的一个方法,用于分发触摸事件。它是触摸事件分发机制的一部分,负责将触摸事件传递给当前视图以及子视图。

2303_79132118的博客 846

Android实现自定义View的方法

学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!最后如何才能让我们在面试中对答如流呢?答案当然是平时在工作或者学习中多提升自身实力的啦,那如何才能正确的学习,有方向的学习呢?有没有免费资料可以借鉴?为此我整理了一份Android学习资料路线:这里是一部分我工作以来以及参与过的大大小小的面试收集总结出来的一套BAT大厂面试资料专题包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家。

2401_83817418的博客 1337
上一篇: 自定义View控件流程是怎样的?(1),小程序FMP优化实录
下一篇: 自定义View控件流程是怎样的?,HarmonyOS鸿蒙平台架构的四个层次
普通网友
博客等级 码龄5年 4697粉丝 610原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值