Android开发之创建你的第一个应用(翻译自谷歌官方,原版翻译)

来源:互联网 发布:淘宝店铺刷粉丝软件 编辑:程序博客网 时间:2024/04/30 08:15

古人说的好:工欲善其事,必先利其器!首先是要搭建安卓的开发环境,这里提供一个哥们写的地址:http://www.hzlitai.com.cn/article/ARM11/SYSTEM/android.html 网上也有很多,推荐eclipse,毕竟这个也是谷歌官方推荐的。

看过一些android开发的书籍,总觉得中文的书籍重其形,而不重其意,很多时候都是指讲了怎么做,没有讲为什么,而且谷歌的更新是很快的,而我们看的书还是真对2.3的版本写的,所以我想把谷歌的官方的东西搬到这里来,当然能看懂英文是最好的,但是很多时候也许有些同学看英文会觉得很麻烦,毕竟没有母语亲切,我想把谷歌官方的培训资料写到这里,帮助大家一起进步。至少在我在android上已经摸索了很久的时候,回头看谷歌的官方培训资料,发现还是能收获很多新的东西,也许是我比较愚笨,觉得中文的书籍经过作者自己的排版写出来,真的丢失了很多重要的东西,很多地方讲的很空洞,所以很多时候我会觉得我一直在记忆代码,而不是自己写代码,因为我不知道我写这一句会和系统有什么关系,只是知道该这么写,这种感觉真的太糟糕了。

呵呵,上面都是题外话了,下面开始,我会努力每天写点,写完的,可能刚开始的都很基础,但希望一些细节对大家有用。

这篇是最基础的,如何开始创建你的第一个应用程序。谷歌官方地址:http://developer.android.com/training/basics/firstapp/index.html

在Eclipse下创建你的第一个Android项目

1.点击New菜单

 

2.在打开的页面里面选择Android,选择里面的Android Application Project

3.然后会打开一个页面,填充里面的内容:

 Application Name:显示给用户的这个app的名字,就是在我们说的看到的应用程序的名字

 Project Name:在eclipse里面显示的项目名称

 Package Name:应用程序的包名,这个命名贯穿你的整合程序,和java里面的规则是一直的,像上图我们填写的。因为这个原因,所以最好写成这个app代表的领域或者你的公司的名字,用点号隔开来写。这个应用里面是 com.example.myfirstapp,那像GooglePlay提交的时候你也必须使用这个,而不是com.example

 Minimum Required SDK:你的APP所支持的最小的API 版本号(不是android的系统好,比方说4.0的系统对于的API 号为14),所以为了支持最多的设备,这个值要努力设置到最小,就是在能够支撑你的应用的最小的API版本,再小的话可能你的应用一些核心功能就会异常,要保证你的应用在这个最小的版本号上正常运行。如果你的APP的功能只能在当前的版本,那么这个值可以不填,会默认为当前的项目的编译版本号,这个版本号和Compile With一致

 Target SDK:这个版本号指明你的程序支持的最高版本号,你需要在这个版本好的机器上测试你的程序,保证正常运行。那么当android有新的版本发布的时候,你需要去更新这个新版本对于的SDK版本号,好让的你的程序更好的利用新版本的特性

 Compile With:这个里面指定的版本号你编译你的项目时使用的SDK版本。一般默认设置为最新可用的版本号,可以理解为设置为Target SDK一样。当然你也可以使用旧点的版本来编译,但是一般设置为最新的版本号,可以让你的程序使用新的特性,并且能使你的程序在新的平台上达到最优化,毕竟新平台会改进很多东西

 4.点击next后,显示的是关于你的应用的一些配置,默认就好,继续点击下一步

5.点击了下一步后,这一步会帮助你选择一张图片作为你的应用程序图标,在发布你的APP之前,你可以去定做一些图片,但是切记:图片要符合android Iconography 设计的要求。点击下一步

6.这一步你要选择一个Acitivty模版,这个是你APP启动的第一个Activity,点击下一步

7.这一步所有的属性都不要,默认就好,点击Finish。

这个时候你的第一个APP的Android Project就创建成功了。

