下面就贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来改变圆的位置 代码: Activity package com.view; import...android.app.Activity; import android.os.Bundle; import android.view.Window; import android.view.WindowManager...package com.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color...; import android.graphics.Paint; import android.view.KeyEvent; import android.view.MotionEvent; import...android.view.SurfaceHolder; import android.view.SurfaceHolder.Callback; import android.view.SurfaceView
SurfaceView是View的子类,使用的方式与任何View所派生的类都是完全相同的,可以像其他View那样应用动画,并把它们放到布局中。 ...SurfaceView封装的Surface支持使用本章前面所描述的所有标准Canvas方法进行绘图,同时也支持完全的OpenGL ES库。 ...SurfaceView 和 View 的明显不同之处在于: 1、继承SurfaceView 的视图可以另起一个线程,或者说在子线程中更新视图。...2、 SurfaceView 的画图方法是在子线程中执行的 而 View类的那个示例 的画图方法是在UI线程中执行的。...SurfaceView 类的事件处理规则和View一样。
当我们需要开发一个复杂游戏的时候,而且对程序的执行效率要求很高时,View类就不能满足需求了,这时必须用SurfaceView类进行开发。...例如,对速度要求很高的游戏时,View类就不能满足需求了,这时必须使用SurfaceView类进行开发。例如,对速度要求很高的游戏,可以使用双缓冲来显示。...游戏中的背景、人物、动画等都需要绘制在一个画布(Canvas)上,而SurfaceView可以直接访问一个画布,SurfaceView 是提供给需要直接画像素而不是使用窗体部件的应用使用的。...this); setContentView(gameView); } } GameSurfaceView public class GameSurfaceView extends SurfaceView
从前面Android应用程序与SurfaceFlinger服务的关系概述和学习计划和Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划这两个系列的文章可以知道,每一个在...public static abstract class Stub extends android.os.Binder implements android.view.IWindowSession ...public int relayout(android.view.IWindow window, android.view.WindowManager.LayoutParams attrs, int...android.view.Surface outSurface) throws android.os.RemoteException { ...android.os.Parcel _data = android.os.Parcel.obtain(); android.os.Parcel _reply = android.os.Parcel.obtain
实例代码: import android.app.Activity; import android.content.Context; import android.graphics.Canvas;...import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle...; import android.view.Menu; import android.view.SurfaceHolder; import android.view.SurfaceView; public...getMenuInflater().inflate(R.menu.main, menu); return true; } /** * surfaceview的实例,用来处理贴图问题 *...首先是声明一个继承SurfaceView并且实现SurfaceHolder.CallBack的子类 class MyView extends SurfaceView implements SurfaceHolder.Callback
即Surface是保存原始缓存区的句柄,也就是显示的像素数据 SurfaceView SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于绘制的Surface。...surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。这样能节省资源。...surfaceview的核心在于提供了两个线程:UI线程和渲染线程。...SurfaceHolder是用来操作surface的接口,通过SurfaceView的getHolder来获取 Surface、SurfaceView和SurfaceHolder的关系类似MVC。...Model为Surface;View为SurfaceView, Control为SurfaceHolder。 参考https://www.android-doc.com/reference/
本文已获得作者授权,本文作者: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...> 至此,通过SurfaceView + Camera API 预览拍照功能已经实现。
SurfaceView使用 首先创建一个SurfaceViewSign类,继承SurfaceView类,继承 SurfaceHolder.Callback和Runnable接口,代码如下: import...android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color...android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; public...class SurfaceViewSign extends SurfaceView implements SurfaceHolder.Callback,Runnable { //SurfaceHolder..."> surfaceview.SurfaceViewSign android:id="@+id/sv" android
以前我们整体的介绍了利用SurfaceView调用系统的Camera显示图像,并且通过NDK OpenCV的方式进行图像处理,今天这篇我们就是来介绍一下,在SurfaceView中点击显示图像中的区域进行定位...视频说明 通过SurfaceView中点击事件其实相对来说很简单,只要重写onTouchEvent事件就可以。 在参数event里面的getRawX和getRawY就可以获取到点击的坐标点。...代码实现 程序框架我们就不在重新搭建了,用的还是《Android利用SurfaceView显示Camera图像爬坑记(六) -- 用OpenCV进行Canny边缘检测》那个Demo。...= ANDROID_BITMAP_FORMAT_RGBA_8888) { LOGI("BitmapInfoFormat error"); return NULL;...cv::Scalar(255, 0, 0), -1); //获取原图片的参数 jclass java_bitmap_class = (jclass) env->FindClass("android
Canvas canvas = mSurface.lockCanvas(null); mSurface.unlockCanvasAndPost(canvas); SurfaceView SurfaceView...GLSurfaceView GLSurfaceView继承自SurfaceView,对SurfaceView又做了一次封装,方便我们在安卓中使用OpenGL。...following features: Manages a surface, which is a special piece of memory that can be composited into the Android...surface模式的话,直接用普通的SurfaceView。...一般兼容性比较好的播放器,会同时支持SurfaceView和GLSurfaceView两种模式供用户根据实际场景选择,以大牛直播SDK(Github)的Android平台RTSP和RTMP播放端为例:
SurfaceView 在子线程刷新 UI : SurfaceView 中可以创建新的子线程 , 并在该子线程中刷新 UI ; 性能 资源 操作 1....资源影响性能 : View 容易受外界影响 , 系统会决定 View 界面的刷新时机 , 如果出现内存或 CPU 资源紧张的情况 , View 可能出现刷新卡顿的情况 ; ③ 操作简单 : View 符合 Android...组件操作模式 , 是标准的 Android 控件 , 使用和操作比较简单 ; 2....View : Android 中的标准组件 , 用于显示视图 , 内部提供 Canvas 画布 , 可以调用 Canvas 绘图函数绘制界面 , 可以设置触摸事件 等 ; View 组件绘图操作必须在主线程中进行...SurfaceView : SurfaceView 是 View 的子类 , 绘图的过程中使用了双缓冲机制 , 绘图效率很高 , 其功能在内部可以创建线程 , 并在线程中以极高的频率 ( 5 ~ 100
在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面。...在前面Android控件TextView的实现原理分析一文中提到,普通的Android控件,例如TextView、Button和CheckBox等,它们都是将自己的UI绘制在宿主窗口的绘图表面之上,这意味着它们的...在前面Android应用程序与SurfaceFlinger服务的关系概述和学习计划和Android系统Surface机制的SurfaceFlinger服务简要介绍和学习计划这两个系统的文章中,我们主要分析了...需要深入理解LayerBuffer的绘制和合成操作的,可以参考Android应用程序与SurfaceFlinger服务的关系概述和学习计划和Android系统Surface机制的SurfaceFlinger...从前面Android应用程序窗口(Activity)实现框架简要介绍和学习计划这个系列的文章可以知道,在Android系统中,每一个应用程序进程都有一个实现了IWindowSession接口的Binder
前一篇文章《Android SurfaceView onTouchEvent配合OpenCV显示》介绍了Android SurfaceView中通过onTouchEvent事件点击后在OpenCV中画了个圆显示出来...像在OpenCV中画圆,画矩形我们最简单的方法已经会,这里主要就是看看传进来的List我们怎么取出来,在JNI中传递LIst集合,我们在《Android NDK编程(八)--- JNI中List...= ANDROID_BITMAP_FORMAT_RGBA_8888) { LOGI("BitmapInfoFormat error"); return NULL;...>GetMethodID(list_jcls, "size", "()I"); //然后获取我们的Point类的class jclass jcls = env->FindClass("android..., cv::Scalar(255, 0, 0),3); //获取原图片的参数 jclass java_bitmap_class = (jclass) env->FindClass("android
SurfaceView 与 View 树的关系 SurfaceView 在布局上存在于 View 树中,但其内容实际上是在独立的 Surface 上进行绘制的。...SurfaceView 可能会出现与其他 View 层次关系相关的问题,如SurfaceView 总是出现在所有 View 的最上方。 4....SurfaceView 使用举例 下面是一个简单的使用 SurfaceView 绘制一个移动矩形的例子,使用 Kotlin 代码展示: import android.content.Context import...android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.util.AttributeSet...import android.view.SurfaceHolder import android.view.SurfaceView class CustomSurfaceView(context:
前言 前一章《Android利用SurfaceView显示Camera图像爬坑记(二)》我们已经利用SurfaceTexture通过生成的Bitmap图片用canvas画出显示,最后最后留了个小尾巴,就是显示的图像并没有全屏
前面文章里面用的是GLSurfaceView来处理里,为了从基础一点一点掌握,所以我先学习一下SurfaceView和Camera搭配实现。...surfaceviewdemo,首先修改一下布局文件activity_main.xml,在里面添加一个RelativeLayout,定义我们的surfaceviewlayout,到时候加载的时候把我们的SurfaceView...app:layout_constraintTop_toTopOf="parent" /> 然后我们新建一个类VaccaeSurfaceView,让其继承SurfaceView...android.view.SurfaceView; /** * 作者:Vaccae * 邮箱:3657447@qq.com * 创建时间:2019-06-12 15:42 * 功能模块说明:...*/ public class VaccaeSurfaceView extends SurfaceView implements SurfaceHolder.Callback { //Camera
SurfaceView,顺便总结总结了!...引伸地,可以认为Android中的Surface就是一个用来画图形(graphics)或图像(image)的地方。...在Android中Surface是从Object派生而来,且实现了Parcelable接口。...需要注意的是,在高版本的Android SDK中,setType这个方法已经被depreciated了。 2、3、4中的同步锁机制的目的,就是为了在绘制的过程中,Surface中的数据不会被改变。...SurfaceView如果为用户可见的时候,创建SurfaceView的SurfaceHolder用于显示视频流解析的帧图片,如果发现SurfaceView变为用户不可见的时候,则立即销毁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对象 --
SurfaceView允许你在非ui线程中去绘制。...SurfaceView的帧率可以操作60FPS 在要求实时性比较高的游戏开发中,显然,view的ondraw是满足不了你的,这时候只能是用SurfaceView。...SurfaceView在绘图时使用l了双缓冲机制,而View没有。 1.....** -dontnote junit.runner.** -dontwarn android.test.** -dontwarn android.support.test.**...GlSurfaceView从名字就可以看出,它是一个SurfaceView,看源码可知,GlSurfaceView继承自SurfaceView。
SurfaceView简介 简单的说SurfaceView就是一个有Surface的View里面内嵌了一个专门用于绘制的Surface,SurfaceView控制这个Surface的格式和尺寸以及绘制位置...SurfaceView就是在Window上挖一个洞,它就是显示在这个洞里,其他的View是显示在Window上,所以View可以显式在 SurfaceView之上,你也可以添加一些层在SurfaceView...SurfaceView自身,因此将SurfaceView和window绑定在一起,而前面提到过每个window对应一个Surface, 所以SurfaceView也就内嵌了一个自己的Surface,可以认为...surfaceview变得可见时,surface被创建;surfaceview隐藏前,surface被销毁。 这样能节省资源。...从Android7.0开始,SurfaceView的窗口位置与其他View渲染同步更新。 这意味着在屏幕上平移和缩放SurfaceView不会导致渲染失真。
领取专属 10元无门槛券
手把手带您无忧上云