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的声明,导航的声明属性等等
有问题欢迎大家批评,指正,不是专业写手,多多谅解,不懂的地方大家可以对着英文看下。共同进步!
- Android开发之创建你的第一个应用(翻译自谷歌官方,原版翻译)
- Android官方教程翻译(1)——创建第一个Android应用
- django 1.8 官方文档翻译: 1-2-1 编写你的第一个Django应用,第1部分
- django 1.8 官方文档翻译: 1-2-2 编写你的第一个Django应用,第2部分
- django 1.8 官方文档翻译: 1-2-3 编写你的第一个Django应用,第3部分
- django 1.8 官方文档翻译: 1-2-4 编写你的第一个Django应用,第4部分
- django 1.8 官方文档翻译: 1-2-5 编写你的第一个Django应用,第5部分
- django 1.8 官方文档翻译: 1-2-6 编写你的第一个Django应用,第6部分
- Postman使用官方文档翻译--3创建第一个集合
- 【AKKA 官方文档翻译】第二部分:创建第一个actor
- [Andriod官方训练教程]创建你的第一个App之创建一个Android项目
- 【Android开发】Android Host详解(翻译自官方文档)
- 第一个SpringBoot应用-HelloWorld【原创翻译-翻译自官网用户指南】
- Cocos2d-js官方完整项目教程翻译:三、用Cocos2d-js制作你的第一个游戏场景
- 创建第一个Android开发工具自带的模拟器
- 你的第一个iphone程序(翻译)
- 【翻译】制作你的第一个HTML 5游戏
- 谷歌浏览器扩展程序开发教程之创建你的第一个扩展程序
- 升级php到5.3
- Java实现二维码QRCode的编码和解码
- C++与powerbuilder的数据类型转换
- C#对资源文件的操作
- 努力才能写意
- Android开发之创建你的第一个应用(翻译自谷歌官方,原版翻译)
- linux MISC 驱动模型分析
- 农历算法碉堡了
- Myeclipse 快捷键整理
- 我的架构经验小结(三)-- 深入三层架构
- BCB和Delphi添加Windows服务的描述性文字
- 执行存储过程--“为过程或函数指定了过多的参数”的错误 .
- linux 下查找文件或者内容常有命令
- Activity的生命周期