运行你的APP

 前面我们创建的程序默认就包括有一个显示“hello world”所需要的文件资源,那么现在要把它跑起来,它只需要两件东西:你是否有一部可以使用的Android设备,真机也好,虚拟机也好,以及你是否在使用eclipse.下面我们就来说下如何安装和运行这个APP在你的真机或者虚拟机上,包括使用eclipse和命令行2种方式。

在运行你的APP之前,首先要明白你的项目里面的一些需要注意的方面和一些文件:

AndroidManifest.xml

manifest fill里面描述了这个APP基本的特性,还定义了组成这个APP的组件。续的文章中我们还会学到关于这个文件很多知识,这里先不一一介绍。

其中一个最要的,必须写在这个文件里面的属性就是:<uses-sdk>属性。这个属性里面使用android:minSdkVersion 和 android:targetSdkVersion描述你的应用对不同android设备的兼容性,大家也注意到了,这个就是我们上面说的Minimum Required SDK和Target SDK。对于我们创建的这个APP,它的数值应该是这样的:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >    <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />    ...</manifest>
src/

你的项目的主要代码文件目录,默认它包含你的程序的启动时运行的第一个Activity 类

res/

这个目录是你项目的资源文件存放的目录,它下面又有一些子目录。

drawable-hdpi/ 这个里面存放的是针对高分辨率屏幕的图片资源,比方说bitmap图片等等。那还有其他类似目录,分别存放针对各自对于的分辨率的资源文件。

layout/ 存放你的APP的界面文件

values/ 存放一些XML文件,这类文件里面包含的资源有:string,color等等。

当我们运行这个默认程序的时候,默认的Activity类会载入一个默认的layout的文件,最后显示到设备屏幕上一个“hello world”,结果确实没啥可激动的,但是这一步很重要,在你开发之前,你至少明白了如何运行的你APP。

在真机上运行你的APP

首先你得有有一台充电的android设备,那么就可以进行如下的操作了:

1.用USB线把设备连接到你的开发电脑上,如果是windows设备,你需要安装一下对于的USB驱动,一般windows默认就可以搜索到,只需要等待就好。

2.打开你的手机上的USB debugging功能。

  大部分的3.2版本或者更低的版本上,这个功能位于:Settings > Applications > Development.

   4.0或者更新的版本上,这个功能位于:Settings > Developer options.

  要注意一点:4.2或者之后的版本,这个Developer options默认是隐藏的,让这个模块可见,可以如下操作:Settings > About phone,然后点击Build number 七次,返回前一个界面,就能看到了.

现在要运行你的APP了

1.打开你的项目,点击Run 这个按钮

2.会出现一个窗口,选择Android Application,然后点击OK

eclipse会自己安装这个APP到你的机器上,并运行它。

也可以用命令行:

1.定位到你的项目的跟目录,运行命令

ant debug

2. 先保证platform-tools/目录在你的环境变量:path中,保证adb可以被识别

adb install bin/MyFirstApp-debug.apk

3.在你的设备上找到这个APP的图标,点击运行。

 

或者没有真机的话,可以使用模拟器。点击:设备管理器可以创建一个模拟器,这个是创建界面:

当里面没有模拟器的时候我们可以点击New来创建。  

创建好之后,我们可以点击start来启动这个模拟器来模拟我们的android设备。

后面运行的步骤就和之前一样了,可以点击run按钮,模拟器默认的usb debugging功能是开启的。

那么现在我们已经知道如何运行我们的APP到真机,以及没有真机的情况下,如何创建一个模拟器来代替。下来我们可以进行开发工作的学习。

创建一个简单的用户界面

Android app中的图形用户界面是利用View和ViewGroup的层次结构视图来创建。View指的是通常的UI组件,比方说button,text field.ViewGroup是不可见的,它是用来定义它里面的子视图如何来排列,分布,比方说是网格还是垂直的形式。

Android 提供了XML词汇表来对于View和ViewGroup的子类,这样你就可以在xml利用UI元素的层次感来创建你的UI界面

图列说明下ViewGroup是如何包含组织View的:

下来我们会创建XML文件,里面包含有一个button和一个text field,以及按钮按下时启动一个activity,并且把text field里面的文字传给这个启动的activity。

创建一个线性布局文件(LinearLayout)

