(摘自参考其他博客的说明) Android中的SurfaceView在更新视图时,为了提高更新效率,加强用户体验,采用了双缓存机制。 Android的官方说明: Note: On each pass you retrieve the Canvas from the SurfaceHolder, the previous state of the Canvas will be retained. I
转载
2023-08-25 16:51:18
218阅读
上一篇文章说了SurfaceView默认Z-order是小于主窗口的,为了能够显示出来,需要以自身所占矩形区域在主窗口设置透明区域,这是在SurfaceView的回调onAttachedToWindow中实现的,本篇接着看SurfaceView另一个回调onWindowVisibilityChanged。首先还是贴出上一篇分析的ViewRootImpl的performTraversals方法部分代
转载
2023-08-17 16:09:55
210阅读
什么是Surface?
简单地说Surface对应了一块屏幕缓冲区,每个window对应一个Surface,任何View都是画在Surface上的,传统的view共享一块屏幕缓冲区,所有的绘制必须在UI线程中进行 什么是SurfaceView? 说SurfaceView是一个View也许不够严谨,然而从定义中publicclassSurfaceViewextendsView{...}显示Sur
转载
2023-06-26 11:10:25
261阅读
图1 TextureView及其依赖的java/c++类本文将从TetureView的用途、使用模式及其在Framework依赖的类(图1所示那些)的三个方面进行说明。1. 用途TextureView可用于承载显示『数据流』的场合,之前看到『流』不太明确其意义,这里给两个具体的场景大家体会一下:camera模块从sensor采集了1080p@30fps的预览数据『流』,视频通话模块从网络包里解出实
转载
2023-06-26 13:42:02
354阅读
两眼一摸黑,感觉看那些开发文档有点难看懂,可能是基础太差的原因,我需要一个循序渐进的介绍,实在没办法,自己写个得了SurfaceView是视图(View)的继承类,Surface的翻译是表面,我很想将其理解为画板,不过画板已经有其它类了,可以理解为一个绘画器,将一个图形数据交给它,它在画板上画出来。首先制造一个最基本的布局<?xml version="1.0" encoding="utf-8
转载
2023-05-26 15:28:16
198阅读
在android中开发游戏,一般来说,或想写一个复杂一点的游戏,是必须用到SurfaceView来开发的。
经过这一阵子对android的学习,我找到了自已在android中游戏开发的误区,不要老想着用Layout和view去实现,不要将某个游戏
中的对象做成一个组件来处理。应该尽量想着在Canvas(画布)中画出游戏中的背景、人物、动画等。
 
转载
2023-09-26 09:44:26
112阅读
SurfaceView 的概念和用途surfaceview是view的一个子类,可以直接从内存或者DMA等硬件接口中取得图像数据,是一个非常重要的绘图视图。他的特性是:可以在主线程之外的线程中向屏幕绘图,这样可以避免画图任务繁重的时候造成的主线程阻塞,从而提高了程序的反应速度。在游戏开发过程中多用到SurfaceView,游戏中的背景、人物、动画等等在画布canvas中画出。Surfacevie
转载
2023-08-17 16:10:11
352阅读
SurfaceView是继承View的派生类(public class SurfaceView extends View这个View里内嵌了一个专门用于绘制的Surface,这个可以类似的理解成为一个在View里的Canvas。你可以控制这个Surface的格式和尺寸。Surfaceview类则控制这个Surface在屏幕上的正确位置。 在一般情
转载
2023-06-26 13:39:30
211阅读
首先,我们看看SurfaceView的官方介绍:Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface and, if you like, its size; the SurfaceView takes care of p
转载
2023-08-16 13:04:25
155阅读
本篇文章将围绕自定义控件——CameraSurfaceView来阐述Android Camera的使用详解,这里的Camera不包含Camera2,因为Camera2只适应5.0+的安卓系统,而目前市面上5.0以下的安卓设备还是有相当大的一部分的,所以当前的主流还是使用Camera来开发相机。首先先介绍下CameraSurfaceView,这是一个集拍照,录像,闪光灯,摄像头切换,前后台切换,自适
转载
2023-08-26 10:25:36
408阅读
SurfaceView介绍 通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制)。但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的。 如果需要在另外的线程绘制界面、需要迅速的
转载
2023-10-11 20:56:15
1167阅读
下面就贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来改变圆的位置代码:Activitypackage com.view; import android.app.Activity; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; public class MainActivity extends Activity { /** Called when the activity is f...
转载
2012-01-17 09:55:00
141阅读
2评论
# 实现“surfaceview android”教程
## 整体流程
首先我们来看一下整个实现“surfaceview android”的流程,可以用以下表格展示步骤:
| 步骤 | 操作 |
| ---- | ---- |
| 1 | 创建一个新的Android项目 |
| 2 | 在Activity布局文件中添加SurfaceView |
| 3 | 创建一个自定义SurfaceView
原创
2024-05-04 04:50:11
38阅读
源码:8.x系统我们知道ViewRootImpl是处理绘制流程的地方,具体分析如下:ViewRootImpl.javaprivate void performTraversals() {······performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);······performLayout(lp, mWidth, mHeight
转载
2024-03-12 14:38:10
122阅读
SurfaceView继承自View,拥有独立的绘图表面,即不与其宿主窗口共享一个绘图表面,通过Canvas画布绘制 可在另一线程中更新界面,且不阻碍界面交互,不会占用主线程资源与View区别SurfaceView 1、子线程中可以重新绘制画面,且绘图效率更高,适合动画等复杂绘制页面 2、每个SurfaceView拥有独立的surface,通过在顶级surface上打洞来显示自己。这些surfac
转载
2023-06-26 13:26:38
329阅读
前段时间在做一个截屏分享的功能,所截取的内容包括一个surfaceView+MediaPlayer的视频,虽然最终实现了该功能,但是确实也走了很多弯路,当时本想总结一下的,但后来一直拖着没弄。最近又涉及到包含listView(要截取listView全部内容,包括屏幕以外的部分)截屏,弄完了就在此记录一下方便以后查看,免得过段时间忘了,又得到处找。surfaceView截屏思路:1.、先截取整个静态
转载
2024-06-23 09:17:30
839阅读
SurfaceView使用介绍 SurfaceView是View的一个特殊子类,它的目的是另外提供一个线程进行绘制操作。 要使用SurfaceView进行绘制,步骤如下: 1.用SurfaceView进行绘制,首先要创建一个类,继承 SurfaceView,同时这个类应该实现SurfaceHolder.Callback接口。 这个接口中的三个回调函数(surfaceChanged
转载
2023-06-19 15:05:11
183阅读
前言前一章《Android利用SurfaceView显示Camera图像爬坑记(二)》我们已经利用SurfaceTexture通过生成的Bitmap图片用canvas画出显示,最后最后留了个小尾巴,就是显示的图像并没有全屏,这一章就说一下怎么让其全屏。全屏方式这里就先直接说出结果,想要全屏显示就是两句,直接在canvas中画图的时候画了一个目标框形的大小即可。RectF rectF=new Rec
转载
2024-03-10 23:47:09
96阅读
一、SurfaceView和VIew的区别 1、VIew主要适用于主动更新情况,并且只能在主线程绘制和更新画面,以及在绘图时没有使用双缓冲机制 2、surfaceView主要适用于被动更新,如频繁的刷新,因为它可以通过子线程来进行页面的刷新,而且在底层已经实现双缓冲机制,绘图时不会出现闪烁问题
转载
2023-09-18 14:07:42
285阅读
下面就贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来改变圆的位置代码:Activitypackage com.view;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.W
转载
2012-01-17 09:55:00
69阅读