- 浏览: 584444 次
- 性别:
- 来自: 广州
-
文章分类
- 全部博客 (338)
- 已过时文章(留念用) (39)
- Android学习笔记 (30)
- Android开发指引自译 (100)
- Android NDK文档自译 (23)
- Android设计指引自译 (2)
- xp(ペケピー)&linux(理奈、铃)酱~ (4)
- ui酱&歌词自译~ (9)
- lua酱~ (9)
- 自我反省 (1)
- 羽game计划 (1)
- XSL酱 (2)
- java酱 (3)
- 设计的领悟 (58)
- 涂鸦作品(pixiv) (1)
- ruby酱 (2)
- Objective-C编程语言自译 (2)
- Android开发月报 (6)
- objc酱 (2)
- photoshop (3)
- js酱 (6)
- cpp酱 (8)
- antlr酱 (7)
- Lua 5.1参考手册自译 (11)
- 收藏品 (3)
- 待宵草计划 (4)
- 体验版截图 (1)
最新评论
-
naruto60:
太给力了!!!!我这网打不开Intel官网,多亏楼主贴了连接, ...
使用HAXM加速的Android x86模拟器(和一些问题) -
yangyile2011:
谢谢博主,翻译得很好哦
【翻译】(4)片段 -
ggwang:
牙痛的彼岸:痹!
牙痛的彼岸 -
ggwang:
总结得很简练清晰啊,学习了!
ANTLR学习笔记一:概念理解 -
leisurelife1990:
mk sdd
用git下载Android自带app的源代码
【翻译】(26)Android如何绘画视图
see
http://developer.android.com/guide/topics/ui/how-android-draws.html
原文见
http://developer.android.com/guide/topics/ui/how-android-draws.html
-------------------------------
How Android Draws Views
Android如何绘画视图
-------------------------------
When an Activity receives focus, it will be requested to draw its layout. The Android framework will handle the procedure for drawing, but the Activity must provide the root node of its layout hierarchy.
当一个活动接收焦点,它将被请求绘画它的布局。Android框架将处理绘画的过程,但Activity必须提供它的布局层级的根节点。
Drawing begins with the root node of the layout. It is requested to measure and draw the layout tree. Drawing is handled by walking the tree and rendering each View that intersects the invalid region. In turn, each View group is responsible for requesting each of its children to be drawn (with the draw() method) and each View is responsible for drawing itself. Because the tree is traversed in-order, this means that parents will be drawn before (i.e., behind) their children, with siblings drawn in the order they appear in the tree.
绘画从布局的根节点开始。它被请求度量和绘画布局树。绘画通过遍历树来处理并且渲染每个与不可用区域相交的视图。反过来,每个View组有责任请求它的每个子对象被绘画(用draw()方法)并且每个View有责任绘画它自己。因为树是按次序遍历,这意味着父节点将在它们的子对象之前(即叠在后面)被绘画,而同级对象根据它们在树中出现的次序绘画。
-------------------------------
The framework will not draw Views that are not in the invalid region, and also will take care of drawing the Views background for you.
框架将不绘画不再不可用区域内的View,同时还将小心地为你绘画View的背景。
You can force a View to draw, by calling invalidate().
你可以强制一个View绘画,通过调用invalidate()。
-------------------------------
Drawing the layout is a two pass process: a measure pass and a layout pass. The measuring pass is implemented in measure(int, int) and is a top-down traversal of the View tree. Each View pushes dimension specifications down the tree during the recursion. At the end of the measure pass, every View has stored its measurements. The second pass happens in layout(int, int, int, int) and is also top-down. During this pass each parent is responsible for positioning all of its children using the sizes computed in the measure pass.
绘画布局是两个传递过程:一个度量传递和一个布局传递。度量传递由measure(int, int)实现并且是View树的自上而下遍历。每个View把尺寸规范在递归期间沿着树向下推。在度量传递的最后,每个View已经存储它的度量。第二个传递发生在layout(int, int, int, int)中,也是自上而下。在这个传递期间父对象有责任定位它的所有子对象,使用在度量传递中计算的大小。
When a View's measure() method returns, its getMeasuredWidth() and getMeasuredHeight() values must be set, along with those for all of that View's descendants. A View's measured width and measured height values must respect the constraints imposed by the View's parents. This guarantees that at the end of the measure pass, all parents accept all of their children's measurements. A parent View may call measure() more than once on its children. For example, the parent may measure each child once with unspecified dimensions to find out how big they want to be, then call measure() on them again with actual numbers if the sum of all the children's unconstrained sizes is too big or too small (i.e., if the children don't agree among themselves as to how much space they each get, the parent will intervene and set the rules on the second pass).
当一个View的measure()返回时,它的getMeasuredWidth()和getMeasuredHeight()的值必须被设置,伴随着对于那个View的后代的所有那些值。一个View的度量宽度和度量高度值必须考虑View的父对象所强加的约束。它保证在度量传递的最后,所有父对象接受它们的所有子对象的度量。一个父视图可以在它的子对象上调用measure()多于一次。例如,父对象可能用未指定的尺寸度量每个子对象一次以计算出他们希望有多大,然后再次用实际成员调用measure(),如果所有子对象的不受约束大小的总和太大或者太小(即,如果子对象不同意它们自己关于它们每一个得到多大的空间,父对象将在第二次传递中介入并设置规则)
-------------------------------
To initiate a layout, call requestLayout(). This method is typically called by a View on itself when it believes that is can no longer fit within its current bounds.
为了初始化一个布局,请调用requestLayout()。这个方法通常被一个View调用在它自己身上,在其相信不再可以适应它的当前范围的时候。
-------------------------------
The measure pass uses two classes to communicate dimensions. The View.MeasureSpec class is used by Views to tell their parents how they want to be measured and positioned. The base LayoutParams class just describes how big the View wants to be for both width and height. For each dimension, it can specify one of:
度量传递使用两个类以传递尺寸。View.MeasureSpec类被View使用以告诉他们的父对象他们希望如何被度量和定位。LayoutParams基类只是描述该View对于宽和高希望有多大。对于每个尺寸,它可以指定以下其中一种值:
* an exact number
* 一个精确数
* FILL_PARENT, which means the View wants to be as big as its parent (minus padding)
* FILL_PARENT,它意味着View希望和它的父对象同样地大(减去内边距)
* WRAP_CONTENT, which means that the View wants to be just big enough to enclose its content (plus padding).
* WRAP_CONTENT,它意味着View希望的正好足够地大来装载它的内容(减去内边距)。
There are subclasses of LayoutParams for different subclasses of ViewGroup. For example, RelativeLayout has its own subclass of LayoutParams, which includes the ability to center child Views horizontally and vertically.
有几个LayoutParams的子类用于不同的ViewGroup子类。例如,RelativeLayout拥有它自己的LayoutParams子类,它包含水平地或垂直地居中子View的能力。
MeasureSpecs are used to push requirements down the tree from parent to child. A MeasureSpec can be in one of three modes:
MeasureSpecs被用于从父到子向下推要求。MeasureSpec可以是三种模式的其中一种:
* UNSPECIFIED: This is used by a parent to determine the desired dimension of a child View. For example, a LinearLayout may call measure() on its child with the height set to UNSPECIFIED and a width of EXACTLY 240 to find out how tall the child View wants to be given a width of 240 pixels.
* UNSPECIFIED:这是父对象使用以决定子View的期待尺寸。例如,一个LinearLayout可以在它的子对象上调用measure(),高度设置为UNSPECIFIED,而宽度设置为准确的240以计算出在给定宽度为240像素时子View想要有多高。
* EXACTLY: This is used by the parent to impose an exact size on the child. The child must use this size, and guarantee that all of its descendants will fit within this size.
* EXACTLY:这是父对象使用以强制在子对象上的一个精确大小。子对象必须使用这个大小,并且保证它的所有后代将适合这个大小。
* AT_MOST: This is used by the parent to impose a maximum size on the child. The child must guarantee that it and all of its descendants will fit within this size.
* AT_MOST:这是父对象使用以强制在子对象上的一个最大大小。子对象必须保证它和它的所有后代将适合这个大小。
Except as noted, this content is licensed under Apache 2.0. For details and restrictions, see the Content License.
除特别说明外,本文在Apache 2.0下许可。细节和限制请参考内容许可证。
Android 4.0 r1 - 16 Dec 2011 21:54
-------------------------------
Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.
(此页部分内容基于Android开源项目,以及使用根据创作公共2.5来源许可证描述的条款进行修改)
发表评论
-
【翻译】(9-补丁2)电话簿提供者
2012-07-18 12:54 2410【翻译】(9-补丁2)电话簿提供者 see h ... -
【翻译】(8-补丁1)Android接口定义语言(AIDL)
2012-07-02 05:55 2945【翻译】(8-补丁1)Andro ... -
【翻译】(0)应用组件
2012-06-30 23:50 836【翻译】(0)应用组件 see http:// ... -
【翻译】(88)传感器
2012-05-21 21:25 1085【翻译】(88)传感器 ... -
【翻译】(87)复制与粘贴
2012-05-20 14:48 1955【翻译】(87)复制与粘贴 see http: ... -
【翻译】(86)音频捕捉
2012-05-16 15:14 1114【翻译】(86)音频捕捉 ... -
【翻译】(85)照相机
2012-05-13 15:09 3814【翻译】(85)照相机 see http:// ... -
【翻译】(84)JetPlayer
2012-04-21 16:24 997【翻译】(84)JetPlayer see h ... -
【翻译】(83)媒体回放
2012-04-21 16:00 1871【翻译】(83)媒体回放 see http:/ ... -
【翻译】(82)多媒体与照相机
2012-04-18 23:05 965【翻译】(82)多媒体与照相机 see htt ... -
【翻译】(23-补丁3)构建无障碍服务
2012-04-18 21:57 1638【翻译】(23-补丁3)构 ... -
【翻译】(23-补丁2)使应用程序无障碍
2012-04-16 13:08 2110【翻译】(23-补丁2)使应用程序无障碍 see ... -
【翻译】(23-补丁1)无障碍
2012-04-11 22:38 920【翻译】(23-补丁1)无 ... -
【翻译】(81)Renderscript之运行时API参考手册
2012-04-11 22:13 1422【翻译】(81)Renderscript之运行时API参 ... -
【翻译】(80)Renderscript之计算
2012-04-09 14:09 1460【翻译】(80)Renderscript之计算 ... -
【翻译】(79)Renderscript之图形
2012-04-08 13:59 2888【翻译】(79)Renderscript之图形 ... -
【翻译】(78)Renderscript
2012-04-04 15:35 1459【翻译】(78)Renderscript see ... -
【翻译】(77)可绘画对象动画
2012-03-18 10:52 720【翻译】(77)可绘画对象动画 see htt ... -
【翻译】(76)视图动画
2012-03-18 10:04 816【翻译】(76)视图动画 see http:/ ... -
【翻译】(75)属性动画
2012-03-17 18:24 2519【翻译】(75)属性动画 see http:/ ...
相关推荐
Qt是一个流行的开源C++库,它提供了丰富的图形用户界面(GUI)工具包,支持多种操作系统,包括Windows、Linux、macOS以及移动平台如Android和iOS。这本书涵盖了Qt的多个关键领域,如事件处理、网络编程、数据库集成...
它被广泛用于开发桌面、移动和嵌入式应用,支持Windows、Linux、macOS、Android以及iOS等多个操作系统。Qt的核心特性包括丰富的UI组件、事件处理机制、网络编程、数据库访问、多线程支持、XML处理等。 ### 一、Qt...
基于4GGPRS DTU开发板的硬件图纸与软件代码全套资源,军工级电路,支持多种通信协议与数据加密,适合物联网应用。,基于4GGPRS DTU开发板的硬件图纸与软件代码全套,军工级电路,支持多种通信协议与数据加密,适用于多种物联网应用。,资料:4g GPRS DTU 开发板软件代码硬件图纸料包括:原理图,版图,单片机代码,sim800c官方资料 不含PCB板 本公司批产产品,已无故障运行数年 全套硬件图纸和软件代码。 程序比正点原子的可靠,军工级485电路。 NBIOT和4G等采用AT指令的均可参照此代码 GPRS具有比NBIOT更低的价格更好的网络,是目前低速物联网的主要通讯技术之一。 485转GPRS GPRS支持协议: TCP UDP HTTP-GET HTTP-POST FTP Md5数据加密 心跳包 电源部分,带共模电感,防反接二极管,Tvs管,5-30Vdc转5V和4V 485部分,硬件延时电路,可靠稳定 引出网络状态(兼电源)指示灯,收发指示灯,设置状态指示灯 微动按键设置工作状态 已预留LORA模块位置,若不用可将他的Io口改做他用,能引出一路串口,2路Io口 单片机
scala-intellij-bin-2024.1.1.zip
基于Android的平台书架设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
# 基于nRF5系列芯片和SoftDevice SDK的蓝牙低能耗应用 ## 项目简介 这是一个基于nRF5系列芯片和SoftDevice SDK的蓝牙低能耗(BLE)应用程序的示例项目。项目包含基于nRF51822和nRF52832芯片的示例代码,以及设备固件升级(DFU)相关的代码。 ## 项目的主要特性和功能 基于nRF5系列芯片项目代码适用于Nordic Semiconductor的nRF51822和nRF52832芯片,这些芯片是专为蓝牙低能耗应用设计的。 使用SoftDevice SDK项目使用了Nordic的SoftDevice SDK,这是一个高度优化的BLE堆栈,适用于nRF5系列芯片。 支持UART通信项目中的BLE应用程序通过UART接口进行通信,允许数据通过BLE连接进行发送和接收。 设备固件升级(DFU)支持项目包含用于安全设备固件升级的引导加载程序,支持固件更新的验证和存储。
矿业生产管理数字化平台解决方案.doc
Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
kylin v10 SP1 系统下 可以查看本机电池容量放电和充电电流
【资源介绍】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,也可以作为小白实战演练和初期项目立项演示的重要参考借鉴资料。 3、本资源作为“学习资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研和多多调试实践。 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip 基于深度学习的movielens推荐模型新版算法源码+数据+说明文档.zip
海神之光上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
1、以上文章可用于参考,请勿直接抄袭,学习、当作参考文献可以,主张借鉴学习 2、资源本身不含 对应项目代码,如需完整项目源码,请私信博主获取
1、以上文章可用于参考,请勿直接抄袭,学习、当作参考文献可以,主张借鉴学习 2、资源本身不含 对应项目代码,如需完整项目源码,请私信博主获取
14.智能台灯(语音模式)_20240318_205506.zip
数字信号处理中的采样与重构理论及其应用
python快速入门,零基础也能轻松掌握的入门指南,看着一个就够了。
LabView与三菱全系列通讯方法详解:上位机读取方法及实践,LabView与三菱全系列通讯方法及上位机数据读取攻略,labview和三菱全系列通讯方法 labview和三菱全系列通讯办法,和上位机读取方法。 ,LabVIEW; 三菱全系列通讯方法; 三菱全系列通讯办法; 上位机读取方法,LabVIEW与三菱全系列通讯方案及上位机读取方法详解
题目:基于51单片机的多参数水质监测与报警系统设计 主控:AT89C51 显示:LCD1602 DS18B20温度传感器 浊度传感器(PCF8591+滑动变阻器模拟) PH传感器(ADC0832+滑动变阻器) 声光报警 led*4 功能: 1.实时检测水质温度、浊度、PH 2.实时显示相关数据 3.可以通过按键修改阈值 4.各数值不在标准范围内启动声光报警 5.ph低于下限红色小灯点亮;ph高于上限绿色小灯电亮;温度低于阈值蓝色小灯电亮;浑浊度高于阈值橙色小灯电亮
在B站看黑马程序员视频,整理的个人笔记
java项目之水果系统源码