首先双击我们打开我们创建的项目里面的:activity_main.xml文件,它在/res/layout/目录下。

这里要注意下:Eclipse里面,当我们双击打开layout xml文件的时候,默认展示给你的是一个图形编辑界面,在这个界面里面我们可以直接拖动空间来创建我们的用户界面,但是这个永远不是最好的方式。我们这里需要直接去编辑xml文件,而不是依靠这个图形编辑界面,所以点击activity_main.xml这个文件下面的tab,选择到XML editor,直接进入xml编辑器。

我们创建的时候默认选择的BlankAcitivity模版,他包含了activity_main.xml文件,文件里面默认有一个RelativeLayout根视图和一个TextView子视图。

首先,删除掉<TextView>元素,同时把RelativeLayout修改为LinearLayout,同时为修改后的LinerLayout添加一个android:orientation属性,设置为“horizontal”。经过上面的修改,现在activity_main.xml文件看起来应该是这样的:

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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:orientation="horizontal" ></LinearLayout>


LinearLayout是ViewGroup的一个子类,它会把包含在它里面的子视图元素按照垂直或者水平的方式列出来,这个就是所说的线性布局,排列的方向是由:android:orientation指定的,里面的每一个子视图元素都是安装这个指定的顺序排列的。

 属性android:layout_width和android:layout_height是所有的视图组件到需要的,这个2个属性分别定义了该视图的宽度和长度

我们这个例子里面,LinearLayout是根视图,这里我们让这个视图占满整个屏幕,用mactch_parent来指导,这个值会让这个视图的宽度和高度和它的父视图的宽度和高度一样,像这里,我们定义的这个LinearLayout是根视图,那他就会填充满整个屏幕,它的宽度和高度会等于屏幕的宽度和高度。

增加一个文本框(Text Field)

下来我们添加一个用户可编辑的文本输入框,对于的视图元素是<EditText>,我们只需要在我们的LinearLayout这个ViewGroup里面加入它即可。像上面说的LinearLayout这个跟视图一样,EditText我们也填充入相应的属性。

<EditText android:id="@+id/edit_message"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:hint="@string/edit_message" />

关于这些属性:

android:id 这个是对EditText这个View唯一的标示符,我们利用这个标示符在代码中使用这个View,可以获取它输入的内容,或者改变它的内容等一系列针对它的操作。

对于@这个符号,对于会在代码中使用的XML涉及到的任何(视图)资源都是需要的,利用@,后面加上(视图)资源类型(这个例子中是:id),然后斜杠,后面加上这个(视图)资源的名字。 这个地方的理解挺绕的,贴下英文(有时候真的英文好理解,中文就是个绕,无奈):

The at sign (@) is required when you're referring to any resource object from XML. It is followed by the resource type (id in this case), a slash, then the resource name (edit_message).

其中@符号后面的+号,只有在第一次定义这个资源名称的时候,才需要添加,后面其他地方使用这个资源名称的时候,不需要这个加号,也很好理解,就是添加一个新的资源名称。然你编译你的APP的时候,SDK TOOLS会利用这个ID名字,在gen/R.java文件里面生成一个与之对应的资源ID号,这里就不用我们管了,我们在代码中使用的时候,就我们添加的那个资源名称就好。

android:layout_width和android:layout_height这2个属性,在这里,我们并没有用match_parent,而是用了wrap_content,这个属性会让系统根据需要来自动调整这个EditText的小小,自动适应里面内容的大小。如果我们这里改成match_parent,那么这个 EditText的大小就会和LinearLayout的大小一样,因为EditText是定义在LinearLaout里面的,所以LinearLaout就是EditText的父视图。

android:hint 这个制定了当EditText为空的时候,里面默认显示的内容。这里我们直接让它等于某个字符串,而是使用了@string/edit_message这个资源名称,这个表示它的值是为:string类型的值edit_message ,edit_message就是被定义到某个资源文件里面的资源名称,它的类型是string,因为这里是引用,所以我们不需要+号。这里会默认报错,我们先不管,后面我们会加上这个资源添加过程。

