surfaceView

来源:互联网 发布:弄璋乎弄瓦乎 编辑:程序博客网 时间:2024/06/05 21:17

surfaceView:
surface:表层,surfaceView表示的是表层的view对象,官方的文档解释为surfaceview

是在Window表面挖了个洞,surfaceview就显示在这个洞里,正常的view是显示在window上的。这几说明你可以在surfaceview纸上添加一些层(控件),类似Framelayout。

正常的view跟新和重绘需要调用view的invalidate方法吗,这个更新只能在UI线程中使用,surfaceview很好的地方就是允许其他线程绘制图形(使用canvas),根据这个特性,就可以控制绘制帧数,

surfaceview是一个view,有自己的生命周期,他需要另外一个线程去进行绘制操作,这个

线程在surfaceview中使用的是surfaceholder,surfaceholder需要在surfaceview初始化阶段开启自己的线程,surfaceholder保持一个surfaceview的引用,使用surfaceholder来操作surfaceview的生命周期,

下面代码就是自己的surfaceview,

package view;

import android.content.Context;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

/**
* Created by songtao on 2016/11/30.
*/

public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback{
public MySurfaceView(Context context) {
super(context);
initdata();
}

private void initdata() {    SurfaceHolder holder = getHolder();    holder.addCallback(this);}@Overridepublic void surfaceCreated(SurfaceHolder surfaceHolder) {}@Overridepublic void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {}@Overridepublic void surfaceDestroyed(SurfaceHolder surfaceHolder) {}

}

这个类中在surfaceview初始化的时候获得surfaceview中的surfaceholder对象,根据他设置
surfaceview的回调, surfaceCreated方法吗,当surfaceview被显示时调用,所以需要在这里面开启绘制线程,surfaceDestroyed方法销毁或隐藏surfaceview时调用的方法,这里可以关闭绘制的线程,

0 0
原创粉丝点击