package com.qiaoguo.surfaceviewproject;
import android.content.Context;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
/**
* Created by Administrator on 2018/3/20.
*/
public class SurfaceViewTemplate extends SurfaceView implements Runnable {
private Thread mThread;
private volatile boolean isRunning;
public SurfaceViewTemplate(Context context, AttributeSet attrs) {
super(context, attrs);
SurfaceHolder holder = getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
mThread = new Thread(SurfaceViewTemplate.this);
mThread.start();
}
@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {
}
@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
isRunning=false;
}
});
}
@Override
public void run() {
while (isRunning) {
drawSelf();
}
}
private void drawSelf() {
Canvas canvas=null;
try {
getHolder().lockCanvas();
if (canvas!=null){
//绘制
}
} catch (Exception e) {
e.printStackTrace();
}finally {
if (canvas!=null){
getHolder().unlockCanvasAndPost(canvas);
}
}
}
}
SurfaceView模板
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 上例中由于Stack类模板的声明中第二个参数是一个类型(typename Container),所以我们通过Sta...
- (2017-11-14-周二 00:30:16) SuperMemo 2000 only: Choose Ctrl...
- 这里有:1.函数模板的基本调用2.当函数模板和函数重载在一起的时候,先调用普通函数还是函数模板2.函数模板在c++...