在这里要注意:在使用资源名称的时候,都有一个类型在前面限制,比方说string和id,这就是2中不同的类型, 所以当我们分别用同一个资源名字定义了string类型和id类型2个资源的时候,并不会产生冲突,因为使用的时候我们会加入资源类型的符号,比如:@string/资源名称,@id/资源名称。

添加string资源

当我们在视图界面里面加入一个字符串文本的时候,这个时候我们就要用到string资源了。就像上面的@string/edit_message,这里我们用的就是edit_message这个string资源.

默认的定义string资源的文件位于:res/values/strings.xm。我们添加一个新的string类型的资源叫:edit_message,设置它的值为:Enter a message(你可以把hello_world这个字符串资源删除掉,因为我们用不到)

这里我们顺便再添加一个值为“Send”的的string资源,名称为:button_send.最好的结果应该是这样:

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">My First App</string>    <string name="edit_message">Enter a message</string>    <string name="button_send">Send</string>    <string name="menu_settings">Settings</string>    <string name="title_activity_main">MainActivity</string></resources>


添加一个按钮(Button)

我们在LinerLayout里面添加一个<Button>元素,就在XML文件中<EditText>的下面:

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


高度和宽度都设置为"wrap_content",button我们只需要让它的大小和它需要的一致就好,让系统自动就计算。在这里我们并没有给它添加一个android_id,因为现在我们并不需要在代码中使用这个按钮,所以不需要一个id号来识别它。

让输入框占满屏幕的宽度

现在我们添加的EditText 和 Button都是自动适应的,系统根据需要来自己计算,因为我们都使用wrap_content来指定他们的宽度和高度。

这样设置,button倒是没什么,但是文本输入框就会有问题了。因为可能用户会输入很长的内容,这个时候最好的做法就是,让这个EditText占满屏幕剩余可用的宽度,在这里就是除去button的宽度外,屏幕剩余的宽度。那我们这里就用到一个wight属性,用android:layout_weight来指定。这个属性定义处于同一父视图下的每个view对父视图剩余屏幕空间的占有大小。它的工作原理就好比说有一杯果汁,这个装果汁的杯子就是父视图,里面的柠檬占据了三分之二的空间,苹果占据了三分之一的空间,那么这个时候柠檬的weight的数值就是2,苹果是1,总共划分为3份,那如果我们这杯果汁里面还有番茄汁的weight为1,那么总的weight就变成4了,柠檬站一半,苹果占据四分之一,番茄占据四分之一。

默认的 wight都是0,所以如果你给一个view设置了一个比0的数值,那么这view就会占满除了其他的视图已经分配出去的空间,把剩余的全部占据。所以这里我们只需要把EditText的weight设置为1,Button的默认为0,那edittext就会占据除了button使用的剩下的所有空间。

<EditText        android:layout_weight="1"        ... />


为了提高布局的效率,当你设置了weight属性,那么最好将width这个属性设置为0dp,因为wrap_content需要系统去计算这个最终无用的宽度,因为weight值需要系统去进行另一种计算来填充占满剩余的空间。

<EditText       android:layout_weight="1"       android:layout_width="0dp"       ... />


最终显示的页面是这样的:

  

那现在我们的布局文件内容应该如下:

<?xml version="1.0" encoding="utf-8"?><LinearLayout 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:orientation="horizontal">    <EditText android:id="@+id/edit_message"        android:layout_weight="1"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:hint="@string/edit_message" />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/button_send" /></LinearLayout>


我们可以点击Run来运行看看.

启动另外一个Activity  

上面我们已经在我们的APP里面添加了一个按钮和输入框,下来我们看下如果点击按钮启动另外一个actvity

首先我们要让添加的按钮在点击的时候会进行反应,打开我们的之前的布局文件activity_main.xml,为<Button>这个视图元素添加一个属性:android:onClick

<Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/button_send"    android:onClick="sendMessage" />


sendMessage就是当我们点击按钮的时候,会被执行的你的Activity中的函数。

我们打开MainActivity.java,添加该函数:

