当前位置:首页 > 笔记 > 正文内容

自定义View相关

jsc4年前 (2021-12-16)笔记2076

View的绘制程:OnMeasure()——>OnLayout()——>OnDraw()


各步骤的主要工作:


OnMeasure():测量视图大小。从顶层父View到子View递归调用measure方法,measure方法又回调OnMeasure。


OnLayout():确定View位置,进行页面布局。从顶层父View向子View的递归调用view.layout方法的过程,即父View根据上一步measure子View所得到的布局大小和布局参数,将子View放在合适的位置上。


OnDraw():绘制视图。ViewRoot创建一个Canvas对象,然后调用OnDraw()。六个步骤:①、绘制视图的背景;②、保存画布的图层(Layer);③、绘制View的内容;④、绘制View子视图,如果没有就不用;⑤、还原图层(Layer);⑥、绘制滚动条。


UNSPECIFIED

父容器不对View有任何限制,要多大就给多大,这种情况一般用于系统内部,表示一种测量的状态;

EXACTLY

父容器已经检测出View所需的精确大小,这个时候View的最终打消就是SpecSize所指定的值。它对应于LayoutParams中的match_parent和具体数值这两种模式。

AT_MOST

父容器指定了一个可用大小即SpecSize,View的大小不能大于这个值,具体是什么值要看不同View的具体实现。它对应于LayoutParams中wrap_content。

未命名文件.jpg


扫描二维码推送至手机访问。

版权声明:本文由微小站发布,如需转载请注明出处。

本文链接:https://jsc0.com/post/204.html

分享给朋友:
返回列表

上一篇:Android面试题

下一篇:算法相关

“自定义View相关” 的相关文章

百度地图被外部调用的问题

选择手机里安装的外部地图应用,在外部地图应用里显示商户的位置。Uri mUri = Uri.parse("geo:39.922840,116.3543240?q=39.922840,116.3543240(北京市西城区阜外大街2号万通大厦)");Intent mIntent =...

equals和==区别

对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;    如果作用于引用类型的变量,则比较的是所指向的对象的地址对于equals方法,注意:equals方法不能作用于基本数据类型的变量    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址; ...

TabLayout getCustomView为空的问题

今天用Tablayout——ViewPage出现getCustomView为空的问题通过源码发现,ViewPage的adapter更新会吧TabLayout  的customViewc置空。这个时候自动调用OnTabSelectedListener的onTabSelected方法去获取Cu...

Notification 8.0 关闭声音震动

NotificationChannel notificationChannel = new NotificationChannel                    (NOTIFICATION_C...

更新Android Studio的系統找不到指定的路径错误的解决方法

Android Studio的安装和设定之后如果更换了电脑,想再次更新(检查更新)的时候也许会遇到这个问题:安装未成功完成。有关详细信息,请参阅IDE日志这是因为教室里的电脑,使用者的名称,和你家里或是别的地方的使用者名称不同所导致因为在更新的过程中,Android Studio会先将更新档放到Te...

Manifest merger failed with multiple errors, see logs

在android开发的时候,有时候会遇到这样的问题Error:Executionfailedfortask':test:processDebugManifest'.>Manifestmergerfailedwithmultipleerrors,seelogs但是要命的是,除了这...