`

android游戏开发学习笔记五(学习书籍 Android游戏编程之从零开始)

阅读更多

/**
* 剪切动画+移动位图
*
* @author 岳振华
*
*/
public class ClipSurfaceView extends SurfaceView implements Callback, Runnable {
private SurfaceHolder sfh;
private int screenX, screenY;// 屏幕大小
private Thread thread;
private boolean flag;
private Paint paint, paint2;
private Canvas canvas;
private Bitmap fish, water;
private int currentFream = 0;
private float bmpX, bmpY;


public ClipSurfaceView(Context context) {
super(context);
sfh = this.getHolder();
sfh.addCallback(this);


paint = new Paint();
paint2 = new Paint();
paint.setColor(Color.RED);
paint2.setColor(Color.WHITE);
paint.setAntiAlias(true);
this.setFocusable(true);
fish = BitmapFactory.decodeResource(this.getResources(), R.drawable.fish);
water = BitmapFactory.decodeResource(this.getResources(), R.drawable.water);
}


@Override
public void surfaceCreated(SurfaceHolder holder) {
screenX = getWidth();
screenY = getHeight();


// 宽度刚好填满屏幕
bmpX = -water.getWidth() + screenX;
// 高度是屏幕高度-图片高度
bmpY = screenY - water.getHeight();


flag = true;
thread = new Thread(this);
thread.start();
}


@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {


}


@Override
public void surfaceDestroyed(SurfaceHolder holder) {
flag = false;
}


@SuppressWarnings("static-access")
@Override
public void run() {
while (flag) {
try {
// begin
long begin = System.currentTimeMillis();
draw();
logic();
// end
long end = System.currentTimeMillis();
if (end - begin < 50) {
thread.sleep(50 - (end - begin));
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}


}


/**
* 绘图
*/
private void draw() {
try {
canvas = sfh.lockCanvas();
if (null != canvas) {
canvas.drawColor(Color.WHITE);
// 设置可见区域的大小
canvas.save();
canvas.clipRect(0, 0, fish.getWidth() / 10, fish.getHeight());


// 绘制鱼
canvas.drawBitmap(fish, -currentFream * fish.getWidth() / 10, 0, paint);
canvas.restore();
// 绘制水
canvas.drawBitmap(water, bmpX, bmpY, paint2);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != canvas) {
sfh.unlockCanvasAndPost(canvas);
}
}
}


/**
* 游戏逻辑
*/
private void logic() {
currentFream++;
if (currentFream >= 10) {
currentFream = 0;
}
if (bmpX < 0) {
bmpX += 5;
} else {
bmpX = -water.getWidth() + screenX;
}


}


}

分享到:
评论

相关推荐

    Android开发学习笔记

    ### Android开发学习笔记 #### Button按钮的实现与交互 在Android开发中,`Button`控件是最常用的用户界面元素之一,用于触发特定的操作或事件。本文档将详细讲解如何创建并自定义一个简单的按钮,并设置点击事件...

    第一行代码 android学习笔记 完整版

    本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中系统地介绍了Android的基本概念和开发技术。 一、Android系统架构 Android系统架构是Android开发的基础,系统架构包括Linux Kernel、...

    Android开发学习笔记(整理)

    Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...

    Android学习笔记(十)——实现新闻列表

    【第一部分】历史文章: ...Android学习笔记(五)——Toast提示、Dialog对话框、Menu菜单 Android学习笔记(六)——自定义ListView布局+AsyncTask异步任务 Android学习笔记(七)——数据存储(共享参数Share

    Android 应用开发学习笔记(全,from hitwh)

    Android 应用开发学习笔记是一个详细的 Android 应用开发学习指南,从 Android 应用开发的基本概念到高级主题,本笔记涵盖了 Android 应用开发的各个方面。 第 1 章 Android 概述 Android 是一个免费的、开源的...

    新版android开发教程 笔记

    新版Android开发教程+笔记五--模拟器、应用1、2 新版Android开发教程+笔记六--应用3、4 布局 新版Android开发教程+笔记七--基础UI编程1 新版Android开发教程+笔记八--基础UI编程2 新版Android开发教程+笔记九--基础...

    新版Android开发教程及笔记-完整版.pdf

    新版Android开发教程+笔记五--模拟器、应用1、2.pdf 新版Android开发教程+笔记六--应用3、4 布局.pdf 新版Android开发教程+笔记七--基础UI编程1.pdf 新版Android开发教程+笔记八--基础UI编程2.pdf 新版Android开发...

    Android开发教程笔记完全版 pdf

    Android开发是全球最受欢迎的移动应用开发平台之一,广泛应用于智能手机、平板电脑以及各种智能设备上。这份"Android开发教程笔记完全版"涵盖了Android开发的基础到高级主题,旨在帮助开发者全面理解并掌握Android...

    [电子书][Android]Android开发教程笔记完全版.zip

    【Android开发教程笔记完全版】是一份全面的Android开发学习资料,旨在帮助新手小白和有一定经验的程序员深入理解和掌握Android应用开发技术。这份资源包含了从基础到进阶的多个层次的知识点,对于想要踏入Android...

    Android 开发教程 新版Android开发教程&笔记

    新版Android开发教程&笔记五--模拟器、应用1、2 新版Android开发教程&笔记六--应用3、4 布局 新版Android开发教程&笔记七--基础UI编程1 新版Android开发教程&笔记八--基础UI编程2 ......... ..... .... 新版Android...

    黑马程序员 从零开始征服Android之旅(第一季)源码和笔记 下

    在本资源包“黑马程序员 从零开始征服Android之旅(第一季)源码和笔记 下”中,我们聚焦于Android应用程序开发的基础与实践。通过学习,你可以系统地掌握Android开发的核心概念,逐步成长为一名合格的Android开发者...

    手机游戏编程学习笔记Ⅰ(2013)word文件

    这篇学习笔记是作者在2013年初开始学习手机游戏编程的记录,主要聚焦于Android平台。笔记首先讲述了作者学习编程的初衷和决心,然后详细介绍了从安装和配置Android开发环境,到使用Eclipse+ADT开发一个简单的数独...

    android 开发笔记

    总之,这份"Android开发笔记"是一套全面的学习资源,涵盖了从基础到进阶的Android开发知识,特别关注在real6410开发板上的实践。通过深入阅读并实践这些教程,开发者不仅可以提升Android应用开发技能,还能掌握在...

    基于Android Studio开发的笔记APP.rar

    【Android Studio开发笔记APP详解】 Android Studio是Google官方推荐的Android应用开发集成开发环境(IDE),它提供了丰富的功能,使得Android应用开发变得更加高效和便捷。本教程将基于Android Studio,详细解析一...

    Android Studio 学习笔记-新手入门-(1)第一个案例

    这篇学习笔记将引导新手入门,通过创建第一个简单的案例来了解Android Studio的基本操作。 首先,让我们了解一下Android Studio的核心功能。它基于IntelliJ IDEA,具备代码自动补全、重构、调试等强大的开发特性。...

    Android开发教程+笔记 Android开发教程+笔记

    Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发教程+笔记 Android开发...

    android高级编程学习笔记

    ### Android高级编程学习笔记 #### 1. Android安全性 Android安全性是高级开发中非常重要的一环。安全性主要由底层的Linux内核提供,并且涉及到应用程序之间的数据隔离与通信控制。 ##### 1.1 Linux内核安全 每...

    新版Android开发教程和笔记

    新版Android开发教程+笔记五--模拟器、应用1、2 新版Android开发教程+笔记六--应用3、4 布局.pd 新版Android开发教程+笔记十--基础UI编程4.pdf 新版Android开发教程+笔记十一--可视化UI设计Dr 新版Android...

    Android零基础开发教程笔记.doc

    总之,《Android开发教程笔记完全版》是一份全面的学习资源,涵盖了从入门到进阶的Android开发知识,无论你是对Android编程感兴趣的新手,还是寻求深化技能的专业开发者,都能从中受益。通过深入学习和实践,你将...

Global site tag (gtag.js) - Google Analytics