成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android開發速成簡潔教程九:創建應用程序框架

移動開發 Android
Android簡明開發教程八說明了程序需要實現的功能,就可以創建Android項目了。請參見Android簡明開發教程三:第一個應用Hello World ,創建一個新項目AndroidGraphics2DTutorial。今天先介紹創建的程序的框架。

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派生類的位置。

  1. <manifest xmlns:android=”http://schemas.android.com/apk/res/android” 
  2.       package=”com.pstreets.graphics2d” 
  3.       android:versionCode=”1″ 
  4.       android:versionName=”1.0″> 
  5.     <application android:name=”AndroidGraphics2DApplication” 
  6.          android:icon=”@drawable/icon” android:label=”@string/app_name”> 
  7.         <activity android:name=”.AndroidGraphics2DTutorial” 
  8.                   android:label=”@string/app_name”> 
  9.             <intent-filter> 
  10.                 <action android:name=”android.intent.action.MAIN” /> 
  11.                 <category android:name=”android.intent.category.LAUNCHER” /> 
  12.             </intent-filter> 
  13.         </activity> 
  14.   … 
  15.     </application> 
  16.     <uses-sdk android:minSdkVersion=”4″ /> 
  17.  
  18. </manifest>    

Application 可以重載 onCreate()和 onTerminate() ,onCreate()在應用啟動時執行一次,onTerminate()在應用推出執行一次。 AndroidGraphics2DApplication 的onCreate() 中初始化Graphics2D實例:

  1. public void onCreate() { 
  2.       SharedGraphics2DInstance.graphics2d= 
  3.           new Graphics2D(SharedGraphics2DInstance.CANVAS_WIDTH, 
  4.             SharedGraphics2DInstance.CANVAS_HEIGHT); 
  5.      } 

AndroidGraphics2DTutorial 為ListActivity子類,直接從AndroidManifest.xml中讀取Intent-Filter Catetory 為 com.pstreets.graphics2d.SAMPLE_CODE 的所有Activity。

  1. private static final String SAMPLE_CATEGORY="com.pstreets.graphics2d.SAMPLE_CODE";    
  2.     Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
  3.     mainIntent.addCategory(SAMPLE_CATEGORY); 
  4.     ... 

GuidebeeGraphics2DSurfaceView 和 GuidebeeGraphics2DView 分別為SurfaceView 和View的子類,都可以用來顯示圖形結果。在程序中可以互換。

  1. package com.pstreets.graphics2d;      
  2.     import android.content.Context; 
  3.     import android.graphics.Canvas; 
  4.     import android.util.AttributeSet; 
  5.     import android.view.View;     
  6.     public class GuidebeeGraphics2DView extends View {    
  7.      public GuidebeeGraphics2DView(Context context, AttributeSet attrs, 
  8.        int defStyle) { 
  9.       super(context, attrs, defStyle); 
  10.          }    
  11.      public GuidebeeGraphics2DView(Context context, AttributeSet attrs) { 
  12.       super(context, attrs);      
  13.      }  
  14.      public GuidebeeGraphics2DView(Context context) { 
  15.       super(context); 
  16.       
  17.      }    
  18.      public void onDraw(Canvas canvas) { 
  19.       super.onDraw(canvas); 
  20.       canvas.drawColor(0xFFFFFFFF); 
  21.       if (SharedGraphics2DInstance.graphics2d != null) { 
  22.        int offsetX = (getWidth() - 
  23.          SharedGraphics2DInstance.CANVAS_WIDTH) / 2
  24.        int offsetY = (getHeight() 
  25.          - SharedGraphics2DInstance.CANVAS_HEIGHT) / 2
  26.        canvas.drawBitmap(SharedGraphics2DInstance.graphics2d.getRGB(), 0
  27.          SharedGraphics2DInstance.CANVAS_WIDTH, 
  28.          offsetX, offsetY, 
  29.          SharedGraphics2DInstance.CANVAS_WIDTH, 
  30.          SharedGraphics2DInstance.CANVAS_HEIGHT, 
  31.          truenull); 
  32.       } 
  33.      }    
  34.     }
  1. package com.pstreets.graphics2d;      
  2.     import android.content.Context; 
  3.     import android.graphics.Canvas; 
  4.     import android.util.AttributeSet; 
  5.     import android.view.SurfaceHolder; 
  6.     import android.view.SurfaceView;      
  7.     public class GuidebeeGraphics2DSurfaceView extends 
  8.        SurfaceView implements SurfaceHolder.Callback {  
  9.      SurfaceHolder holder;    
  10.      private void initHolder() { 
  11.       holder = this.getHolder(); 
  12.       holder.addCallback(this); 
  13.      }    
  14.      public GuidebeeGraphics2DSurfaceView(Context context, 
  15.        AttributeSet attrs, 
  16.        int defStyle) { 
  17.       super(context, attrs, defStyle); 
  18.       initHolder();  
  19.      }    
  20.      public GuidebeeGraphics2DSurfaceView(Context context, 
  21.        AttributeSet attrs) { 
  22.       super(context, attrs); 
  23.       initHolder();   
  24.      }    
  25.      public GuidebeeGraphics2DSurfaceView(Context context) { 
  26.       super(context); 
  27.       initHolder();   
  28.      }    
  29.      @Override 
  30.      public void surfaceChanged(SurfaceHolder arg0, 
  31.        int arg1, int arg2, int arg3) { 
  32.       // TODO Auto-generated method stub 
  33.      }    
  34.      @Override   public void surfaceCreated(SurfaceHolder arg0) { 
  35.       new Thread(new MyThread()).start();     
  36.      }    
  37.      @Override 
  38.      public void surfaceDestroyed(SurfaceHolder arg0) { 
  39.       // TODO Auto-generated method stub      
  40.      }    
  41.      class MyThread implements Runnable {     
  42.       @Override 
  43.       public void run() { 
  44.        Canvas canvas = holder.lockCanvas(null); 
  45.        canvas.drawColor(0xFFFFFFFF); 
  46.        if (SharedGraphics2DInstance.graphics2d != null) { 
  47.         int offsetX = (getWidth() - 
  48.           SharedGraphics2DInstance.CANVAS_WIDTH) / 2
  49.         int offsetY = (getHeight() - 
  50.           SharedGraphics2DInstance.CANVAS_HEIGHT) / 2
  51.         canvas.drawBitmap 
  52.           (SharedGraphics2DInstance.graphics2d.getRGB(), 
  53.           0, SharedGraphics2DInstance.CANVAS_WIDTH, 
  54.           offsetX, 
  55.           offsetY, 
  56.           SharedGraphics2DInstance.CANVAS_WIDTH, 
  57.           SharedGraphics2DInstance.CANVAS_HEIGHT, 
  58.           truenull); 
  59.        } 
  60.        holder.unlockCanvasAndPost(canvas);    
  61.       }   
  62.      }    
  63.     } 

