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

从布局 XML到视图对象

  在创建GeoQuiz项目的同时,也创建了一个名为QuizActivity的Activity子类。QuizActivity类文件存放在项目的src目录下。目录src是项目全部Java源代码的存放处。

  打开QuizActivity.java文件,查看其中的代码,如下:

  

package com.bignerdranch.android.geoquiz;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class QuizActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_quiz);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.quiz, menu);
        return true;
    }

}

            代码清单1-4:QuizActivity的默认类文件(QuizActivity.java)

  该Java类文件包含两个Activity方法:onCreate(Bundle)和onCreateOptionsMenu(Menu)。 
  暂不用理会onCreateOptionsMenu(Menu)方法,第16章会详细介绍它。
  activity子类的实例创建后,onCreate(Bundle)方法将会被调用。activity创建后,它需要获取并管理属于自己的用户界面。获取activity的用户界面,可调用以下Activity方法:  

public void setContentView( int layoutResID )

  通过传入布局的资源ID参数,该方法生成指定布局的视图并将其放置在屏幕上。布局视图生成后,布局文件包含的组件也随之以各自的属性定义完成实例化。

资源与资源ID

  布局是一种资源资源是应用非代码形势的内容,比如图像文件、音频文件以及XML文件等。

  项目的所有资源文件都存放在目录res的子目录下。通过包浏览器可以看到,布局activity_quiz.xml资源文件存放在res/layout/目录下。包含字符串资源的strings文件存放在res/values/目录下。

  在包浏览器展开目录gen,找到并打开R.java文件,即可看到GeoQuiz应用当前所有的资源ID。R.java文件在Android项目编译过程中自动生成,遵照该文件头部的警示,请不要尝试修改该文件的内容。

/* AUTO-GENERATED FILE.  DO NOT MODIFY.
 *
 * This class was automatically generated by the
 * aapt tool from the resource data it found.  It
 * should not be modified by hand.
 */

package com.bignerdranch.android.geoquiz;

public final class R {
    public static final class attr {
    }
    public static final class dimen {
        /**  Default screen margins, per the Android Design guidelines. 

         Customize dimensions originally defined in res/values/dimens.xml (such as
         screen margins) for sw720dp devices (e.g. 10" tablets) in landscape here.

         */
        public static final int activity_horizontal_margin=0x7f040000;
        public static final int activity_vertical_margin=0x7f040001;
    }
    public static final class drawable {
        public static final int ic_launcher=0x7f020000;
    }
    public static final class id {
        public static final int action_settings=0x7f080000;
    }
    public static final class layout {
        public static final int activity_quiz=0x7f030000;
    }
    public static final class menu {
        public static final int quiz=0x7f070000;
    }
    public static final class string {
        public static final int action_settings=0x7f050004;
        public static final int app_name=0x7f050000;
        public static final int false_button=0x7f050003;
        public static final int question_text=0x7f050001;
        public static final int true_button=0x7f050002;
    }
    ...
}

            代码清单1-5:GeoQuiz应用当前的资源ID(R.java)

  目前为止,我们还未在代码中引用过字符串,但如果需要,则应该使用以下方法:

setTitle( R.string.app_name );

  要为组件生成资源ID,请在定义组件时为其添加上android:id属性。在activity_quiz.xml文件中,分别为两个按钮添加上android:id属性,如代码清单1-6所示。

<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:id            = "@+id/true_button"
            android:layout_width  = "wrap_content"
              android:layout_height = "wrap_content"
              android:text          = "@string/true_button" />

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

    </LinearLayout>

</LinearLayout>

            代码清单1-6:为按钮添加资源ID(activity_quiz.xml)

  请注意android:id属性值前面有一个+标志,而android:text属性值则没有这是因为我们将要创建资源ID,而对字符串资源只是做了引用。

  保存activity_quiz.xml文件,重新查看R.java文件,确认R.id内部类中生成了两个新的资源ID,如代码清单1-7所示。

public final class R {
...
public static final class id {
        public static final int action_settings=0x7f080002;
        public static final int false_button=0x7f080001;
        public static final int true_button=0x7f080000;
    }
...

            代码清单1-7:新的资源ID(R.java)

时间: 2024-11-05 20:41:40

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

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两条命