/** Called when the user clicks the Send button */public void sendMessage(View view) {    // Do something in response to button}


这里需要插入View这个类

import android.view.View;


注意:在eclipse,我们可以使用Ctrl+shift_O 快速完成这个动作(以前我傻逼的一个一个点~~⊙﹏⊙b汗),Mac里面用:Cmd+Shift+O

为了让系统可以识别匹配到android:onClick指定的这个函数,这个函数的定义有下面几规则:

必须是public类型

返回值是void类型

参数是一个View变量,到时候传进来的就是被点击的那个View,button是View的子类。

下来,我们就在这个函数里面实现如何启动另外一个Activity,并且把EditText的数值传过去。

创建一个Intent

Intent提供了一种把2个互相独立的组件,在运行时联系在一起的机制。Intent可以理解为你的APP意图想要去做的一件事情。可以利用Intent可以进行很多种不同的任务。但最常用的是,我们利用它来启动另外一个Activity.  

在sendMessage函数里面,我们创建一个Intent来启动另外一个Activity:DisplayMessageActivity:

Intent intent = new Intent(this, DisplayMessageActivity.class);


Intent的构造函数有2个参数:

Context是第一个参数(this使用在这里是因为Activity是Context的子类)

注意:这里暂时会报错,因为我们没有创建DisplayMessageActivity.java这文件,下面我们很快就会去创建

Intent除了可以启动activity,它还可以携带一些数据。在这个发放里面,我们使用findViewById()这个函数找到EditText这个视图元素,然后把它的内容存放到Intent里面

Intent intent = new Intent(this, DisplayMessageActivity.class);EditText editText = (EditText) findViewById(R.id.edit_message);String message = editText.getText().toString();intent.putExtra(EXTRA_MESSAGE, message);


注意:我们要插入包android.content.Intent and android.widget.EditText,等下还要定义EXTRA_MESSAGE这个值。

一个Intent可以携带一些键值对这种数据,我们称之为extras.我们使用  putExtra() 函数来存储要携带的键值对,第一个参数是这个键值对的名字,第二个参数是这个对于的数值。

为了让第二个activity可以一句键值对的名称来获取对应的值,那我们需要把EXTRA_MESSAGE设置一个公有的静态常量。我们可以在MainAcitivty里面添加它、

public class MainActivityextends Activity {    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";    ...}


做好的办法是使用包名作为你的这中键值对名称的前缀,这样可以确保这个名称的唯一性,防止你的APP需要和其他的APP进行数据交互是产生共名的问题。 

启动另外一个Activitiy

使用startActivity函数来启动一个activity,把你的intent作为参数传递给它。系统接受到这个请求后,会其启动intent指定的activity.现在我们这个函数的代码应该是下面这个样子: 

/** Called when the user clicks the Send button */public void sendMessage(View view) {    Intent intent = new Intent(this, DisplayMessageActivity.class);    EditText editText = (EditText) findViewById(R.id.edit_message);    String message = editText.getText().toString();    intent.putExtra(EXTRA_MESSAGE, message);    startActivity(intent);}


那么现在我们来创建一下DisplayMessageActivity类。

创建第二个Acitivity类:DisplayMessageActivity

1.点击New 

2.在出现的窗口中选择Android,选择Android Acitivty,点击下一步

3.选择BlankActivity,点击下一步

4.填充这个表格属性:如图所示

完成后,点击Finish

这个时候我们已经在创建了DisplayMessageActivity.java文件,打开它,我们会发现里面已经自己生产了一些函数。

实现了onCreate()函数

实现了onCreateOptionMenu函数,但是我们用不到在这里,删除掉即可。

实现了onOptionsItemSelect函数,处理导航按键(action bar)按下的这个动作。保留即可。

因为Actionbar仅仅在HONEYCOMA(API版本号11)以及之上的android设备才支持,所以你必须在getActionBar()这个函数这里添加一个来判断当前允许的android版本号的条件。此外,你必须添加标示:@SuppressLint("NewApi")这个标签在调用getActionBar的onCreate函数上,防止lint错误。这里就知道这个是一种错误就OK,后面我们会讲解,就暂时理解为android的一种检测工具,检测android代码潜在的错误。

现在我们的这个DisplayMessageActivit.java应该已经是下面这个样子了:

public class DisplayMessageActivityextends Activity {     @SuppressLint("NewApi")    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_display_message);         // Make sure we're running on Honeycomb or higher to use ActionBar APIs        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {            // Show the Up button in the action bar.            getActionBar().setDisplayHomeAsUpEnabled(true);        }    }     @Override    public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()) {        case android.R.id.home:            NavUtils.navigateUpFromSameTask(this);            return true;        }        return super.onOptionsItemSelected(item);    }}


这里注意:每个Activity的子类,必须要实现onCreate函数,这里是eclipse自动为我们生成了,系统调用这个函数来创建我们这个Activity的实例。 

在这个函数里,你还有一个要必须来调用执行的函数是:setContentView()方法,这个方法来设置这个activity的显示界面。

还有一些对这个activity的初始化动作,也在这个函数里面执行,但是记住:耗时的初始化动作在这里执行的时候,要开启独立的线程来处理,否则会导致程序无响应。

现在这里如果是非eclipse创建的,应该会报错,因为你的项目并没有一个名字叫做activity_display_message的布局文件,没关系,先不管,因为我们并没有打算用布局文件来设置界面,我们只是想要显示一段文字而已,我们用代码简单的创建一个View,用它来做参数就可以了,把这个View作为显示界面。 但是我们这里不会报错,因为eclipse已经为我们创建了这个文件,但是我们依然没打算用它

增加一个T标题字符串

在这里,eclipse自动为我们添加了相应string资源,如果开发工具没有自动添加,那就需要我们手动去添加了:

<resources>    ...    <string name="title_activity_display_message">My Message</string></resources>


添加这个Acitivity到Manifest文件,上面我们说过,Manifest文件里面声明了我们APP的组成成员,包括所有的activity

我们使用eclipse创建的时候,它已经默认添加了,不然的话,需要手动去添加

<application ... >    ...    <activity        android:name="com.example.myfirstapp.DisplayMessageActivity"        android:label="@string/title_activity_display_message"        android:parentActivityName="com.example.myfirstapp.MainActivity" >        <meta-data            android:name="android.support.PARENT_ACTIVITY"            android:value="com.example.myfirstapp.MainActivity" />    </activity></application>


android:parentActivityName 指明了在逻辑上DisplayMessageActivity的父Activity.系统利用这个值来完成默认的导航动作,比方说返回上级的导航(仅仅才4.1系统或者之后的系统.对于之前的版本,我们可以使用 Support Library ,添加一个<meta-data>元素,像上面所写。当我们使用eclipse默认activity模板的时候,Support Library是默认添加的,否则就需要手动去添加了。这个库主要是用来支持旧的版本。有时间再细说这个东西,大家也可以去网上自己查

接受intent传递过来的信息 

每个Acitivity默认的关联着一个Intent,不管我们是否使用到它。你可以使用getIntent()函数来获取启动你当前Activity的那个Intent,然后就可以获取到当时存储到这个启动你这个Acitivty的Intent里面的信息。
在这里,我们在onCreate抽取这个信息。

Intent intent = getIntent();String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);


显示信息  

为了显示这个信息,我们需要创建一个TextView来显示,使用TextView的setText方法来设置它的内容,然后用setContentView把这个TextView作为当前activity的根视图显示到屏幕  

完善onCreate该函数如下:

@Overridepublic void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);     // Get the message from the intent    Intent intent = getIntent();    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);     // Create the text view    TextView textView = new TextView(this);    textView.setTextSize(40);    textView.setText(message);     // Set the text view as the activity layout    setContentView(textView);}


这个时候运行我们的APP,点击按钮,我们启动的第二个activity会显示一个activity编辑框里面的内容。

到这里,我们的第一个应用程序就创建完成了。

1.我们学会了基本的UI

2.我们学会了一个Activity的重要函数onCreate

3.我们学会了如何用Intent启动另外一个Acitivity,并且怎么把数据传过去

4.我们学会了如何用布局文件,或者代码,来创建一个activity的用户界面显示,并利用setContentView 来设置

5.我们学会了如果简单的添加资源

6.我们学会了一个项目的创建,和单个activity的创建

7.我们学会了导航按键的创建

8.我们学会了manifest文件如果填写里面的相关属性,比方说sdk版本号,activity的声明,导航的声明属性等等

 有问题欢迎大家批评,指正,不是专业写手,多多谅解,不懂的地方大家可以对着英文看下。共同进步!

 

原创粉丝点击