(原创)《Android编程权威指南》学习笔记01-- Android应用初体验--004

  我们先学习如何使用xml代码来定义布局。

  在当前的activity_quic.xml文件中,定义了默认的activity布局。应用的默认布局经常改变,但是xml布局文件却总是与代码清单1-1文件相似。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".QuizActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

</RelativeLayout>

        代码清单1-1 代码清单1-1:默认的activity布局(activity_quiz.xml)

  首先,我们注意到activity_quiz.xml文件不再包含版本声明与文件编码的如下代码:

<?xml version = "1.0" encoding = "utf-8" ?>

  ADT21开发版本以后,android布局文件已不再需要该行代码。不过,很多情况下,可能还会看到它。

  应用activity的布局默认定义了两个组件(widget):RelativeLayout 和 Textview.

  组件 是组成用户界面的构造模块。按钮、文本输入控件和选择框等都是组件。

  Android SDK内置了多种组件,通过配置各种组件可获得所需的用户界面及行为。每个组件是View类或其子类(如TextView或Button)的一个具体实例。

  QuizActivity的用户界面需要下列五个组件:

  1.  一个垂直LinerLayout组件;

  2. 一个TextView组件

  3. 一个水平LinerLayout组件;

  4. 两个Button组件。

  

     布置并显示在屏幕上的组件。

  下面我们在activity_quiz.xml文件中定义这些组件。

<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width  = "match_parent"
    android:layout_height = "match_parent"
    android:gravity       = "center"
    android:orientation   = "vertical" >    

    <TextView
        android:layout_width  = "wrap_content"
        android:layout_height = "wrap_content"
        android:padding       = "24dp"
        android:text          = "@string/question_text" />

    <LinearLayout
        android:layout_width  = "wrap_content"
        android:layout_height = "wrap_content"
        android:orientation   = "horizontal" >

        <Button
            android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/true_button" />

        <Button
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/false_button" />

    </LinearLayout>

</LinearLayout>

            代码清单1-2:在XML文件(activity_quiz.xml)中定义组件

  需要特别注意的是:开发工具无法校验布局XML内容,请避免输入或拼写错误。

  根据所使用的工具版本不同,用三行以android:text开头的代码可能会产生错误信息。暂时忽略它们,稍后处理。

  可以看出,元素名称就是组件的类型。

  各元素均有一组xml属性。属性可以看作是如何配置组件的指令。

  

视图层次结构

  组件包含在视图对象的层级结构,即视图层级结构(view hieratchy)中。图1-10展示了代码清单1-2所示的xml布局对应的视图层级结构。

  

  从上可以看出,根元素是一个LinearLayout组件。作为根元素,LinearLayout组件必须指定Android xml资源文件的命名空间属性为:http://schemas.android.com/apk/res/android。

  LinearLayout组件继承自View子类的ViewGroup组件。ViewGroup组件是一个包含并配置其他组件的特殊组件。如需以一列或一排的样式布置组件,使用LinearLayout组件就可以了。其他ViewGroup子类还包括FrameLayout、TableLayout和RelativeLayout。

  若某个组件包含在一个ViewGroup中,该组件与ViewGroup即构成父子关系。根LinearLayout有两个子组件:TextView和LinearLayout。作为子组件的LinearLayout本身还有两个Button子组件。

组件属性
  下面我们一起来看看配置组件的一些常用属性。
  1. android:layout_width和android:layout_height属性
  几乎每类组件都需要android:layout_width和android:layout_height属性。它们通常被设置为以下两种属性值之一。
