可以在子线程绘画的View SurfaceView

SurfaceView是Android中的一个特殊View,它在单独的线程中进行画面重绘,区别于View必须在主线程更新。适用于高性能、低延迟的图形绘制,如动画和游戏场景。通过SurfaceHolder获取Canvas进行绘制,并使用lockCanvas和unlockCanvasAndPost进行同步操作,确保绘制过程不受干扰。使用SurfaceView可以提高UI性能,尤其在无用户交互的场景。
摘要由CSDN通过智能技术生成

转载请注明出处:王亟亟的大牛之路

最近两天都没有写文章,一方面是自己在看书,一方面不知道写什么,本来昨天想写Glide或者RxAndroid的东西结果公司的“狗屎”网怎么都刷不好Gradle我也是无语了(翻墙也没用),准备今天背着笔记本 回家搞,真是服了。。


抱怨的话不说了,来看下这一篇要讲的主角 SurfaceView,关于SurfaceView的文章其实在别的一些站点上也有,因为我之前没写过,所以也就一直没整这部分的内容(别人写的好坏反正找好的点自己吸收吧,嘿嘿)

问题:SurfaceView是什么?

View类的子类

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

这点很重要,那我们可以在哪使用它?那些一直在刷的,还会耗性能的一些UI内容我们可以让他去画,毕竟不在主线程(想想渐变这类的东西)

再例举一些使用场景,假设我要画一个视图他和用户有交互,那么用View还是SurfaceView?

像这样的情况就比较推荐用View因为要有Touch事件,用View更合适。而0交互的那些场景用用SurfaceView对性能会有一定的帮助,接下来用例子来具体描述如何用SurfaceView。


先上效果图

这里写图片描述

效果很简单就是在一个Activity里设置了个白色背景,然后写了个“你好”。

来看下代码(一些知识点在标注里说明)

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值