随笔 - 262  文章 - 0  评论 - 5  阅读 - 20万

SurfaceView 及相关概念


=============================================================
SurfaceView
=============================================================

 

-------------------------------------------------------------
1 相关类
-------------------------------------------------------------


1.1 surface

1.1.1 意思:表面

1.1.2 可以理解为底层数据缓冲器,和硬件显卡绘制的入口句柄

1.1.3 Surface就是一个用来画图形(graphics)或图像(image)的地方

1.1.4 Surface中有一个Canvas成员,专门用于画图的。

1.2 surfaceView

1.2.1 extends View

1.2.1.1 拥有View的基本属性

1.2.2 surfaceView是在一个新起的单独线程
中可以重新绘制画面而View必须在UI
的主线程中更新画面。

1.2.2.1 意味着不需要等待主线程把所有View的绘制做完,
处理完输入输出,Hnadler.looper等事件,直接下
一帧绘制。

1.2.3 SurfaceView 可以在线程中直接操作

1.2.4 必然SurfaceView拥有Surface也就拥用Canvas

1.2.5 通过Canvas对象来进行各种绘制:图形,图片,颜色,字符窜等

1.2.6 SurfaceView拥的Canvas对象的特点

1.2.6.1 不普通View中的Canvas相同,工作在独立线程。

1.2.6.2 独占性:不能多个实例同时使用

1.2.6.3 有效时间:间于在SurfaceHolder.Callback.surfaceCreated()和 SurfaceHolder.Callback.surfaceDestroyed()这两个方法之间

1.2.6.4 在布局中使用SurfaceView,加载完成后,直接调用Canvas会是null

1.3 SurfaceHolder

1.3.1

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}

1.3.2 @Override
public void surfaceCreated(SurfaceHolder holder) {
}

1.3.3 @Override
public void surfaceCreated(SurfaceHolder holder) {
}

1.4 Canvas

1.4.1 获取

1.4.1.1 Canvas canvas = mSurfaceHolder.lockCanvas();

1.4.2 提交

1.4.2.1 mSurfaceHolder.unlockCanvasAndPost(canvas);

1.4.3 画布功能

1.4.3.1 drawColor()

1.4.3.2 drawBitmap


-------------------------------------------------------------
2 使用
-------------------------------------------------------------


2.1 自定义View继承SurfaceView

2.2 实现SurfaceHolder.Callback接口

2.2.1 目的:掌握SurfaceView的生命周期

2.2.2 在SurfaceHolder.Callback.surfaceCreated()和 SurfaceHolder.Callback.surfaceDestroyed()这
两个方法之间进行工作

2.3 获取Canvas对象

2.3.1 lockCanvas()

2.3.2 SurfaceHolder.lockCanvas()

2.3.2.1 建议在SurfaceHolder.Callback.surfaceCreated()
之后调用,确保返回有效对象。

2.3.3 SurfaceView.lockCanvas()

2.4 开启线程操作Canvas刷新


-------------------------------------------------------------
3 GLSurfaceView
-------------------------------------------------------------


3.1 SurfaceView的子类,具有SurfaceView的所有特性

3.2 结合GLSurfaceView.Renderer来封装使用

3.3 提供openGL与surfaceView整合方案


-------------------------------------------------------------
4 TextureView
-------------------------------------------------------------

 

-------------------------------------------------------------
5 SurfaceTexture
-------------------------------------------------------------

posted on   wp7ers  阅读(164)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示