android游戏开发初学之SurfaceView绘制图片

原创 2015年11月18日 09:43:56

直接贴代码

图片的基类

package com.learn.swl.game;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Point;

/**
 * 精灵,图片的基类
 * Created by ADM on 2015/11/18.
 */
public class Sprite {
    protected Bitmap bitmap;
    protected Point position;

    public Sprite(Bitmap bitmap, Point position) {
        this.bitmap = bitmap;
        this.position = position;
    }

    public void DrawSelf(Canvas canvas){
        canvas.drawBitmap(bitmap,position.x,position.y,null);
    }
}

自定义的图片类

package com.learn.swl.game;

import android.graphics.Bitmap;
import android.graphics.Point;

/**
 * Created by ADM on 2015/11/18.
 */
public class Man extends Sprite {

    public Man(Bitmap bitmap, Point position) {
        super(bitmap, position);
    }
}
package com.learn.swl.game;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

/**
 * Created by ADM on 2015/11/17.
 */
public class GameUi extends SurfaceView implements SurfaceHolder.Callback,Runnable{
    private boolean threadFlag;
    private  SurfaceHolder holder;
    private  Canvas canvas;
    private Man man;
    public GameUi(Context context) {
        super(context);
        holder = getHolder();
        holder.addCallback(this);
    }
    private void DrawUI(){
        try {
            canvas = holder.lockCanvas();//锁定画布
            if(canvas!=null){
                man.DrawSelf(canvas);
            }
        }catch (Exception e){

        }finally {
            if(canvas!=null){
                holder.unlockCanvasAndPost(canvas);//解锁并提交画布
            }
        }

    }
    @Override
    public void run() {
        while (threadFlag){
            DrawUI();
        }
    }
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        System.out.println("surfaceCreated");
        Thread thread = new Thread(this);
        Bitmap manBitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.avatar_boy);
        man = new Man(manBitmap,new Point(0,0));
        threadFlag = true;//线程开启标志
        thread.start();//线程开启
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        System.out.println("surfaceChanged");

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        System.out.println("surfaceDestroyed");
        threadFlag = false;
    }


}



摄像头预览的背景带矩形框效果的实现(原理:双surfaceview,顶层画矩形框,底层预览视频)

为了能在摄像头预览的时候,背景有个矩形框、或一些坐标、横线来标示关键位置,真让杂家费劲心思了。苦苦研究了两天,毫无进展。baidu了若干资料,大都是提出这个问题,但怎么解决的没有说,都不了了之。后来转...
  • dxpqxb
  • dxpqxb
  • 2013年01月29日 14:34
  • 1878

Android学习之旅(第一篇) SurfaceView的原理以及使用场景

为什么要使用SurfaceView来实现动画?因为View的绘图存在以下缺陷: View缺乏双缓冲机制 当程序需要更新View上的图像时,程序必须重绘View上显示的整张图片 新线程无法直接更新Vie...

android游戏开发初学之SurfaceView创建

首先我们先来看下官方API对SurfaceView的介绍 SurfaceView的API介绍 Provides a dedicated drawing surface embedded i...

【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!

李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/346.html        在这...

[Android游戏开发学习笔记]View和SurfaceView

本文为阅读http://blog.csdn.net/xiaominghimi/article/details/6089594的tt

【Android游戏开发二十六】追加简述SurfaceView 与 GLSurfaceView效率!

李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/388.html今天在这里大概说下现...

【Android游戏开发之六】无法在SurfaceView中添加组件的替代方法

各位童鞋请你们注意:surfaceview中确实有 onDraw这个方法,但是surfaceview不会自己去调用!!! 而我代码中的ondraw 也好 draw 也好,都是我自己定义的一个方法...

【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!

  原文地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/26/6099194.aspx      各位童鞋请你们注意:surfaceview中...

Android游戏开发入门讲解-SurfaceView-2

一、老惯例不多说先上最终效果图

(转)【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!

李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/346.html ...
  • gxj1680
  • gxj1680
  • 2013年04月08日 10:29
  • 476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android游戏开发初学之SurfaceView绘制图片
举报原因:
原因补充:

(最多只允许输入30个字)