关于用户事件的处理是比较复杂的一个部分,在上一篇过后,剩下的关于Audio,Graphics,FileIO的部分就显得比较简单了
首先来看AndroidFileIO,这里的File主要存在于2个地方,一个是SD卡上,另一个是assets文件夹中
public class AndroidFileIO implements FileIO {
AssetManager assets;
String externalStoragePath;
public AndroidFileIO(AssetManager assets){
this.assets=assets;
this.externalStoragePath=Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator;
}
@Override
public InputStream readAsset(String fileName) throws IOException {
return assets.open(fileName);
}
@Override
public InputStream readFile(String fileName) throws IOException {
return new FileInputStream(externalStoragePath+fileName);
}
@Override
public OutputStream writeFile(String fileName) throws IOException {
return new FileOutputStream(externalStoragePath+fileName);
}
}
再看AndroidGraphics的实现 主要关系到2个类,AndroidGraphics和AndroidPixmap,他们分别是之前给出抽象中Graphics和Pixmap的实现
public class AndroidPixmap implements Pixmap {
Bitmap bitmap;
PixmapFormat format;
public AndroidPixmap(Bitmap bitmap, PixmapFormat format){
this.bitmap=bitmap;
this.format=format;
}
@Override
public void dispose() {
bitmap.recycle();
}
@Override
public PixmapFormat getFormat() {
return format;
}
@Override
public int getWidth() {
return bitmap.getWidth();
}
@Override
public int getHeight() {
return bitmap.getHeight();
}
}
public class AndroidGraphics implements Graphics {
AssetManager assets;
Bitmap frameBuffer;
Canvas canvas;
Paint paint;
Rect srcRect = new Rect();
Rect dstRect = new Rect();
public AndroidGraphics(AssetManager assets, Bitmap frameBuffer) {
this.assets = assets;
this.frameBuffer = frameBuffer;
canvas = new Canvas(frameBuffer);
paint = new Paint();
}
@Override
public void clear(int color) {
canvas.drawRGB((color & 0xff0000) >> 16, (color & 0xff00) >> 8,
(color & 0xff));
}
@Override
public void drawLine(int x, int y, int x2, int y2, int color) {
paint.setColor(color);
canvas.drawLine(x, y, x2, y2, paint);
}
@Override
public void drawPixel(int x, int y, int color) {
paint.setColor(color);
canvas.drawPoint(x, y, paint);
}
@Override
public void drawPixmap(Pixmap pixmap, int x, int y, int srcX, int srcY,
int srcWidth, int srcHeight) {
srcRect.left=srcX;
srcRect.top=srcY;
srcRect.right=srcX+srcWidth-1;
srcRect.bottom=srcY+srcHeight-1;
dstRect.left=x;
dstRect.top=y;
dstRect.right=x+srcWidth-1;
dstRect.bottom=y+srcHeight-1;
canvas.drawBitmap(((AndroidPixmap)pixmap).bitmap, srcRect, dstRect, paint);
}
@Override
public void drawPixmap(Pixmap pixmap, int x, int y) {
canvas.drawBitmap(((AndroidPixmap)pixmap).bitmap, x, y, paint);
}
@Override
public void drawRect(int x, int y, int width, int height, int color) {
paint.setColor(color);
paint.setStyle(Style.FILL);
canvas.drawRect(x, y, x + width - 1, y + height - 1, paint);
}
@Override
public int getHeight() {
return frameBuffer.getHeight();
}
@Override
public int getWidth() {
return frameBuffer.getWidth();
}
@Override
public Pixmap newPixmap(String fileName, PixmapFormat format) {
Config config = null;
if (format == PixmapFormat.RGB565) {
config = Config.RGB_565;
} else if (format == PixmapFormat.ARGB84444) {
config = Config.ARGB_4444;
} else {
config = Config.ARGB_8888;
}
Options options = new Options();
options.inPreferredConfig = config;
InputStream in = null;
Bitmap bitmap = null;
try {
in = assets.open(fileName);
bitmap = BitmapFactory.decodeStream(in);
if (bitmap == null) {
throw new RuntimeException("Couldn't load bitmap from asset '"
+ fileName + "'");
}
} catch (IOException e) {
throw new RuntimeException("Couldn't load bitmap from asset '"
+ fileName + "'");
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
}
}
}
if (bitmap.getConfig() == Config.RGB_565) {
format = PixmapFormat.RGB565;
} else if (bitmap.getConfig() == Config.ARGB_4444) {
format = PixmapFormat.ARGB84444;
} else {
format = PixmapFormat.ARGB8888;
}
return new AndroidPixmap(bitmap, format);
}
}
分享到:
相关推荐
《Beginning Android Games》一书由Mario Zechner撰写,旨在为初学者提供全面的Android游戏开发指南。本书从Android平台的基础知识入手,逐步深入到游戏开发的各个环节,涵盖了从简单的2D游戏到复杂的3D游戏的开发...
《Beginning Android Games 2012》这本书是一本关于Android游戏开发的专业教程书籍,由Mario Zechner和Robert Green共同撰写。该书以Android智能手机和平板电脑的游戏应用程序开发为主题,针对的是那些对Android游戏...
- **书籍名称**:《Beginning Android Games》(Android游戏开发入门) - **作者**:Mario Zechner - **出版信息**:Apress出版社,2011年4月10日发行 - **ISBN**:1430230428 - **资源格式**:PDF - **语言**:英文...
《Beginning Android Games, 2nd Edition》是一本深入浅出的Android游戏开发指南,由Mario Zechner与Robert Green合著。本书旨在帮助读者构建针对Android智能手机和平板电脑的游戏应用程序,涵盖了从基础知识到高级...
### Apress.Beginning Android Games.2011 #### 知识点概览 - **Android游戏开发基础知识** - **Android SDK入门** - **游戏开发基础理论** - **OpenGL ES图形编程** - **2D与3D游戏编程技巧** - **Android游戏开发...
《Beginning Android Games, 第二版》是一本专注于Android游戏开发的权威图书,由Mario Zechner和Robert Green共同撰写。本书旨在为读者提供一个全面的游戏开发入门教程,涵盖了从基础的游戏设计概念到高级的编程...
### 关于《Beginning Android Games》的关键知识点 #### 一、书籍概述 本书是一本非常出色的Android游戏开发入门书籍,由Mario Zechner撰写。作者在书中深入浅出地介绍了从2D到3D游戏开发的基本原理和技术细节。...
- **书名**:《Beginning Android 4 Games Development》 - **作者**: Mario Zechner 和 Robert Green - **出版社**: Apress Media, L.L.C. - **出版日期**: 2011年 - **ISBN**: - 纸质版: 978-1-4302-3987-1 - ...
### 关于《Beginner Android Games》的知识点梳理 #### 一、引言与目标受众 - **书籍定位**:本书面向初学者,旨在教授如何在Android平台上开发游戏应用。 - **主要内容**:涵盖Android基础知识、音频及图形编程、...
### Android游戏开发基础:《Beginning.Android.Games》关键知识点概览 #### 一、书籍简介与目标受众 《Beginning.Android.Games》是一本专为初学者设计的经典Android游戏开发教程。作者Mario Zechner通过本书带领...
3. **Android系统架构**:理解Android系统的组件模型,如活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider),以及它们在游戏开发中的应用。 4. **OpenGL ES**...
《Apress.Beginning.Android.Games》是一本专为Android游戏开发者设计的详尽指南,由Mario Zechner撰写。本书不仅介绍了Android平台的基础知识,还深入探讨了游戏开发的各个方面,包括音频、图形编程、数学、物理...
- **图形音频输入**:演示如何使用Android的API实现图形渲染、音频处理和用户输入等功能。 - **2D与3D游戏开发**:通过实例教授如何基于Canvas API和OpenGL ES开发2D游戏;并介绍如何创建完整的3D游戏。 - **发布与...
安卓游戏框架android 游戏框架,基于kilobolt.com 上的教程,该教程本身基于《Beginning Android Games Development》(由Mario Zechner 和Robert Green 编写)。 目前,我直接基于教程进行此操作,但很快就会开始...
《Apress Beginning Android 4 Games Development 2011》是一本专为初学者设计的Android游戏开发指南,旨在帮助读者掌握使用Android平台创建游戏所需的技术和知识。这本书的出版年份是2011年,尽管Android系统已经...
- **"Beginning.Android.4.Games.Development.Dec.2011"**:该标题表明本书旨在为初学者提供Android 4游戏开发的基础知识。发布于2011年12月,反映了当时Android平台的发展状况及游戏开发的技术背景。 #### 描述...
开发者在创建这款游戏的过程中,参照了Mario Zechner所著的《 Beginning Android Games》这本书,这是一本非常权威且深入浅出的Android游戏开发指南,对于初学者和有经验的开发者来说都是宝贵的资源。 首先,让我们...