关闭

android游戏开发初学之SurfaceView绘制界面

标签: androidandroid游戏
186人阅读 评论(0) 收藏 举报
分类:

绘制界面需要先锁定一个画布,创建画笔,绘制完成之后需要解锁画布并提交

package com.learn.swl.game;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
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;
    public GameUi(Context context) {
        super(context);
        holder = getHolder();
        holder.addCallback(this);
    }
    private void DrawUI(){
        try {
            canvas = holder.lockCanvas();//锁定画布
            if(canvas!=null){
                Paint paint = new Paint();//创建画笔
                paint.setColor(Color.RED);//设置画笔颜色
                canvas.drawRect(0, 0, 100, 100, paint);//画一个矩形
            }
        }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);
        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;
    }


}

在这里用到threadFlag来控制线程的销毁,以及防止重复创建线程

0
0
查看评论

Android游戏开发之SurfaceView与游戏开发

Android中surfaceView通常被用来作为显示游戏画面的载体,这里介绍surfaceView的基本用法,和我的探索。
  • zy19980116
  • zy19980116
  • 2017-04-24 19:36
  • 384

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

直接贴代码 图片的基类 package com.learn.swl.game; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Point; /** * 精灵,图...
  • s443770865
  • s443770865
  • 2015-11-18 09:43
  • 412

Android 自定义SurfaceView实现加载GIF动画

先看看实现效果: SurfaceView类介绍:  进入源码: public class SurfaceView extends View { public SurfaceView(Context context) { super((Context)null...
  • happy_horse
  • happy_horse
  • 2016-04-08 20:28
  • 2668

Android SurfaceView的绘制详解

在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面。由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行绘制。又由于不会占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI,...
  • aa841538513
  • aa841538513
  • 2016-08-23 11:51
  • 6739

Android学习之界面篇(九)SurfaceView简单学习

知识点: surfaceview介绍surfaceview与View的区别,surface与surfaceview的区别实例创建与使用SurfaceHolder.Callback的使用,surfaceHolder可以看作是surfaceview的控制器,控制图形的大小,像素等.在主函数中回调函...
  • icarus_wang
  • icarus_wang
  • 2016-05-08 23:33
  • 3440

只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView)

Android摄像头:只拍摄SurfaceView预览界面特定区域内容(矩形框)---完整实现(原理:底层SurfaceView+上层绘制ImageView) 分类: Android开发 2013-02-13 11:54 13061人阅读 评论(69) 收藏 举报 ...
  • a982912320
  • a982912320
  • 2015-02-28 14:45
  • 885

SurfaceView 实现高性能的绘制

先说说自定义 View 绘图机制的缺陷: 1. View 缺乏双缓冲机制; 2. 当程序需要更新 View 上的图片时,程序必须重绘 View 上显示的整张图片; 3. 新线程无法直接更新 View 组件。       &#...
  • antimage08
  • antimage08
  • 2015-12-27 10:45
  • 2186

Android UI SurfaceView的使用-绘制单个图型或多个图形

新建MyView类继承自SurfaceView: public class MyView extends SurfaceView implements SurfaceHolder.Callback { private Paint paint; public MyView(Context con...
  • work201003
  • work201003
  • 2015-10-05 16:47
  • 630

可以在子线程绘画的View SurfaceView

转载请注明出处:王亟亟的大牛之路最近两天都没有写文章,一方面是自己在看书,一方面不知道写什么,本来昨天想写Glide或者RxAndroid的东西结果公司的“狗屎”网怎么都刷不好Gradle我也是无语了(翻墙也没用),准备今天背着笔记本 回家搞,真是服了。。抱怨的话不说了,来看下这一篇要讲的主角 Su...
  • ddwhan0123
  • ddwhan0123
  • 2016-03-22 16:36
  • 6050

Android开发:SurfaceView上新建线程绘制旋转图片 及 刷新特定区域(脏矩形)

何为脏矩形?比如surfaceview上绘制旋转图片的时候,只刷新一个特定的矩形区域就可以了。这个矩形区域就是脏矩形。在surfaceview上  canvas = holder.lockCanvas(new Rect(0, 0, 130, 130)); //获取画布 像这种带rect参数...
  • yanzi1225627
  • yanzi1225627
  • 2013-02-15 09:47
  • 20169
    个人资料
    • 访问:2867次
    • 积分:63
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:3篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档