新聞中心
Android簡明開發(fā)教程八說明了程序需要實(shí)現(xiàn)的功能,就可以創(chuàng)建Android項(xiàng)目了。請參見Android簡明開發(fā)教程三:第一個應(yīng)用Hello World ,創(chuàng)建一個新項(xiàng)目AndroidGraphics2DTutorial。今天先介紹創(chuàng)建的程序的框架。然后再項(xiàng)目添加如下類定義:

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)浦城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了成百上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
添加第三方庫文件
AndroidGraphics2DTutorial調(diào)用了引路蜂二維圖形庫,因此需要在項(xiàng)目中添加第三方庫引用 (libgisengine.jar),打開Android屬性窗口,添加External JARs。把libgisengine.jar 添加到項(xiàng)目中,引路蜂二維圖形庫是引路蜂地圖開發(fā)包的一部分。添加庫引用可以參見 Android引路蜂地圖開發(fā)示例:基本知識。
類說明,下表列出了項(xiàng)目中定義的類的簡要說明:
| 類 | 說明 |
| AndroidGraphics2DApplication | 應(yīng)用程序類,為Application子類 |
| AndroidGraphics2DTutorial | 主Activity,為ListActivity子類,用于列出其它示例。 |
| GuidebeeGraphics2DSurfaceView | SurfaceView子類用于顯示圖形 |
| GuidebeeGraphics2DView | View子類用于顯示圖形,與GuidebeeGraphics2DSurfaceView 功能一樣,在程序中可以互換。 |
| SharedGraphics2DInstance | 定義了共享類對象,主要包含Graphics2D |
| Graphics2DActivity | Activity子類,為所有示例基類,定義一些所有示例共享的類變量和函數(shù)。 |
| Bezier,Brush,Colors,F(xiàn)ont,Image,Path,Pen,Shape,Transform | 為Graphics2DActivity的子類,為二維圖形演示各個功能 |
AndroidGraphics2DApplication ,其實(shí)在一般的Android應(yīng)用中,無需定義Application的派生類,比如在Hello World中就沒有定義,當(dāng)是如果想在多個Activity中共享變量,或是想初始化一些全局變量,可以定義Application的派生類,然后可以在 Activity或Service中調(diào)用 getApplication() 或 getApplicationContext()來取得Application 對象,可以訪問定義在Application中的一些共享變量。在這個例子中AndroidGraphics2DApplication嚴(yán)格些也可不定 義,為了說明問題,還是定義了用來初始化Graphics2D實(shí)例,Graphics2D實(shí)例可以被所有示例Activity,如Colors,F(xiàn)ont 訪問。如果定義了Application的派生類,就需要在AndroidManifest.xml中說明Application派生類的位置。
- package=”com.pstreets.graphics2d”
- android:versionCode=”1″
- android:versionName=”1.0″>
- android:icon=”@drawable/icon” android:label=”@string/app_name”>
- android:label=”@string/app_name”>
- …
Application 可以重載 onCreate()和 onTerminate() ,onCreate()在應(yīng)用啟動時執(zhí)行一次,onTerminate()在應(yīng)用推出執(zhí)行一次。 AndroidGraphics2DApplication 的onCreate() 中初始化Graphics2D實(shí)例:
- 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);
- ...
GuidebeeGraphics2DSurfaceView 和 GuidebeeGraphics2DView 分別為SurfaceView 和View的子類,都可以用來顯示圖形結(jié)果。在程序中可以互換。
- package com.pstreets.graphics2d;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.util.AttributeSet;
- import android.view.View;
- public class GuidebeeGraphics2DView extends View {
- public GuidebeeGraphics2DView(Context context, AttributeSet attrs,
- int defStyle) {
- super(context, attrs, defStyle);
- }
- public GuidebeeGraphics2DView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- public GuidebeeGraphics2DView(Context context) {
- super(context);
- }
- public void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- canvas.drawColor(0xFFFFFFFF);
- if (SharedGraphics2DInstance.graphics2d != null) {
- int offsetX = (getWidth() -
- SharedGraphics2DInstance.CANVAS_WIDTH) / 2;
- int offsetY = (getHeight()
- - SharedGraphics2DInstance.CANVAS_HEIGHT) / 2;
- canvas.drawBitmap(SharedGraphics2DInstance.graphics2d.getRGB(), 0,
- SharedGraphics2DInstance.CANVAS_WIDTH,
- offsetX, offsetY,
- SharedGraphics2DInstance.CANVAS_WIDTH,
- SharedGraphics2DInstance.CANVAS_HEIGHT,
- true, null);
- }
- }
- }
- package com.pstreets.graphics2d;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.util.AttributeSet;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- public class GuidebeeGraphics2DSurfaceView extends
- SurfaceView implements SurfaceHolder.Callback {
- SurfaceHolder holder;
- private void initHolder() {
- holder = this.getHolder();
- holder.addCallback(this);
- }
- public GuidebeeGraphics2DSurfaceView(Context context,
- AttributeSet attrs,
- int defStyle) {
- super(context, attrs, defStyle);
- initHolder();
- }
- public GuidebeeGraphics2DSurfaceView(Context context,
- AttributeSet attrs) {
- super(context, attrs);
- initHolder();
- }
- public GuidebeeGraphics2DSurfaceView(Context context) {
- super(context);
- initHolder();
- }
- @Override
- public void surfaceChanged(SurfaceHolder arg0,
- int arg1, int arg2, int arg3) {
- // TODO Auto-generated method stub
- }
- @Override public void surfaceCreated(SurfaceHolder arg0) {
- new Thread(new MyThread()).start();
- }
- @Override
- public void surfaceDestroyed(SurfaceHolder arg0) {
- // TODO Auto-generated method stub
- }
- class MyThread implements Runnable {
- @Override
- public void run() {
- Canvas canvas = holder.lockCanvas(null);
- canvas.drawColor(0xFFFFFFFF);
- if (SharedGraphics2DInstance.graphics2d != null) {
- int offsetX = (getWidth() -
- SharedGraphics2DInstance.CANVAS_WIDTH) / 2;
- int offsetY = (getHeight() -
- SharedGraphics2DInstance.CANVAS_HEIGHT) / 2;
- canvas.drawBitmap
- (SharedGraphics2DInstance.graphics2d.getRGB(),
- 0, SharedGraphics2DInstance.CANVAS_WIDTH,
- offsetX,
- offsetY,
- SharedGraphics2DInstance.CANVAS_WIDTH,
- SharedGraphics2DInstance.CANVAS_HEIGHT,
- true, null);
- }
- holder.unlockCanvasAndPost(canvas);
- }
- }
- }
SurfaceView 動態(tài)顯示性能比較好,一般用在游戲畫面的顯示。圖形的繪制可以在單獨(dú)的線程中完成。
修改 res\layout\main.xml
- android:orientation=”vertical”
- android:layout_width=”fill_parent”
- android:layout_height=”fill_parent”
- >
- android:id=”@+id/graphics2dview”
- android:layout_width=”fill_parent”
- android:layout_height=”fill_parent” />
如果使用 GuidebeeGraphics2DView作為顯示,則只需將上面紅色部分該成GuidebeeGraphics2DView即可。
為了能在AndroidGraphics2DTutorial 列表中列出,對項(xiàng)目中的示例Activity的都定義下列intent-filter
這樣就完成了程序框架的設(shè)計(jì),起始界面如下:
當(dāng)前名稱:Android開發(fā)速成簡潔教程九:創(chuàng)建應(yīng)用程序框架
轉(zhuǎn)載源于:http://m.fisionsoft.com.cn/article/dhjspes.html


咨詢
建站咨詢
