区别与联系 View: 显示视图,内置画布,提供了图形绘制函数.触屏事件.按键事件函数等,必须在UI主线程内更新画面,速度较慢: SurfaceView: 基于view视图进行拓展的视图类,更适合2D游戏的开发,是view的子类,使用了双缓冲机制,即:允许在子线程中更新画面,所以刷新界面速度比view快. GLSurfaceView: 基于SurfaceView视图再次进行拓展的视图类,在SurfaceView基础上封装了EGL环境管理以及render线程,专用于3D游戏开发的视图.是Surfa…
韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 表面视图 SurfaceView 是 视图 的子类, 刷新界面速度比 视图 块, 因为它在新的线程中 更新画面.  采用类似 双缓存机制. GLSurfaceView 是 表面视图SurfaceView 的子类, openGL 专用的. 视图 类 是 必须在 主线程中 更新画面. Surface 的意思 是  表面:表层:外观…
Android游戏当中主要的除了控制类外就是显示类View.SurfaceView是从View基类中派生出来的显示类.android游戏开发中常用的三种视图是:view.SurfaceView和GLSurfaceView. View:显示视图,内置画布,提供图形绘制函数.触屏事件.按键事件函数等:必须在UI主线程内更新画面,速度较慢. SurfaceView:基于view视图进行拓展的视图类,更适合2D游戏的开发:是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view…
Google自Android4.0出了TextureView,为什么推出呢?就是为了弥补Surfaceview的不足,另外一方面也是为了平衡GlSurfaceView,当然这是本人揣度的.关于TextureView.Surfaceview.SurfaceTexture.GLSurfaceView的关系,待咱家推出GLSurfaceview预览Camera后再专门分析.本文主要介绍使用TextureView预览Camera. 其实关于如何用TextureView预览Camera,官网已经给出了de…
SurfaceView也是继承自View,它和我们以前接触到的View(Button.TextView等)最大的不同是,SurfaceView可以有一个单独的线程进行绘制,这个线程区别于UI线程(主线程),因此SurfaceView绘制并不占用主线程资源. SurfaceView实现通常是自定义,继承SurfaceView并实现SurfaceHolder.Callback接口.使用SurfaceView,所有的绘图工作必须得在Surface 被创建之后才能开始,所以Callback 中的surf…
SurfaceView也是继承了View,但是我们并不需要去实现它的draw方法来绘制自己,为什么呢? 因为它和View有一个很大的区别,View在UI线程去更新自己:而SurfaceView则在一个子线程中去更新自己:这也显示出了它的优势,当制作游戏等需要不断刷新View时,因为是在子线程,避免了对UI线程的阻塞. 知道了优势以后,你会想那么不使用draw方法,哪来的canvas使用呢? 大家都记得更新View的时候draw方法提供了一个canvas,SurfaceView内部内嵌了一个专门用…
二. View  SurfaceView  GLSurfaceView   View SurfaceView GLSurfaceView 功能 显示视图,内置画布,提供图形绘制函数.触屏事件.按键事件函数等:必须在UI主线程内更新画面,速度较慢 基于view视图进行拓展的视图类,更适合2D游戏的开发:是view的子类,类似使用双缓机制,在新的线程中更新画面所以刷新界面速度比view快. 基于SurfaceView视图再次进行拓展的视图类,专用于3D游戏开发的视图:是SurfaceView的子类,…
在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面.由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行行绘制.又由于不占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI,另一方面又不会导致用户输入得不到及时响应.在本文中,我们就详细分析SurfaceView的实现原理. 在前面Android控件TextView的实现原理分析一文中提到,普通的Android控件,例如T…
1.背景介绍 最近项目要绘制股票走势图,并绘制能够跟随手指滑动的指示线(Indicator)来精确查看股票价格和日期.如下图所示: 上图中的那条白色直线就是股票的指示线,用来跟随手指精确确定股票的时间和股票价格.不论是绘制股票图还是绘制指示线,我们首先想到的就是用Android中的自定义View来实现.实践证明,使用View能够很好地实现静态的图片,但是对用动态图像的绘制,往往会出现延迟的现象.就如上图的指示线,实际用View类实现的,跟随手指移动时,指示线就会出现延迟的现象,严重影响了用户体验…
  通过之前介绍的如何自定义View, 我们知道使用它可以做一些简单的动画效果.它通过不断循环的执行View.onDraw方法,每次执行都对内部显示的图形做一些调整,我们假设 onDraw方法每秒执行20次,这样就会形成一个20帧的补间动画效果.但是现实情况是你无法简单的控制View.onDraw的执行帧数,这边说的执 行帧数是指每秒View.onDraw方法被执行多少次,这是为什么呢?首先我们知道,onDraw方法是由系统帮我们调用的,我们是通过调用View的 invalidate方法通知系统…