SurfaceView 動態顯示性能比較好,一般用在游戲畫面的顯示。圖形的繪制可以在單獨的線程中完成。

修改 res\layout\main.xml

  1. <?xml version=”1.0″ encoding=”utf-8″?> 
  2. <LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android” 
  3.     android:orientation=”vertical” 
  4.     android:layout_width=”fill_parent” 
  5.     android:layout_height=”fill_parent” 
  6.     > 
  7. <com.pstreets.graphics2d.GuidebeeGraphics2DSurfaceView 
  8.      android:id=”@+id/graphics2dview” 
  9.    
  10.      android:layout_width=”fill_parent” 
  11.      android:layout_height=”fill_parent” /> 
  12. </LinearLayout> 

如果使用 GuidebeeGraphics2DView作為顯示,則只需將上面紅色部分該成GuidebeeGraphics2DView即可。

為了能在AndroidGraphics2DTutorial 列表中列出,對項目中的示例Activity的都定義下列intent-filter

  1. <activity android:name=”.example.Colors” android:label=”@string/activity_colors”> 
  2.             <intent-filter> 
  3.                 <action android:name=”android.intent.action.MAIN” /> 
  4.                 <category android:name=”com.pstreets.graphics2d.SAMPLE_CODE” /> 
  5.             </intent-filter> 
  6.         </activity> 

這樣就完成了程序框架的設計,起始界面如下:

責任編輯:閆佳明 來源: imobilebbs
相關推薦

2013-12-26 15:10:08

Android開發應用和框架Linux 內核

2013-12-26 15:43:07

Android開發Android應用Activities

2013-12-27 16:06:10

Android開發Android應用發布應用

2013-12-26 15:34:19

Android開發Android應用基本概念

2013-12-26 15:18:09

Android開發安裝開發環境

2013-12-27 14:34:46

Android開發Android應用短信觸發示例

2013-12-27 14:05:22

Android開發Android應用Dialog

2013-12-27 14:16:43

Android開發Android應用線程

2013-12-26 16:59:12

Android開發Android應用數據綁定Data Bi

2013-12-27 12:51:44

Android開發Android應用引路蜂

2013-12-27 13:49:22

Android開發Android應用Button

2013-12-26 16:24:13

Android開發Android應用Intents

2013-12-27 13:27:05

Android開發Android應用RadioButton

2013-12-26 15:46:30

Android開發Android應用用戶界面設計

2013-12-26 15:25:15

Android開發安裝開發環境Hello World

2013-12-27 15:31:26

Android開發Android應用資源Resources

2022-09-27 15:16:42

開發Android應用程序

2013-12-26 17:08:36

Android開發Android應用自定義Adapter顯

2013-12-27 13:00:30

Android開發Android應用Context Men

2024-09-06 10:46:04

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕av亚洲精品一部二部 | 国产欧美日韩综合精品一 | 99热这里 | 日韩欧美一区二区三区在线播放 | 97国产精品视频人人做人人爱 | 日韩一区二区在线播放 | 狠狠操天天干 | 免费成人午夜 | 一级在线观看 | 在线观看日本高清二区 | 999久久久久久久 | 日韩a| 国产成人午夜高潮毛片 | 亚洲精品视频在线看 | 一区二区精品 | 久久国产精品一区二区 | 91亚洲一区 | 亚洲国产精品视频 | 美女一区| 一区二区三区国产精品 | 国产精品激情在线 | 亚洲国产成人精品久久 | 免费黄色在线 | 国产激情91久久精品导航 | 自拍偷拍av| 亚洲人成人一区二区在线观看 | 国产成人免费视频网站高清观看视频 | 青青草这里只有精品 | 亚洲成人一区 | 久草福利 | 欧美久久影院 | 国产成人综合网 | 精品国产一区二区三区日日嗨 | 亚洲一区二区三区免费在线观看 | 色综合色综合网色综合 | 欧美在线日韩 | 91动漫在线观看 | a级在线免费 | 97伦理电影网 | 伊人性伊人情综合网 | 国产精品视频免费看 |