您的位置 首页 厂商

Android怎么制作View

Android画的操作是由Framework层来进行处理的,整个 draw是从根View开始的,ViewGroup向子View发出 draw的请求,然后子View负责自己重画它们的invalid区域

Android画的操作是由Framework层来进行处理的,整个 draw是从根View开端的,ViewGroup向子View宣布 draw的恳求,然后子View担任自己重画它们的invalid区域。Drawing一个Layout有必要经过两个进程:

1. 丈量。measure() 从根节点到叶子节点顺次丈量,这样每个View都会存有各自的dimension.在咱们的程序种咱们可以重写onMeasure来设置更为精确的content巨细,重写完后有必要调用setMeasureDimension来存储View的宽和高 。

2.布局。layout也是从父节点到子节点,父节点依据方才传递进来的measure信息来访问它们的子节点。

当一个视图的measure()办法回来时,它的getMeasuredWidth()和getMeasuredHeight() 值有必要被设置,以及一切

这个视图子节点的值。一个view的measure的宽度和高度值有必要契合父视图的约束。这保证在衡量进程之后,一切父节点承受一切它们的子节点的衡量值。一个父视图可能会在其子视图上屡次调用measure()办法。比方,父视图可能会经过未指定的尺度调用measure来找到它们的巨细,然后运用实践数值再次调用measure(),假如一切子视图未做约束的尺度总合过大或过小(也便是,假如子视图之间不能对各自占有的空间达到一致的话,父视图将会干涉而且运用第二个进程的规矩)。

View.MeasureSpec 用于子View告知父View它们想怎样被丈量和怎样放置。而 LayoutParams则是描绘了View的宽和高是多少。关于每一个区域可以指定如下的值:

一个精确的数值。

·FILL_PARENT,这意味着视图想和父视图相同大(减掉填充padding)。

WRAP_CONTENT,这意味着视图只想有刚好包装其内容那么大(加上padding)。

关于不同的ViewGroup子类,有相应的LayoutParams子类。比方,相对布局RelativeLayout有它自己的LayoutParams子类,这包含了可以让子视图横向和竖向居中显现的才能。

衡量标准(MeasureSpecs)被用来沿着树从父到子的下传衡量需求。一个MeasureSpecs可所以下面三种形式之一:

UNSPECIFIED:父视图来决议其子视图的抱负尺度。比方,一个线性布局可能在它的子视图上调用measure() on its child,经过设置其高度为UNSPECIFIED 以及一个宽度为EXACTLY 240,来找出这个子视图在给定240像素宽度的情况下需求显现多高。

EXACTLY:父视图用来给子视图强加一个精确的尺度。子视图有必要运用这个巨细,并保证其一切的子孙将合适这个尺度。

AT_MOST:这被父视图用来给子视图强加一个最大尺度。子视图有必要保证它自己以及一切的子孙都合适这个尺度。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/297452.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部