首页
学习
活动
专区
圈层
工具
发布

走进SurfaceView

abstract Canvas lockCanvas() 获取一个Canvas对象,并锁定之。所得到的Canvas对象,其实就是Surface中一个成员。...如果设置这种类型则就不能调用lockCanvas来获取Canvas对象了。需要注意的是,在高版本的Android SDK中,setType这个方法已经被depreciated了。...SurfaceView如果为用户可见的时候,创建SurfaceView的SurfaceHolder用于显示视频流解析的帧图片,如果发现SurfaceView变为用户不可见的时候,则立即销毁SurfaceView...,backCanvas存储的是上一次更改前的视图,当使用lockCanvas()获取画布时,得到的实际上是backCanvas而不是正在显示的frontCanvas,之后你在获取到的backCanvas...例如,如果你已经先后两次绘制了视图A和B,那么你再调用lockCanvas()获取视图,获得的将是A而不是正在显示的B,之后你将重绘的C视图上传,那么C将取代B作为新的frontCanvas显示在SurfaceView

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    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对象 --

    2K90

    Android 获取屏幕尺寸与密度

    android中获取屏幕的长于宽,参考了网上有很多代码,但结果与实际不符,如我的手机是i9000,屏幕大小是480*800px,得到的结果却为320*533 结果很不靠谱,于是自己写了几行代码,亲测一下...测试参数: 测试环境: i9000(三星) 物理屏幕:480*800px density :1.5 测试代码: // 获取屏幕密度(方法1) int screenWidth =...getDefaultDisplay", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight); // 获取屏幕密度...(111)", "screenWidth=" + screenWidth + "; screenHeight=" + screenHeight); // 获取屏幕密度...放大了实际屏幕值,例如:HTC G14 在HTC G14上,实际屏幕大小,直接通过dm.widthPixels、dm.heightPixels便得到了实际物理屏幕大小(540,960) 导致无法通过一种通用的方法获取真实物理屏幕大小的原因

    2.8K30

    SurfaceView的那点事儿

    ---- SurfaceView的使用 SurfaceView的使用虽然比View要复杂,但是SurfaceView在使用时有一套使用的模板代码,大部分的SurfaceView绘图操作都可以套用这样的模板代码来进行编写...通常情况下,使用以下步骤来创建一个SurfaceView的模板 创建SurfaceView 创建自定义的SurfaceView 继承自 SurfaceView,并且实现两个接口:SurfaceHolder.Callback...---- 使用SurfaceView 通过SurfaceHolder对象的lockCanvas()方法,就可以获取当前的Canvas绘图对象。...不过需要注意的是,获取到的Canvas对象还是继续上次的Canvas对象,而不是一个新的对象。...* View里,我们自定义一个View,在onDraw()里完成绘制,另外View还有个onTouchEvent的方法, 我们可以在获取用户的手势操作!

    86530

    整理获取 viewport 和 element 尺寸和位置方法

    整理获取 viewport 和 element 尺寸和位置方法 ⭐️ 更多前端技术和知识点,搜索订阅号 JS 菌 订阅 视口页面或窗口的位置和宽高 获取视口宽高 下面方法是包括滚动条的宽高,不支持 IE8...window.innerWidth window.innerHeight width + padding + border + 滚动条 另外 outerWidth 浏览器兼容差,可获取包括工具栏的宽高...元素占用的空间尺寸和位置 getBoundingClientRect 使用方法 getBoundingClientRect() 返回的值见下图: ?.../border-top-width 的值,就是边框的宽度 offsetWidth/offsetHeight 同样可以使用 offsetWidth/offsetHeight 来获取元素包括滚动条和边框的尺寸...= null) { x += e.offsetLeft; y += e.offsetTop; e = e.offsetParent; // 获取最近的祖先定位元素

    1.4K20
    领券