首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏向治洪

    surfaceview详解

    1.概念       SurfaceView是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。它的特性是:可以在主线程之外的线程中向屏幕绘图上。 在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。 2.实现方法 1)实现步骤     a.继承SurfaceView     b.实现SurfaceHolder.Callback接口 2)需要重写的方法 public void surfaceChanged 几个需要注意的方法: abstract void addCallback(SurfaceHolder.Callback callback);   // 给SurfaceView当前的持有者一个回调对象。 4)总结整个过程   继承SurfaceView并实现SurfaceHolder.Callback接口 ----> SurfaceView.getHolder()获得SurfaceHolder对象 --

    2.3K90发布于 2018-01-29
  • 来自专栏米扑专栏

    Android SurfaceView

    下面就贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来改变圆的位置 代码: Activity package com.view; import import android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback; import android.view.SurfaceView ; public class MySurfaceView extends SurfaceView implements Runnable, Callback { private SurfaceHolder mHolder; // 用于控制SurfaceView private Thread t; // 声明一条线程 private boolean flag; // 线程运行的标识 // 画一个圆 mHolder.unlockCanvasAndPost(mCanvas); // 完成画画,把画布显示在屏幕上 } /** * 当SurfaceView

    1.4K20发布于 2019-02-19
  • 来自专栏Android机动车

    走进SurfaceView

    SurfaceView,顺便总结总结了! 根据Java方面的常规知识,我们知道通常画图是在一个Canvas对象上面进行的,由此,可以推知一个Surface对象中应该包含有一个Canvas对象 02 — SurfaceView是什么 SurfaceViewSurfaceView中有一个方法getHolder,可以很方便地获得SurfaceView所对应的Surface所对应的SurfaceHolder。 SurfaceView如果为用户可见的时候,创建SurfaceView的SurfaceHolder用于显示视频流解析的帧图片,如果发现SurfaceView变为用户不可见的时候,则立即销毁SurfaceView SurfaceView 不能嵌套使用。

    1.6K20发布于 2018-08-03
  • 来自专栏Android-Xj

    什么是 SurfaceView

    SurfaceView简介 简单的说SurfaceView就是一个有Surface的View里面内嵌了一个专门用于绘制的Surface,SurfaceView控制这个Surface的格式和尺寸以及绘制位置 SurfaceView就是在Window上挖一个洞,它就是显示在这个洞里,其他的View是显示在Window上,所以View可以显式在 SurfaceView之上,你也可以添加一些层在SurfaceView SurfaceView自身,因此将SurfaceView和window绑定在一起,而前面提到过每个window对应一个Surface, 所以SurfaceView也就内嵌了一个自己的Surface,可以认为 就是管理数据的地方, SurfaceView就是展示数据的地方,只有通过SurfaceView才能展现Surface中的数据。 surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。 这样能节省资源。

    1.6K11编辑于 2022-02-22
  • 来自专栏米扑专栏

    Android SurfaceView学习示例

    SurfaceView是View的子类,使用的方式与任何View所派生的类都是完全相同的,可以像其他View那样应用动画,并把它们放到布局中。  SurfaceView封装的Surface支持使用本章前面所描述的所有标准Canvas方法进行绘图,同时也支持完全的OpenGL ES库。  SurfaceView 和 View 的明显不同之处在于: 1、继承SurfaceView  的视图可以另起一个线程,或者说在子线程中更新视图。 2、 SurfaceView 的画图方法是在子线程中执行的 而 View类的那个示例 的画图方法是在UI线程中执行的。 SurfaceView 类的事件处理规则和View一样。

    1.1K30发布于 2019-02-19
  • 来自专栏小工匠聊架构

    SurfaceView的那点事儿

    ---- SurfaceView和View的区别 SurfaceView和View的区别: View主要适用于主动更行的情况,而SurfaceView适用于被动更新,例如频繁的刷新。 View在主线程中对画面进行,而SurfaceView通常会在一个子线程中进行页面的刷新 View在绘图时没有使用双缓冲机制,而SurfaceView在底层实现了双缓冲机制 总之,如果你的自定义View ---- SurfaceView的使用 SurfaceView的使用虽然比View要复杂,但是SurfaceView在使用时有一套使用的模板代码,大部分的SurfaceView绘图操作都可以套用这样的模板代码来进行编写 通常情况下,使用以下步骤来创建一个SurfaceView的模板 创建SurfaceView 创建自定义的SurfaceView 继承自 SurfaceView,并且实现两个接口:SurfaceHolder.Callback 在自定义的SurfaceView的构造方法中,需要对SurfaceView进行初始化。

    1.1K30发布于 2021-08-16
  • 来自专栏风吹杨柳

    surfaceView+MediaPlayer的问题

    首先来了SurfaceView这个控件类 SurfaceView类 ? 构造方法 方法名称 描述 public SurfaceView(Context context) 通过Context创建SurfaceView对象 public SurfaceView(Context 它是一个接口,用于管理SurfaceView。 这样理解: SurfaceView它用于显示,SurfaceHolder就是用于用来管理这个显示的SurfaceView对象的,但在SurfaceHolder是怎么样去管理这个对象的呢? 这样就达到了管理SurfaceView的目的。

    2.4K20发布于 2019-07-08
  • 来自专栏米扑专栏

    Android SurfaceView游戏开发示例

    当我们需要开发一个复杂游戏的时候,而且对程序的执行效率要求很高时,View类就不能满足需求了,这时必须用SurfaceView类进行开发。 例如,对速度要求很高的游戏时,View类就不能满足需求了,这时必须使用SurfaceView类进行开发。例如,对速度要求很高的游戏,可以使用双缓冲来显示。 游戏中的背景、人物、动画等都需要绘制在一个画布(Canvas)上,而SurfaceView可以直接访问一个画布,SurfaceView 是提供给需要直接画像素而不是使用窗体部件的应用使用的。 this); setContentView(gameView); } } GameSurfaceView public class GameSurfaceView extends SurfaceView

    1.3K20发布于 2019-02-19
  • 来自专栏小灰灰

    Android之SurfaceView学习一

    android.os.Bundle; import android.view.Menu; import android.view.SurfaceHolder; import android.view.SurfaceView getMenuInflater().inflate(R.menu.main, menu); return true; } /** * surfaceview的实例,用来处理贴图问题 * / class MyView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder holder 首先是声明一个继承SurfaceView并且实现SurfaceHolder.CallBack的子类 class MyView extends SurfaceView implements SurfaceHolder.Callback 在子类中获得一个用于控制suerfce对象的surfaceHolder对象 holder = SurfaceView.getHodler(); holder.addCallback() 3.

    788100发布于 2018-02-06
  • 来自专栏向治洪

    android之surfaceview画图

    在前文中,我们分析了应用程序窗口连接到WindowManagerService服务的过程。在这个过程中,WindowManagerService服务会为应用程序窗口创建过一个到SurfaceFlinger服务的连接。有了这个连接之后,WindowManagerService服务就可以为应用程序窗口创建绘图表面了,以便可以用来渲染窗口的UI。在本文中,我们就详细分析应用程序窗口的绘图表面的创建过程。         从前面Android应用程序与SurfaceFlinger服务的关系概述和学习计划和Andro

    2.2K100发布于 2018-01-26
  • 来自专栏码上就说

    聊聊SurfaceView和TextureView

    播放视频或者渲染其他的动画的时候,有两个View组件可供选择,SurfaceView和TextureView,GLSurfaceView是SurfaceView是子类,这儿还是归类到SurfaceView SurfaceView实现机制 双缓冲机制 TextureView实现机制 TextureView和SurfaceView的优缺点 1.SurfaceView实现机制 SurfaceView继承自View SurfaceView为什么要这么设计? 优点:这样的好处是对这个Surface的渲染可以放到单独线程去做,渲染复杂的动画不会影响主线程的的响应。 4.TextureView和SurfaceView的优缺点 SurfaceView TextureView 内存 低 高 耗电 低 高 绘制效率 及时 1 ~ 3帧的延迟 截图 不支持 支持 动画 不支持 支持 不过GLSurfaceView是SurfaceView的子类,除了拥有SurfaceView的优点,GLSurfaceView也支持截图和动画操作。

    4.9K21发布于 2020-11-11
  • 来自专栏字节流动

    SurfaceView 与 TextureView 详解

    SurfaceView 简介 简单的说SurfaceView就是一个有Surface的View里面内嵌了一个专门用于绘制的Surface,SurfaceView 控制这个 Surface 的格式和尺寸以及绘制位置 SurfaceView 就是在 Window 上挖一个洞,它就是显示在这个洞里,其他的View是显示在Window上,所以View可以显式在 SurfaceView之上,你也可以添加一些层在SurfaceView 所以SurfaceView也就内嵌了一个自己的Surface,可以认为SurfaceView是来控制Surface的位置和尺寸。 surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。 这样能节省资源。 SurfaceView如果为用户可见的时候,创建SurfaceView的SurfaceHolder用于显示视频流解析的帧图片,如果发现SurfaceView变为用户不可见的时候,则立即销毁SurfaceView

    14.9K60发布于 2021-01-12
  • 来自专栏构建FFmpeg Android播放器

    Android基础--SurfaceView, Surface, SurfaceHolder

    即Surface是保存原始缓存区的句柄,也就是显示的像素数据 SurfaceView SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。 Surfaceview控制这个Surface的绘制位置。 surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后面。 surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。这样能节省资源。 surfaceview的核心在于提供了两个线程:UI线程和渲染线程。 SurfaceHolder是用来操作surface的接口,通过SurfaceView的getHolder来获取 Surface、SurfaceView和SurfaceHolder的关系类似MVC。

    2.5K30发布于 2020-04-17
  • 来自专栏进击的多媒体开发

    Android Camera SurfaceView 预览拍照

    本文已获得作者授权,本文作者:cain_huang 原文链接:https://www.jianshu.com/p/9e0f3fc5a3b4 Android使用 Camera API + SurfaceView SurfaceView 的创建以及回调 创建一个SurfaceView,并实现SurfaceHolder的回调。 由于Camera在SurfaceView中是通过SurfaceHolder 使得Surfaceview能够预览Camera返回的数据,因此我们需要实现SurfaceHolder 的回调,实现代码如下: public class CameraSurfaceView extends SurfaceView implements SurfaceHolder.Callback { private static layout_height="wrap_content" android:text="切换相机" /> </LinearLayout> </FrameLayout> 至此,通过SurfaceView

    4K20发布于 2019-07-24
  • 来自专栏Android知识点总结

    相机、OpenGL、视频、Flutter和SurfaceView

    ----张风捷特烈 ---- 一、关于SurfaceView 对于视频、相机、游戏、Flutter等需要高性能渲染的场景,你都会发现SurfaceView的身影,如果你想进行高性能的渲染,那么SurfaceView 本篇会从一下几点的极简操作,来让你对SurfaceView有个感性的认知: [1].Camera的预览和SurfaceView的使用 [2].Camera2的预览和SurfaceView的使用 [ ---- 1.Camera使用SurfaceView开启预览 SurfaceView依赖SurfaceHolder类,所以两者形影不离。 public class Camera2SurfaceView extends SurfaceView implements SurfaceHolder.Callback { private Handler 对于Android端, Flutter所有视图都在FlutterView中进行绘制,而FlutterView便是继承自SurfaceView 这也足以显示SurfaceView是多么强大 public

    3.6K20发布于 2020-04-30
  • 来自专栏陶士涵的菜地

    surfaceview的生命周期

    界面布局和上一节的mp3基本一样,播放视频需要一个控件SurfaceView SurfaceView控件在内部维护了一个双缓冲的技术,使用两个线程进行解析帧和显示到界面上 在Activity的onCreate 对象调用setDataSource()方法,之前 调用MediaPlayer对象的setDisplay()方法,设置影片以SurfaceHolder的方式播放,参数:SurfaceHolder对象,调用SurfaceView ()方法,设置准备完成的监听器,在重写方法里,调用MediaPlayer对象的start()方法 在低版本的手机上,加上下面的代码,指定自己不维护缓冲区,等待MediaPlayer将数据推送出来 调用SurfaceView 当界面最小化不可见后,重新打开SurfaceHolder会被销毁,这是系统设计为了节省内存 当界面不可见的时候,应该记录播放位置并且停止掉,当重新可见的时候,重新打开 获取SurfaceHolder对象,调用SurfaceView

    1.4K30发布于 2019-09-10
  • 来自专栏Kiba518

    Android使用SurfaceView实现签名板

    SurfaceView使用 首先创建一个SurfaceViewSign类,继承SurfaceView类,继承 SurfaceHolder.Callback和Runnable接口,代码如下: import android.util.AttributeSet; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView ; ​ public class SurfaceViewSign extends SurfaceView implements SurfaceHolder.Callback,Runnable { ​ " android:background="@color/white" tools:ignore="MissingClass"> <com.kiba.test.control.surfaceview.SurfaceViewSign

    69730编辑于 2023-03-24
  • 来自专栏Android点滴积累

    AccessibilityService+WindowManager+SurfaceView开系统权限

    一种通过自动获取用户权限增强产品体验的方法   本文是基于辅助功能+悬浮窗+SurfaceView来实现自动获取用户权限的具体方案设计与实现。 辅助功能的作用就是实现节点查找和模拟点击,而悬浮窗实现需要的蒙层遮罩效果,SurfaceView则是实现流程的过渡动画。 所以在本发明中,使用了非阻塞UI线程的方式实现,那就是使用自定义SurfaceView实现自定义动画。 因为SurfaceView的绘制在单独的绘制线程里面执行的,不会抢占UI线程的资源,不会对权限开启流程造成任何负面影响,反而减少了开启权限所需要的整体时间。 另外在SurfaceView中实现流畅的过渡动画,减少用户等待时间,一直与用户有交互,增强用户体验。

    2.1K80发布于 2018-01-04
  • 来自专栏RTSP/RTMP直播相关

    Android播放端绘制-SurfaceView还是GLSurfaceView

    Canvas canvas = mSurface.lockCanvas(null); mSurface.unlockCanvasAndPost(canvas); SurfaceView SurfaceView ; the SurfaceView punches a hole in its window to allow its surface to be displayed. GLSurfaceView GLSurfaceView继承自SurfaceView,对SurfaceView又做了一次封装,方便我们在安卓中使用OpenGL。 总结 除了上述区别外,SurfaceView通用性更好,GLSurfaceView渲染更细腻,如果想让普通的SurfaceView渲染效果更好,可以加抗锯齿效果,不过抗锯齿效果会有一定的性能消耗,硬解码设置 surface模式的话,直接用普通的SurfaceView

    1.8K20发布于 2021-03-24
  • 来自专栏韩曙亮的移动开发专栏

    【Android 应用开发】View 与 SurfaceView 区别

    文章目录 组件刷新所在线程 性能 资源 操作 主动更新与被动更新 View , SurfaceView , GLSurfaceView 组件刷新所在线程 1. SurfaceView 在子线程刷新 UI : SurfaceView 中可以创建新的子线程 , 并在该子线程中刷新 UI ; 性能 资源 操作 1. SurfaceView 组件 : ① 刷新性能 : SurfaceView 刷新性能较高 ; ② 受资源影响较小 ; ③ 操作复杂 : 但是控制起来比较复杂 , 需要在其中创建线程 , 并需要处理主线程与该线程之间的同步问题 ; View , SurfaceView , GLSurfaceView 1. SurfaceView : SurfaceView 是 View 的子类 , 绘图的过程中使用了双缓冲机制 , 绘图效率很高 , 其功能在内部可以创建线程 , 并在线程中以极高的频率 ( 5 ~ 100

    95720编辑于 2023-03-27
领券