这个章节描绘怎样完成一个根本的Android界面。它触及构建屏幕根本元素,怎样在xml(界说文件)内界说屏幕、用你的代码生成、在不同使命你需求操作你的用户接口。Android生成屏幕有三种办法:xml装备生成;经过你自己用户界面接口生成;直接用代码生成。依据MVC准则,UI应该与程序逻辑相别离,因而,在XML中界说UI结构是高度引荐的。此外,一个程序从一个屏幕计划调整到另一个也简略得多。在XML中界说UI跟创立一个一般的HTML文档十分类似,例如,你有如下的一个文件:
The content of the body element.
就如Android的XML布局相同,一切的元素都是结构化的,能够经过树形结构来标明:
xmlns:android=http://schemas.android.com/apk/res/android
android:orientation=vertical
android:layout_width=fill_parent
android:layout_height=fill_parent>
android:layout_width=wrap_content
android:layout_height=wrap_content
android:text=Hello World/>
3.2.1屏幕元素的层次
Android应用程序的根底功用单元便是Activity–android.app.Activity类中的一个目标。一个Activity能够做许多事,可是他自己并不会显现到屏幕上。想要让你的Activity显现在屏幕上而且规划它的UI,你需求运用view和viewgroup–Android渠道根底的用户界面表达单元。
Views
一个view是一个android.view.View根底类的目标。它是一个存储有屏幕上特定的一个矩形内布局和内容特点的数据结构。一个View目标处理测距和布局,绘图,焦点改换,滚动条,还有屏幕区域自己体现的按键和手势。
View类作为一个基类,为widget(窗体部件)服务,widget–是一组用于制作交互屏幕元素的彻底完成子类。Widget处理它们自己的测距和绘图,所以你能够更快速地用它们去构建你的UI。可用到的widget包含Text,EditText,InputMethod,Button,RadioButton,Checkbox,和ScrollView……。
Viewgroups
一个ViewGroup是一个android.view.Viewgroup类的目标。正好像它的姓名标明的相同,一个viewgroup是一个特别的view目标,它的功用是去装载和办理一组基层的view和其他viewgroup,Viewgroup让你能够为你的UI添加结构而且将杂乱的屏幕元素构建成一个独立的实体。
Viewgroup类作为一个基类为layout(布局)服务,layout–是一组供给屏幕界面通用类型的彻底完成子类。layout让你能够为一组view构建一个结构。
一个树形结构的界面
在Android渠道上,你用view树和viewgroup节点来界说一个Activity的UI,就好像下面图表相同。这个树能够如你需求那样简略或许杂乱,而且你能够运用Android的预界说widget和layout或许你自界说的view类型来构建它。
一个view和viewgroup树的样例:
Picture 4 Android UI – Tree structure
要将屏幕绑定一个树以便于烘托,你的Activity调用它的setContentView()办法而且传递一个参数给根节点目标。一旦Android体系取得了根节点的参数,它就能够直接经过节点来无效化,测距和制作树。当你的Activity被激活而且取得焦点时,体系会告诉你的activity而且恳求根节点去测距并制作树,根节点就会恳求它的子节点去制作它们自己,一起,每个树上的viewgroup节点担任制作它的直接子节点。
正如之前说到的,每个view group都有丈量它的有用空间,布局它的子目标,而且调用每个子目标的Draw()办法去制作它们自己。子目标或许会恳求取得一个它们在父目标中的巨细和方位,可是父目标关于每个子目标的巨细和方位有终究的决定权。
LayoutParams:一个子目标怎么指定它的方位和巨细
每个viewgroup类都会运用一个承继于Viewgroup.LayoutParams的嵌套类。这个子类包含了一系列的特点类型,这些特点类型界说一个子目标方位和巨细,与view group类相习惯。
layoutparams的一个样例:
要注意的是,每个LayoutParams子类都有它自己赋值的语法。每个子元素有必要界说适用于它们父目标的LayoutParams,虽然父目标或许会为子元素界说不同的LayoutParams。
一切的viewgroup都包含宽和高。许多还包含鸿沟的界说(margin和border)。你能够十分精确地描绘宽和高,虽然你并不想常常这么做。更多时分你期望你的view自行调整到习惯内容巨细,或许习惯容器巨细。
Android 界面元素与Swing界面元素的比较
Android 界面元素
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/297726.html
|