zoukankan      html  css  js  c++  java
  • 第二部分:开发简要指南第一章 Hello,World

    第1章 Hello,World

    作为一名开发者,我们学习一个平台的第一印象肯定都是写一个“Hello,World”。在Android上写一个“Hello,World”是很简单的,由于我们使用Eclipise IDE,它提供了ADT这么强大的插件,这样创建和管理一个项目就更简单了,可以大大缩短我们的时间。在开始之前,你应该确认你已经安装了SDK和ADT插件。本章会根据以下几个部分来讲述:

    1. 安装一个平台(系统版本)

    2. 创建一个Android虚拟机(AVD)

    3. 创建一个项目

    4. 构建一个用户界面

    5. 执行代码

    6. 升级界面为一个XML布局

    7. 调试你的项目

    1.1 安装一个平台(系统版本)

    为了执行Hello World应用程序,你需要在你的SDK环境中安装至少一个Android平台版本。如果你已经安装了就可以跳过这一步,请注意根据你的实际情况下载最实用的平台版本,笔者自己下载的是1.6----2.1----2.2---2.3----3.0这五个版本的平台版本,请根据自己实际情况下载吧。如果你还没有下载过一个平台版本,在Eclpise请按照以下步骤执行:

    1. 在Android SDK Manager 中,选择左边面板中的 Available Packages

    2. 在右边面板,展开Android Repository列表显示一些可用的安装组件

    3. 至少选择一个平台安装,点击Install Selected

    1.2 创建一个Android虚拟机(AVD)

    我们在第一大篇的开发入门中已经讲过,如何使用和管理AVD。在本章中,我们将在Android模拟器中执行我们的应用程序。所以在你启动一个模拟器之前,必须先创建一个AVD。创建步骤如下:

    1. 在Eclipse中,选择Window > AVD Manager

    2. 在左边面板选择Virtual Devices 

    3. 点击 New...

    然后来到Create New AVD对话框

    4. 输入虚拟机的名字,我自己的虚拟机都是使用系统版本命名,例如“AVD2.2.

    5. 选择一个target(Android SDK系统版本例如2.3.3)。然后本章为了简单,后面的字段就省略掉了

    6. 点击 Create AVD.

    1.3 创建一个新的Android项目

    下面我们来创建一个新Android的项目,步骤如下:

    1. 在Eclipse中, 选择 File > New > Project...

    如果你的ADT插件安装正确,那么应该会显示出如图1-1的界面

     

    图1-1 在Eclipse创建Android项目的截图

    2. 选择"Android Project"然后点击Next
    3. 按照以下步骤填写一些项目细节,如图1-2所示:

    ◆Project name: HelloAndroid

    ◆Build Target: 根据你虚拟机创建的系统版本来选择对应的Application name: Hello, Android

    ◆Package name: com.example.helloandroid (包名)

    ◆Create Activity: HelloAndroid(主Activity名)

     

    图1-2 在Eclipse创建Android项目中填写相应的细节

    这里我们讲以下Min SDK Version字段:当我们Build Target选择的是2.1(对应的API Level为7)时,这里应该填7或者低于7的版本,例如3或者4。切记不能填写高于7的。不然会有一些错误和隐患。我们的项目已经创建好了,然后我们在Eclipse左边的Package Explorer面板打开HelloAndroid.java文件,位于HelloAndroid > src > com.example.helloandroid。代码如下:

    package com.example.helloandroid;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    publicclassHelloAndroidextendsActivity{
        /** Called when the activity is first created. */
        @Override
        publicvoid onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    }

    代码清单1-1

    注意我们的HelloAndroid是继承于Activity类的。一个Activity是一个单一的应用程序实体,用于执行动作。一个应用程序可能有许多个Activityies组成,但在某一时刻只有一个Acitvity与用户在交互。当你的Activity启动后,Android系统会调用onCreate()方法。你应该在这里执行一些初始化和UI设置的操作。一个Activity不需要有一个用户界面也能正确执行,但通常我们应该加一个基础的用户界面来显示一些东西,下面让我们来修改一些代码!

    1.4 构建一个用户界面

    同样在HelloAndroid 类中,改进了一下代码。下面的粗体就是我们新添加的。

    package com.example.helloandroid;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;
    
    public class HelloAndroid extends Activity {
       /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           TextView tv = new TextView(this);
           tv.setText("Hello, Android");
           setContentView(tv);
       }
    }

    代码清单1-2

    一个Android用户界面是由Views的对象层次结构组成的。一个View是一个可绘制的对象,并当做一个UI布局元素,例如一个按钮,图片或者此处TextView(文本标签)。每一个UI元素的都是一个View,它们都直接或间接继承与View类。这里我们创建一个TextView对象,需要传一个Context实例对象。Context用于处理与系统相关的一些操作,例如解决资源调用,获得访问数据库的一些接口和首选项等。Activity 类继承自Context,所以这里可以直接传”this”。接下来我们需要使用setText()来设置文本的内容。最后我们需要通过setContextView()把TextView添加到我们当前的Activity界面中。如果你没有调用setContextView(),那么系统不会显示这个TextView,而是显示一个背景全黑的空白屏幕。

    好的,”Hello,Android”的项目代码已经写好了,接下来我们需要执行它了。

    1.5 执行应用程序

    由于在Eclpise中有插件,我们执行它很容易,并且方法有很多种,这里我们可以在项目上点击鼠标右键->选择Run As->Anroid Application

    Eclipse插件自动为您的项目创建一个新的运行配置文件,然后启动Android模拟器。根据您的环境,Android模拟器可能需要几分钟才能全面启动完毕,所以请耐心等待。当启动完毕后,Eclipse插件会安装应用程序,并启动默认的Activity。显示效果如图1-3所示:

     

    图1-3 在Eclipse中使用模拟器启动Hello,Android后的截图

    在应用程序灰色栏中看到的“Hello,Android”实际上是应用程序的标题。创建项目时,Eclipse插件会自动创建res/values/strings.xml。然后再AndroidManifest.xml会引用strings.xml中的标题字段。标题下面的文字,才是我们在代码中写的TextView。虽然“Hello World”已经写完了,但是你可以继续阅读项目中其他有价值的信息。

    1.6 升级界面为一个XML布局

    在 "Hello, World" 例子中我们使用的是代码布局。如果你是位经验丰富的的UI程序员,你可能熟悉这种做法是非常脆弱的:布局中的微小变化可能导致大量代码的改动,并且很容易与之忘记相关的其他View,这会导致你的布局错误并且浪费大量时间在调试。因此Android提供了一种基于XML布局文件来代替用代码写布局的模式。下面让我们来举一个例子,跟上面的“代码清单1-2”一样的效果,我们不使用代码布局一个TextView,而使用以下的XML文件来代替:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/textview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:text="@string/hello"/>

    这是一个简单的Android XML布局文件结构:它是一个树节点,其中每个节点都是一个View。我们使用的元素都是继承自View类的,TextView是Android已经写好的一个View,当然我们也可以在代码自定义View。这种结构可以很容易的快速建立用户界面,比起代码布局,它使用更简单的结构和语法。在上面的XML布局文件中只有一个TextView节点,但这里用到了几个属性。如表格1-1所示:

    属性

    描述

    xmlns:android

    这是一个XML命名空间声明,告诉Android的工具,你会引用在Android命名空间中定义的共同属性。在每一个Android的布局文件的最外层标签必须有此属性。

    android:id

    该属性指定一个TextView元素的唯一标识符。您可以使用分配的ID从源代码中引用它。

    android:layout_width

    该属性定义了这个View需要占用的宽度,“fill_paren”表示占用父节点的全部宽度,这里的父节点即屏幕。

    android:layout_height

    和宽度类似,表示高度

    android:text

    这设置TextView中应显示的文字。在这个例子中,我们使用的是硬编码的字符串值,而不是引用的一个字符串资源。当然更好的做法是引用在res/ strings.xml文件定义的hello字符串。因为这样符合国际化。这里为了简单起见我们暂用硬编码。

    表格1-1 XML中节点的属性

    这些XML布局文件被放置在你工程的res/layout/ 目录下。”res”代表资源,该目录包含所有的非代码资源,除了布局文件夹,还包括图像,声音,本地化字符串等。

    Android默认的布局方式是纵向布局,在多屏幕多分辨那章,笔者已经介绍过了,这里我们的xml是放入layout/下的,layout就是默认的纵向布局,如果你吧手机横向放置,android就会显示横向的布局,由于我们没有在layout-land下放入布局文件,所以它会直接的在纵向布局下拉伸,当然这里只是一个小提示,真正做好一个项目,这些细节是必须考虑的。这里为了简单起见,我们就让他拉伸吧。Eclipse插件在我们新建项目的时候就在res/layout/下创建了一个main.xml的布局文件。我们在“代码清单1-2”中是没有使用这个main.xml布局文件的。

    现在让我们重新修改一下”代码清单1-2”,如“代码清单1-3”所示

    package com.example.helloandroid;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class HelloAndroid extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    }

    代码清单1-3

    我们放弃了,“代码清单1-2”中的代码生成View的方式,转而使用“代码清单1-3”XML布局文件,你会发现仅仅一行就搞定了,接下来让我们看看R类(俗称R文件)。在Eclipse中的项目中的gen/下找到我们的R.java。代码如下

    package com.example.helloandroid;
    
    public final class R {
        public static final class attr {
        }
        public static final class drawable {
            public static final int icon=0x7f020000;
        }
        public static final class id {
            public static final int textview=0x7f050000;
        }
        public static final class layout {
            public static final int main=0x7f030000;
        }
        public static final class string {
            public static final int app_name=0x7f040001;
            public static final int hello=0x7f040000;
        }
    }

    代码清单1-4

    一个项目中的R文件都是用来保存所有资源的引用,代码中如果要引用资源文件就是使用R文件引用他们的ID。此文件请不需要修改,当你有资源复制到项目中时,他会自动生成资源的引用ID。

    1.7 调试你的项目

    当然调试是必不可少的,Eclipse中的Android插件与Eclipse的调试器良好的集成在一起。为了证明这一点,下面我们来看“代码清单1-5”

    package com.example.helloandroid;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class HelloAndroid extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Object o = null;
            o.toString();
            setContentView(R.layout.main);
        }
    }

    代码清单1-5

    在你的代码中引入一个空指针异常,然后你会在模拟器中看见如图1-4的效果。

    图1-4 Android设备中出现空指针异常

    我们可以在Object o = null;这一行设置一个断点(双击旁边的代码行),然后右键选择Run - > Debug As - > Android Application。然后运行调试模式,并会在断点处停下来。然后进入调试界面,你可以鼠标悬停或者观察右上角中变量的值,如图1-5所示:

    图1-5 Android调试界面截图

    完整项目下载链接:http://url.cn/TidNvn

    本文来自jy02432443,QQ78117253。转载请保留出处,并保留追究法律责任的权利

  • 相关阅读:
    Arduino Nano与SIM800C 通信
    Laravel 查询数据按照时间分组
    Laravel 查询或写入Enum字段出错的bug解决办法
    【示例代码及地区json】js省市区三级联动 升级版
    【示例代码及地区json】js省市区三级联动
    Laravel使用whereHas进行过滤不符合条件的预加载with数据
    Laravel where条件拼接,数组拼接where条件
    postman传数组参数,二维数组,多维数组
    中国元器件电商
    蓝牙核心技术了解(蓝牙协议、架构、硬件和软件笔记)
  • 原文地址:https://www.cnblogs.com/tianjian/p/2524430.html
Copyright © 2011-2022 走看看