文档章节

android笔记3(surfaceview)

来来叔叔
 来来叔叔
发布于 2017/08/04 23:57
字数 320
阅读 3
收藏 0
 

SurfaceView

使用Surfaceview的好处是可以自己控制屏幕刷新,还不像一般的View是通过界面消息来进行屏幕更新的。这在游戏中特别有用,因为游戏需要实时的更新画面,以反映游戏进程。

使用Surfaceview时,一般会开启一个线程,在线程中进行游戏逻辑和屏幕更新;

一般需要实现SurfaceHolder.Callback接口,在surface创建时创建和启动线程,在surface销毁时退出线程,退出线程可以采用对线程控制变量设置为false,并调用join函数来实现线程安全关闭。

另外一种方案是在构造函数中创建和启动线程,通过线程控制变量来实现线程核心循环的暂停或者运行,从而不用在surface创建和销毁时重复地创建和销毁线程。不知道哪种方案好一些呢?

public class GbcView extends SurfaceView implements SurfaceHolder.Callback,Runnable

{

       private Thread mThread;

       private boolean running;

       @Override

       public void run()

       {

              while(running)

              {

                     gameStep();

                     gameDraw();

              }

       }

       @Override

       public void surfaceChanged(SurfaceHolder holder, int format, int width,

                     int height)

       {

              // TODO Auto-generated method stub

       }

 

       @Override

       public void surfaceCreated(SurfaceHolder holder)

       {

              // TODO Auto-generated method stub

              running = true;

              mThread = new Thread(this);

              mThread.start();

       }

 

       @Override

       public void surfaceDestroyed(SurfaceHolder holder)

       {

              // TODO Auto-generated method stub

              running = false;

              try

              {

                     mThread.join();

              }

              catch (InterruptedException e)

              {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

       }

}

© 著作权归作者所有

来来叔叔
粉丝 0
博文 100
码字总数 55732
作品 0
广州
高级程序员
私信 提问
Android SurfaceView vs TextureView

This page is intended to briefly introduce the differences between SurfaceView and TextureView. SurfaceView and TextureView Both SurfaceView and TextureView are inherited from a......

Jerikc
2015/08/23
658
0
Android SurfaceView简例

Android SurfaceView简例 Android中各的SurfaceView和View有很大的不同,两者应用场景不同。大多数View能做的事情SurfaceView也可以,但是SurfaceView效率更高。Android的View绘制过程由And...

开开心心过
2017/09/13
0
0
获取Android设备上的详细的摄像头信息

如何获取Android设备上的详细的摄像头信息呢? 目前Samsung的Galaxy Tab和Nexus S均有前置摄像头,获取Android摄像头的详细信息,在Android 2.3SDK中得到了增强: 在android.hardware.Camera类...

子曰疯
2013/12/26
10.3K
2
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0
android中使用surfaceview+MediaPlayer播放视频

Android中播放视频主要有两种方式: 使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型 使用android自带的VideoView,这种方法太简单就不介绍了 使用SurfaceView+Med...

天王盖地虎626
2018/12/24
21
0

没有更多内容

加载失败,请刷新页面

加载更多

python学习10.04:Python list列表使用技巧及注意事项

前面章节介绍了很多关于 list 列表的操作函数,细心的读者可能会发现,有很多操作函数的功能非常相似。例如,增加元素功能的函数有 append() 和 extend(),删除元素功能的有 clear()、 remo...

太空堡垒185
21分钟前
3
0
新手插画学习的方法?教你如何自学?

插画学习的方法?教你如何自学? 从小喜欢画一些漫画头像随笔画,但是其实没有基础。个人偏好小清新手绘风的插画(如下图),每每看到都希望自己能画出这样的作品。 我其实很想说画这种美术功...

huihuajiaocheng
27分钟前
4
0
面试题

1、实现clone();

gtandsn
38分钟前
4
0
CentOS 7 部署 tesseract-ocr

官方地址 github yum-config-manager --add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_7/ 若提示 yum-config-manager: command not found 执行以......

阿白
38分钟前
3
0
JAVA比较器中comparator的使用

一个专用的比较器Comparator Comparator是一个专用的比较器,当一个不支持自比较或者自比较函数不能满足要求时,可写一个比较器来完成两个对象之间大小的比较。Comparator体现了一种策略模式...

daxiongdi
39分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部