屏幕元素的层次
The basic functional unit of an Android application is the activity--an object of the class android.app.Activity. An activity can do many things, but by itself it does not have a presence on the screen. To give your activity a screen presence and design its UI, you work with views and viewgroups -- basic units of user interface expression on the Android platform.
Android应用程序的基础功能单元就是Activity--android.app.Activity类中的一个对象。一个Activity可以做很多事,但是他自己并不会显示到屏幕上。想要让你的Activity显示在屏幕上并且设计它的UI,你需要使用view和viewgroup--Android平台基础的用户界面表达单元。
Views
A view is an object of base class android.view.View. It's a data structure whose properties store the layout and content for a specific rectangular area of the screen. A View object handles measuring and layout, drawing, focus change, scrolling, and key/gestures for the screen area it represents.
一个view是一个android.view.View基础类的对象。它是一个存储有屏幕上特定的一个矩形内布局和内容属性的数据结构。一个View对象处理测距和布局,绘图,焦点变换,滚动条,还有屏幕区域自己表现的按键和手势。
The View class serves as a base class for widgets -- a set of fully implemented subclasses that draw interactive screen elements. Widgets handle their own measuring and drawing, so you can use them to build your UI more quickly. The list of widgets available includes Text, EditText, InputMethod, MovementMethod, Button, RadioButton, Checkbox, and ScrollView.
View类作为一个基类为widget(窗体部件)服务,widget--是一组用于绘制交互屏幕元素的完全实现子类。Widget处理它们自己的测距和绘图,所以你可以更快速地用它们去构建你的UI。可用到的widget包括Text,EditText,InputMethod,Button,RadioButton,Checkbox,和ScrollView。
Viewgroups
A viewgroup is an object of class android.view.Viewgroup. As its name indicates, a viewgroup is a special type of view object whose function is to contain and manage a subordinate set of views and other viewgroups, Viewgroups let you add structure to your UI and build up complex screen elements that can be addressed as a single entity.
一个ViewGroup是一个android.view.Viewgroup类的对象。正如同它的名字表明的一样,一个viewgroup是一个特殊的view对象,它的功能是去装载和管理一组下层的view和其他viewgroup,Viewgroup让你可以为你的UI增加结构并且将复杂的屏幕元素构建成一个独立的实体。
The Viewgroup class serves as a base class for layouts -- a set of fully implemented subclasses that provide common types of screen layout. The layouts give you a way to build a structure for a set of views.
Viewgroup类作为一个基类为layout(布局)服务,layout--是一组提供屏幕界面通用类型的完全实现子类。layout让你可以为一组view构建一个结构。
A Tree-Structured UI
On the Android platform, you define an Activity's UI using a tree of view and viewgroup nodes, as shown in the diagram below. The tree can be as simple or complex as you need to make it, and you can build it up using Android's set of predefined widgets and layouts or custom view types that you create yourself.
在Android平台上,你用view树和viewgroup节点来定义一个Activity的UI,就如同下面图表一样。这个树可以如你需要那样简单或者复杂,并且你可以使用Android的预定义widget和layout或者你自定义的view类型来构建它。
An example of a tree of views and viewgroups 一个view和viewgroup树的样例
http://code.google.com/android/images/viewgroup.png
To attach the tree to the screen for rendering, your Activity calls its setContentView() method and passes a reference to the root node object. Once the Android system has the reference to the root node object, it can work directly with the node to invalidate, measure, and draw the tree. When your Activity becomes active and receives focus, the system notifies your activity and requests the root node to measure and draw the tree. The root node then requests that its child nodes draw themselves -- in turn, each viewgroup node in the tree is responsible for drawing its direct children.
要将屏幕绑定一个树以便于渲染,你的Activity调用它的setContentView()方法并且传递一个参数给根节点对象。一旦Android系统获得了根节点的参数,它就可以直接通过节点来无效化,测距和绘制树。当你的Activity被激活并且获得焦点时,系统会通知你的activity并且请求根节点去测距并绘制树,根节点就会请求它的子节点去绘制它们自己。每个树上的viewgroup节点都为它的子节点的绘制负责。
As mentioned previously, each view group has the responsibility of measuring its available space, laying out its children, and calling Draw() on each child to let it render itself. The children may request a size and location in the parent, but the parent object has the final decision on where how big each child can be.
正如之前提到的,每个view group都有测量它的有效空间,布局它的子对象,并且调用每个子对象的Draw()方法去绘制它们自己。子对象可能会请求获得一个它们在父对象中的大小和位置,但是父对象对于每个子对象的大小和位置有最终的决定权。
LayoutParams:一个子对象如何指定它的位置和大小
Every viewgroup class uses a nested class that extends ViewGroup.LayoutParams. This subclass contains property types that define a child's size and position, in properties appropriate for that view group class.
每个viewgroup类都会使用一个继承于Viewgroup.LayoutParams的嵌套类。这个子类包含了包含了定义一个子对象位置和大小的属性类型,并且需适用于view group类。
An example of layoutparams
layoutparams的一个样例
<img src="http://code.google.com/android/images/layoutparams.png" />
Note that every LayoutParams subclass has its own syntax for setting values. Each child element must define LayoutParams that are appropriate for its parent, although it may define different LayoutParams for its children.
要注意的是,每个LayoutParams子类都有它自己赋值的语法。每个子元素必须定义适用于它们父对象的LayoutParams,尽管父对象可能会为子元素定义不同的LayoutParams。
All viewgroups include width and height. Many also include margins and borders. You can specify width and height exactly, though you probably won't want to do this often. More often you will tell your view to size itself either to the dimensions of its content, or to become as big as its containing object will allow.
所有的viewgroup都包括宽和高。很多还包括边界的定义(margin和border)。你可以非常精确地描述宽和高,尽管你并不想经常这么做。更多时候你希望你的view自行调整到适应内容大小,或者适应容器大小。
分享到:
相关推荐
### Android屏幕元素详细介绍 #### 一、屏幕元素 在Android应用程序开发中,屏幕元素是构成用户界面的基础。本文将详细介绍Android平台上的基本屏幕元素及其作用。 ##### 1.1 android.app.Activity `android.app...
17 Content Provider………………………………………………………18 Android 用户界面………………………………… 19 屏幕元素层次…………………………………………………………19 Android UI 元素与Swing UI 元素...
在Android开发中,屏幕元素是构建用户界面的基本组件,它们决定了应用程序的外观和交互方式。本文将深入探讨几个核心的概念,包括`android.app.Activity`、`android.view.ViewGroup`以及几种常见的`ViewGroup`子类,...
总之,当遇到“使用Uiautomatorviewer无法获取手机页面元素”的问题时,应首先检查环境配置、版本兼容性、设备连接和权限等基础问题,再逐步排查更深层次的原因。如果问题依然存在,尝试更新或替换工具,或转向其他...
MFC是基于Windows API的,它为开发者提供了更高层次的抽象,简化了Windows编程。MFC包含了丰富的类库,如窗口类(CWnd)、对话框类(CDialog)、文档/视图架构等,这些都是构建Windows应用程序的基础。在这个屏幕截取...
3. **阴影(Box Shadow)和文本阴影(Text Shadow)**:通过`box-shadow`和`text-shadow`,可以为元素和文本添加3D深度感的阴影效果,增加视觉层次。 4. **过渡(Transition)**:当元素的某个属性改变时,`...
它的特色在于能够生成多个屏幕尺,这意味着用户可以根据工作需要同时开启多个尺子,进行多角度、多层次的测量,极大地提升了工作效率。例如,在网页设计时,设计师可以同时查看页面顶部和底部的元素间距,或者在处理...
例如,当一个元素没有唯一的ID或类名,或者当元素嵌套层次深,常规的定位方法难以操作时,XPath就成为首选的解决方案。 XPath定位语法包括: 1. **元素选择**:通过元素标签名选取,如`/div`。 2. **属性选择**:...
优化策略包括使用约束布局(ConstraintLayout)减少布局层次,使用Fragment管理屏幕内容,以及合理使用ViewStub延迟加载不常用的视图。 七、横竖屏适配 对于需要横竖屏兼容的应用,需确保UI元素在不同方向下都能...
它可以帮助开发者了解Windows控件的层次结构,以及每个控件的属性,如类名、ID、文本、位置等。UI Spy特别适用于测试自动化,因为它能帮助识别自动化脚本需要操作的UI元素。 2. Inspect32.exe:Inspect32是另一个...
1. **VB窗体设计**:VB的IDE允许开发者通过拖放控件来创建用户界面,"屏幕抓图精灵"可能包含按钮、菜单等元素,用于触发截图操作。 2. **Windows API调用**:VB可以直接调用Windows操作系统提供的API函数,如`...
UISpy是Microsoft提供的一款免费工具,它允许开发者和测试工程师深入查看运行中的Windows应用程序的UI层次结构,获取各个控件的属性、事件和方法等详细信息。 UI元素可以包括按钮、文本框、列表视图、菜单项等各种...
这款工具主要针对需要精确测量屏幕元素大小或间距的设计师、开发者以及普通用户,提供了便捷、直观的测量手段。 在2.0版本中,LiRuler已经具备了基本的屏幕测量功能,用户可以利用其进行像素级别的精度测量。而3.0...
视觉层次是指页面上各个元素根据其重要性所呈现的视觉显著性差异。这一概念在图形设计领域至关重要,旨在帮助用户迅速理解页面信息的重点与结构。 在没有明确视觉层次的情况下,如图4-1所示,所有文本都显得同等...
【屏幕自动锁定程序VB源代码】是一个基于Visual Basic(VB)开发的应用程序,它能够实现计算机屏幕在...通过深入理解这个程序,开发者不仅可以掌握VB的基本语法,还能了解到如何利用VB与操作系统进行更深层次的交互。
JavaScript中的对象层次结构是Web开发中的核心组成部分,它允许开发者与浏览器进行交互并操控页面内容。在提供的信息中,我们关注三个主要的对象:`navigator`、`screen`和`window`,以及它们关联的一些子对象。 `...
对于那些屏幕像素点难以分辨或者色彩层次复杂的情况,放大功能能将选定区域放大数倍,让用户可以更清晰地看到每个像素的颜色,从而进行更精确的选取。 屏幕捕获功能允许用户快速保存当前屏幕的静态图像,或者是...
《指针式夜光大钟屏幕保护》是一...它巧妙地将传统时钟的元素与现代数字技术相结合,创造出一种新的交互形式,使得电脑屏幕在闲置时也能展现出艺术美感。无论是从实用角度还是审美角度,这款屏保都值得用户尝试和欣赏。
在iOS应用中,所有的可视元素都是UIView或其子类的实例。Loading View本质上也是一个UIView,我们可以自定义它的外观和行为,使其在需要时出现在屏幕的特定位置。 1. **创建自定义Loading View**: 首先,我们需要...
总结来说,屏幕录制与播放涉及到多个层次的技术,包括图像捕获、音频处理、编码压缩、用户交互以及播放机制。提供的文件名列表揭示了这样一个系统可能的组成部分,每个文件都扮演着关键的角色,共同构建了一个完整的...