Android简明开发教程八说明了程序需要实现的功能,就可以创建Android项目了。请参见Android简明开发教程三:第一个应 用Hello World ,创建一个新项目AndroidGraphics2DTutorial。今天先介绍创建的程序的框架。然后再项目添加如下类定义:
添加第三方库文件
AndroidGraphics2DTutorial调用了引路蜂二维图形库,因此需要在项目中添加第三方库引用(libgisengine.jar),打开 Android属性窗口,添加External JARs。把libgisengine.jar 添加到项目中,引路蜂二维图形库是引路蜂地图开发包的一部分 。添加库引用可以参见 Android引路蜂地图开发示例:基本知识。
类说明,下表列出了项目中定义的类的简要说明:
类 | 说明 |
AndroidGraphics2DApplication | 应用程序类,为Application子类 |
AndroidGraphics2DTutorial | 主Activity,为ListActivity子类,用于列出其它示例。 |
GuidebeeGraphics2DSurfaceView | SurfaceView子类用于显示图形 |
GuidebeeGraphics2DView | View子类用于显示图形,与GuidebeeGraphics2DSurfaceView 功能一样,在程序中可以互换 。 |
SharedGraphics2DInstance | 定义了共享类对象,主要包含Graphics2D |
Graphics2DActivity | Activity子类,为所有示例基类,定义一些所有示例共享的类变量和函数。 |
Bezier,Brush,Colors,Font,Image,Path,Pen,Shape,Transform | 为Graphics2DActivity的子类,为二维图形演示各个功能 |
AndroidGraphics2DApplication ,其实在一般的Android应用中,无需定义Application的派生类,比如在Hello World中就 没有定义,当是如果想在多个Activity中共享变量,或是想初始化一些全局变量,可以定义Application的派生类,然后可以在 Activity或Service中调用 getApplication() 或 getApplicationContext()来取得Application 对象,可以访问定义在 Application中的一些共享变量。在这个例子中AndroidGraphics2DApplication严格些也可不定义,为了说明问题,还是定义了 用来初始化Graphics2D实例,Graphics2D实例可以被所有示例Activity,如Colors,Font访问。如果定义了Application的派生 类,就需要在AndroidManifest.xml中说明Application派生类的位置。
<manifest xmlns:android=”http://schemas.android.com/apk/res/android ”
package=”com.pstreets.graphics2d ”
android:versionCode=”1″
android:versionName=”1.0″>
<application android:name=”AndroidGraphics2DApplication ”
android:icon=”@drawable/icon” android:label=”@string/app_name”>
<activity android:name=”.AndroidGraphics2DTutorial”
android:label=”@string/app_name”>
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
</activity>
…
</application>
<uses-sdk android:minSdkVersion=”4″ />
</manifest>
Application 可以重载 onCreate()和 onTerminate() ,onCreate()在应用启动时执行一次,onTerminate()在应用推出执行 一次。AndroidGraphics2DApplication 的onCreate() 中初始化Graphics2D实例:
public void onCreate() {
SharedGraphics2DInstance.graphics2d=
new Graphics2D(SharedGraphics2DInstance.CANVAS_WIDTH,
SharedGraphics2DInstance.CANVAS_HEIGHT);
}
AndroidGraphics2DTutorial 为ListActivity子类,直接从AndroidManifest.xml中读取Intent-Filter Catetory 为 com.pstreets.graphics2d.SAMPLE_CODE 的所有Activity。
private static final String SAMPLE_CATEGORY= "com.pstreets.graphics2d.SAMPLE_CODE" ;
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null );
mainIntent.addCategory(SAMPLE_CATEGORY);
...