Android学习1
废话不多说,下面看如何开始一个Android项目编程。
首先先建立一个android项目,然后,步骤来了。
Step 1.在AndroidManifest.xml对参数进行初始化。
1: <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2: package="com.microjobsinc.mjandroid" android:versionCode="1"
3: android:versionName="1.0">
4: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
5: <uses-permission android:name=
6: "android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
7: <uses-permission android:name="android.permission.CALL_PHONE" />
8: <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
9: <uses-permission android:name="android.permission.INTERNET" />
10:
11: <application android:icon="@drawable/icon2">
12: <uses-library android:name="com.google.android.maps" />
13: <activity android:name=".MicroJobs" android:label="@string/app_name">
14: <intent-filter>
15: <action android:name="android.intent.action.MAIN" />
16: <category android:name="android.intent.category.LAUNCHER" />
17: </intent-filter>
18: </activity>
解释说明:
application节点(11行)里的第1个activity(13行)就是你程序的入口点。
package="com.microjobsinc.mjandroid"
就是程序包的名称。
android:versionCode
随着你程序的更新而自动的增长。
android:versionName
由你决定这个name是什么内容,它是一个字符串,是给用户看的,比如你可以定为“1.1.1”。
<uses-permission android:name=...
因为你的Application需要使用android的一些特性来完成功能,比如要连接internet,gps。。那么这里声明的就是用户的许可开关。
(Android里有很多内置的许可,可以去查找“android.Manifest.permission”的文档,同时你也可以自定义许可。)文中的几个特性说明如下:
ACCESS_FINE_LOCATION:从GPS获得你的位置信息。
ACCESS_LOCATION_EXTRA_COMMANDS:所有的位置命令。
CALL_PHONE:可通电话。
ACCESS_MOCK_LOCATION:运行模拟器的时候获得一个模拟的位置。
INTERNET:连接互联网。
android:icon="@drawable/icon2"
drawable文件夹下面有icon2这个图片。
下面把注意力转到第一个活动(主活动)
1: <activity android:name=".MicroJobs" android:label="@string/app_name">
2:
首先对这个主活动定义一些属性:
android:name
活动的名称,他的全名是packageName+ActivityName,例子里的全程就是com.microjobsinc.mjandroid.MicroJobs,记住(.)不可缺少。
android:label
这个Lable就是当活动显示在屏幕的时候,在屏幕的顶部显示的内容。
然后声明一个意向过滤器(intent filter),告诉android什么时候应该运行这个活动(activity):
1: <intent-filter>
2: <action android:name="android.intent.action.MAIN" />
3: <category android:name="android.intent.category.LAUNCHER" />
4: </intent-filter>
action
比如,Android正在尝试启动一个App,于是它会先寻找一个特定的活动,这个活动一定是已经准备好解析MAIN的方法了(即是它的名称为android.intent.action.MAIN的)。
任何一个能够启动的app都需要这样一个带有action为MAIN活动。
category
指明category就是为了在UI上显示一个快捷方式来启动app。
Step 2.java文件里的初始化。
MicroJobs.java作为程序的入口,下面分析MicroJob.java代码。
1: /**
2: * MicroJobs
3: */
4: public class MicroJobs extends MapActivity { }
绝大多数的activity是要从Activity继承,本代码中从MapActivity继承是因为我们想使用android内部集成的强大的地图功能,同时也因为我们绝大部分的操作时在地图上进行的。
我们初始化的内容,需要放置在onCreate方法里,此方法将在app启动时被调用。
如下图所示:
1: MapView mvMap;
2: MicroJobsDatabase db;
3: MyLocationOverlay mMyLocationOverlay;
4: double latitude, longitude;
5:
6: /**
7: * Called when the activity is first created.
8: *
9: * @see com.google.android.maps.MapActivity#onCreate(android.os.Bundle)
10: */
11: @Override
12: public void onCreate(Bundle savedInstanceState) {
13: super.onCreate(savedInstanceState);
14:
15: setContentView(R.layout.main);
首先要注意的是,Oncreate方法接受了一个参数,其类型为Bundle.然后调用了基类的OnCreate方法。但是为什么要传个Bundle类型的数据进去?这个Bundle是什么?
Bundle是android用来在活动之间传送结构数据的机制,本质上就是一些key-object的对。这里的代码没有使用任何在Bundle里的资源,但是仍然使用了基类的onCreate.
下一行,setContentView告诉android我们想在屏幕上展示R.layout.main.java的信息。这个“R”是自动生成的。