安卓的分布——Resource and Java code
Access Resources
MainActivity 中的 R.layout.activity_main,这就意味着 activity 的内容视图应该对应 activity_main 这个 XML 布局文件
setContentView(R.layout.activity_main)是方法调用,输入的参数是资源ID;如果你指定了跟内容视图相关的将要使用的布局
Android设备会开始解析XML布局文件,解析的过程就是阅读这些文件,并尝试着去识别这些LinearLayout、TextView……里边的属性,尝试理解文件里包含什么
Android设备从XML文件的头部开始阅读,他会识别这里包含一个LineaLayout,然后隐形地找出一个Java对象来代表LinearLayout,然后是下一行,看到我们需要添加一个TextView子LinearLayou,有点像视图层次结构,这实际上是Java对象的层级结构。一旦我们获得Java对象的所有视图层级结构,就能进行操作,当应用运行时,修改他们。
Java 的对象比如 TextView 包含着状态信息,像文本、文本颜色、文本尺寸…这些对象也包含方法,我们可以调用这些方法,修改他们的内部状态。比如,当程序运行时,我们可以改变文本。与这些对象进行交互,就是面向对象的程序设计
MainActivity控制着视图的层级结构,当你和MainActivity交互时,可以更新对象
TextView实际上是通过应用里的Java对象控制的,这是一个TextView Java对象的实例,他像一个盒子,在他的里面有声明的变量,声明是由一堆字段组成的。字段是一个变量。
我们可以用TextView来存储 today 字串符,她是最后在屏幕上显示的文本。我们可是使用一个整型字段来储存文本的字体大小。
还有其他的一些字段,如文本颜色、字体族,这些组成TextView的声明。
当应用运行的时候,为了和Java对象交互,并且改变他的值,我们可以调用TextView的方法,如 setText()……每个方法都只执行一个指令。
还有像onDraw()这样的复杂方法,他用来处理在屏幕上绘制TextView。所以总体来说,TextView对象包含了Textview中声明的信息,你可以调用这些方法与TextView互动。例如修改声明或做更复杂的动作。
为了在屏幕上显示 TextView 实际上有一个 TextView 的 Java 对象放在应用里,这个特定的 ImageView 包含声明信息,比如图像应该怎么显示,以及尺寸类型,像居中,再者还有其他字段组成 ImageView 的声明
我们如何知道 ImageView 声明里的所有属性是什么,以及他里面有哪些方法?为了回答这个问题,我们必须看一下这个对象的类的定义
它是一个叫做TextView.java的文件,在这个TextView.java类文件中,我们有很多谈论TextView声明和方法的代码。
对象实例能够包含特定的信息,像文本字串符 Taday,或字号18。你可以使用这个类来创建更多的TextView对象实例,而且他们有不同的文本字符串。
(这三个橙红色的小方块都是以类模板为基础的)
类与实例的关系:类 如建造真实房子时的平面图,而每个房子都有点不同,但是他们都是基于这个平面图来建造的。平面图并不是房子本身,它只是一个计划。同样的道理 TextView 类是用来创建这些对象实例的,所以这些实例是有真实的文本值、文本颜色值和字体大小等。
如果构造函数需要一个语境对象(context),那么我们需要传入一个语境,语境对象帮助你获取应用资源以及其他的关于应用环境的东西
总而言之,创建了一个新的TextView对象,通过调用构造函数,并且把这个新的对象存放在一个priceTextView的变量当中,这个变量只能控制一个TextView对象,就像他的数据类型定义的一样
Java keywords
工厂方法模式来创建对象:create是工厂方法名称,然后传入输入参数来初始化播放器
通常来说,想知道使用构造函数创建对象,还是用工厂方法创建对象,可在google中搜索如何创建那个对象,使用构造函数创建对象是最常用的一种方式