这篇文章给大家介绍如何进行SurfaceView的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
SurfaceView简介
SurfaceView本身是一个View,符合一切View的特性,需要通过Canvas画布绘制。可以在另一个线程中更新界面,不会阻碍界面的交互。
SurfaceView 绘图效率较高,用于界面更新频繁的程序,如相机预览。一些游戏的动画效果也一般用SurfaceView来实现。
实现效果
我们这次想实现的效果是说上去的话能够直接显示在弹出的语音实别框里。
代码演示
语音实别的这块实现主要还是看《Android集成科大讯飞SDK实现语音识别》文章里的介绍吧,我们这次的代码主要是看SurfaceView
(1)创建SurfaceView
创建自定义的SurfaceView继承自SurfaceView,并实现两个接口:SurfaceHolder.Callback代码如下:
通过实现这个接口,就需要在自定义的SurfaceView中实现接口的方法,对于SurfaceHolder.Callback方法,需要实现如下方法,其实就是SurfaceView的生命周期:
上面的DrawText是我们的核心方法,一会儿再介绍
(2)初始化SurfaceView
在自定义的SurfaceView的构造方法中,需要对SurfaceView进行初始化,包括SurfaceHolder的初始化、如支持透明度,防止被其它控件遮挡。代码如下:
(3)使用SurfaceView
通过SurfaceHolder对象的lockCanvans()方法,我们可以获取当前的Canvas绘图对象。接下来的操作就和自定义View中的绘图操作一样了。需要注意的是这里获取到的Canvas对象还是继续上次的Canvas对象,而不是一个新的对象。因此,之前的绘图操作都会被保留,如果需要擦除,则可以在绘制前,通过定义一个Paint,然后drawPaint()方法来进行清屏操作。
核心方法DrawText
上面这段可以看到,我们先通过SurfaceHolder对象的lockCanvans()获取到canvas,然后利用了一个Paint进行了一次清屏操作,防止上次字符重叠,接下来就是用的TextPaint进行文字的绘制。
到这里我们的SurfaceView就已经定义好了。
调用SurfaceView
我们新建一个IattextActivity
然后对应的布局文件里面加入我们的TextSurfaceview和一个ImageView
效果如下:
调用SurfaceView
整个Activity的代码
关于如何进行SurfaceView的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/223873.html