环境已经配置好了,按照我的思路,无论如何也得先把最简单的例子跑一遍,分析一下结构及源码,才去做其他的。做为开发人员,可能我的习惯并不算太好,因为我不是很关注它底层如何实现,我更关注的是,如何开发出能运行的应用程序,至少,在刚开始接触的时候是这样的。或许在开发了一段时间后,我会去研究实现原理……
二、简单的应用程序 Hello Android!
虽然这个程序非常简单,但也算是非常经典的程序,就像刚学语言时写的Hello World一样,有种亲切感。麻雀虽小,五脏俱全,让我们来建立这个简单的麻雀吧。
2.1 建立android工程
之前我也提过,我会以winXP+eclipse来开发。
打开eclipse,新建一个android工程,如图
这里我选择了Google APIs,因为在之前(笔记一里有提到)已经建立了一个Google APIs的AVD了,所以我这里就用它的sdk。Application name是可以不写的,名字都是自己取的哦。然后要注意这里的Package name,遵循java规范,要求至少有两层,也就是说,最少要有一个. 接下来这个Create Activity勾上,就是让插件自动帮我们创建Activity的子类,名字就是后面写的HelloAndroid。
点击finish,一个android工程就创建完了。
2.2 结构目录
工程创建完毕后,我们看一下创建好的结构目录:
这里,src目录下面就是我们开发主要要用的源码。gen目录下的R.java大家如果没有必要不要去修改它,因为它是工程所有资源文件的一个索引,系统会自动帮我们生成,以后有什么改变,系统会自动修改这个文件哦。好奇的朋友们就打开看看,都是些内部静态类和静态的int,所以不去管它,至少现阶段我是不会去理会它的。
然后是res目录,这里面就是所有的资源文件了,drawable--看到下面的图片了吧,知道放什么的了哦?layout--从字面上来看就知道是放布局文件的,里面是一个xml文件,那么很明显,android应用程序是可以使用xml布局的。values--顾名思义,放值的,放什么值呢,下面再解释。
2.3 编写代码
打开src下面的那个HelloAndroid.java文件,我们开始写代码了。
刚打开,我们看到就那么一点代码:
package com.test;
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);
}
}
并且很显然,是继承自Activity这个类。其实这个类比较重要的,android里面,一个现实在你面前的东东,就是一个activity……等我们以后再讨论吧,先把HA(Hello Android)做出来。
我们改写唯一的重写的 onCreate方法。代码如下:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textview = new TextView(this);
textview.setText("Hello Android!! HaHa, I'm Here");
setContentView(textview);
}
这里系统会自动给我们导入1个类:
import android.widget.TextView;
如果没有自动导入,可以按下eclipse的快捷键Ctrl+shift+o
2.4 运行程序
然后,右键点击工程,选择Run as--> Android Application就会启动AVG(没有建立的朋友这个时候会有提示让你建立,就相应地建立对应sdk版本的avg就可以了)
稍等一会儿,avg启动貌似有点慢的,开始似乎android_的字样,然后是Android的闪动图标,然后进入主界面,再然后自动进入了HA界面……
大家看到了,屏幕上就出现了想要的东西了吧。经典的程序在初学的时候还是很有用的。
2.5 修改代码
刚才运行的代码“很成功”。但是每个开发人员都不会提倡用这种编写代码的方式。因为它把逻辑层和展现层放在了一起,现在我们没有用到逻辑的东西,所以只需要View层即可。那么,我们的HA完全可以用布局来实现哦。
把HelloAndroid.java代码改回来,下面我来玩xml的布局,并产生同样的效果!
打开res中layout目录下的main.xml文件,会发现其中的代码也是超简单的(可能有些朋友出现的是可视化界面,请点击下面的main.xml标签切换到代码视图):
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
给大家稍做解释:
LinearLayout 是一种布局格式。 xmlns:android是指明命名空间,非必须,但第一个节点必须写明
android:orientation指出了LinearLayout的布局格式
android:layout_width="fill_parent" 说明该元素的宽度填满整个父元素
android:layout_height="wrap_content" 说明该元素的高度以把自己内部的全部包住就好了
TextView 就是我们前面代码里面写过的那个,它是一个文字展现的元素。
android:text="@string/hello" 这个才是比较关键的,它指明了要引用values目录下Strings.xml文件中name="hello"的string节点的值。
当然我们直接在里面写android:text="Hello Android!HaHa"也是可以的,那就直接显示Hello Android!HaHa了。
好,既然系统帮我们都做好了代码,那么我们直接去values目录下的Strings.xml中看看吧
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, HelloAndroid!</string> <string name="app_name">Hello Android</string> </resources>
我们改改name="hello"的值,顺便改改app_name的值看看有什么效果:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, We R Chinese!</string> <string name="app_name">Hello Android - I changed it</string> </resources>
保存后启动avg模拟器,显示效果:
可以很明显地看到哪些地方有变化了哦?
如此,我们仅仅使用布局就实现了这个效果。
2.6 深入一点点
一般的教程可能到上面就结束了,但我们是富于创新地chinese,所以即使是初学,也要搞点花头精……
那么我们再来修改下吧,先在main.xml中给TextView加个id上去,这样以后我们就可以认识它了。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/tv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
然后我们再修改java文件的onCreate方法
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView tv = (TextView) findViewById(R.id.tv);
tv.setText("Now I Change It!");
}
保存后,再启动avg看看效果(注意,我可没改String里面的东西哟):
呵呵,简单且有些无聊……
今天笔记就做到这吧,其实我还在这个基础上有写了很多好玩的逻辑,大家自己发挥想象力创造里咯。
好像谁说过要激发强大的民族创造力,我来激发一下……哈哈