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派生类的位置。
- 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()在应用启动时执行一次,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);
- ...
GuidebeeGraphics2DSurfaceView 和 GuidebeeGraphics2DView 分别为SurfaceView 和View的子类,都可以用来显示图形结果。在程序中可以互换。
- 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 动态显示性能比较好,一般用在游戏画面的显示。图形的绘制可以在单独的线程中完成。
修改 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 列表中列出,对项目中的示例Activity的都定义下列intent-filter
这样就完成了程序框架的设计,起始界面如下:
文章名称:Android开发速成简洁教程九:创建应用程序框架
文章地址:http://www.shufengxianlan.com/qtweb/news2/246202.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联