?    match_parent:视图与其父视图大小相同。
?    wrap_content:视图将根据其内容自动调整大小。
     (以前还有一个fill_parent属性值,等同于match_parent,目前已废弃不用。

  TextView组件比其包含的文字内容区域稍大一些,这主要是android:padding="24dp"属性的作用。该属性告诉组件在决定大小时,除内容本身外,还需要增加额外指定量的空间。这样屏幕上显示的问题与按钮之间便会留有一定的空间。(dp即density-independent pixel,指与密度无关像素,第八章将介绍有关它的概念。)

  2. android:orientation属性

  android:orientation属性是两个LinearLayout组件都具有的属性,决定了组件是水平放置还是竖直放置的。在上面xml中,根LinearLayout是垂直的,子LinearLayout是水平的。

  LinearLayout子组件的定义顺序决定着其在屏幕上显示的顺序。在竖直的LinearLayout中,第一个定义的子组件出现在屏幕的最上端。而在水平的LinearLayout中,第一个定义的子组件出现在屏幕的最左端。(如果设备语言是从右至左显示,则第一个定义的子组件则出现在屏幕的最右端。)

  3. android:text属性

   TextView与Button组件具有android:text属性。该属性指定组件显示的文字内容。

  请注意,android:text属性值不是字符串字面值,而是对字符串资源(string resources)的引用。 

  字符串资源包含在一个独立的名为strings的XML文件中,虽然可以硬编码设置组件的文本属性, 如android:text="True", 但这通常不是个好方法。将文字内容放置在独立的字符串资源XML文件中,然后引用它们才是好方法。

  需要在activity_quiz.xml文件中引用的字符串资源目前还不存在。现在我们来添加这些资源。

时间: 2024-08-06 03:16:30

(原创)《Android编程权威指南》学习笔记01-- Android应用初体验--004的相关文章

Android编程权威指南-读书笔记(二)-第一个小程序

Android编程权威指南-读书笔记(二) -第一个小程序 第一个例子介绍 应用名为GeoQuiz.用户通过单击True或False按钮来回答屏幕上的问题,GeoQuiz可即时反馈答案正确与否. 这个例子为我们简单介绍了几个基本组件的使用,以及基本的事件监听.让我们对基本组件的使用和事件的监听有一个基本的了解. 这篇文章分为2个部分,第一部分就是创建简单的UI.第二个部分就是对这个UI增加代码来响应一些操作. (注:所有不明白或者不理解的东西其实都不重要,后面都会有更详细的介绍.) 本章的目标

js权威指南---学习笔记01

1.当函数赋值给对象的属性时,就变为了方法:2.被零整除不报错,只会返回无穷大(Infinity)或者负无穷大.例外:零除以零等于非数字(NaN).3.NaN与任何值都不相等! 4.Javascript采用二进制浮点数表示法(IEEE-754),会导致不能精确表示类似0.1这样简单的小数:     它只能表示1/(2^N)的和的任意组合.5.布尔值:真值和假值:      假值false:false.null.0.-0.""(空字符串).NaN.undefined     真值true

《Android编程权威指南》-读书笔记(五)-挑战练习

<Android编程权威指南>-读书笔记(五) -挑战练习 为了巩固学习,为了建立信心.开始进行如下挑战: 挑战练习一:为TextView添加监听器 书中给出了提示,TextView,Button都是View的子类,都可以设置OnClickListener()直接加入如下代码: mQuestionTextView.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v){ mCurr

《Android编程权威指南》-读书笔记(十一) 完善CriminalIntent

<Android编程权威指南>-读书笔记(十一) 完善CriminalIntent 在上篇文章中,我们跟随本书作者,使用了单个的Fragment做了最简单的插入操作.本篇文章将跟随作者进行更深入的完善各种功能. 本章目标: 使用ListFragment显示列表 fragment之间传递数据 使用ViewPager来实现划屏显示 对话框 使用ListFragment显示列表 如果是挑战,或者没有UI我会给出草图之类的UI.或手画或Axure原型.每次例子本书都给出了最终UI,所以这步基本都可以省

《Android编程权威指南》-读书笔记(四)-GeoQuiz功能扩展

<Android编程权威指南>-读书笔记 -GeoQuiz功能扩展 从现在开始,这本书开始扩展应用.在这次扩展中我们将会学习以下知识点: 创建一个新类 更新视图层 更新控制层 Git代码的修改和提交 Android Studio 在设备中运行该应用 给按钮添加图片资源 功能:下图是GeoQuiz应用对象图解.应用的对象按模型.控制器和视图的类别被分为三部分.Android应用是给予模型-控制器-视图(Model-View-Controller,简称MVC)的架构模式进行设计的. 创建一个类 T

《Android编程权威指南》-读书笔记(三)Git初探

<Android编程权威指南>-读书笔记(三)Git初探 版本控制-Git 为什么要使用版本控制 什么是版本控制?我为什么要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.在本书所展示的例子中,我们仅对保存着软件源代码的文本文件作版本控制管理,但实际上,你可以对任何类型的文件进行版本控制. 如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能).采用版本控制系统(VCS)是个明智的选择.有了它你就

电子书 Android编程权威指南 第2版.pdf

Big Nerd Ranch是美国一家专业的移动开发技术培训机构.本书主要以其Android训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android编程指南.全书共34章,详细介绍了8个Android 应用.通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得前沿的开发经验. 如果你熟悉Java语言,或者了解面向对象编程,那就立刻开始Android编程之旅吧!作者简介Bill PhillipsBig Nerd Ranch骨灰级讲师.他在Big Ner

《Android编程权威指南》PhotoGallery应用梳理

PhotoGalley是<Android编程权威指南>书中另外一个重要的应用.        github:https://github.com/xurui1995/PhotoGallery   (欢迎和谢谢您的star) 在第一个应用CriminalIntent中,主要学习了Intent的使用,Fragment的使用,Sqlite等等. 详情:http://www.cnblogs.com/xurui1995/p/5829458.html 在PhotoGalley的应用中,主要学习Androi

Git权威指南学习笔记(一)Git初始化

1.在Git中配置用户名和邮件地址 $ git config --global user.name "Jymn_Chen" $ git config --global user.email "[email protected]" 注意把用户名和邮件地址替换成你自己的资料. 在这里的参数global表示配置的作用范围是当前用户,如果将参数改为system,那么配置的作用范围是系统中的所有用户. 2.创建版本库 新建一个目录并cd到目录中,执行以下命令: $ git i

Git权威指南学习笔记(二)Git暂存区

如下图所示: 左侧为工作区,是我们的工作目录. 右侧为版本库,其中: index标记的是暂存区(stage),所处目录为.git/index,记录了文件的状态和变更信息. master标记的是master分支所代表的目录树.HEAD指向master分支. objects标记的是Git的对象库,所处目录为.git/objects,文件索引建立了文件和对象库中对象实体之间的映射关系. 通过该图我们可以清晰地看出add,commit等命令的转化关系.下面通过git diff和git status两条命