package com.example.administrator.mystudent.surfaceView;

 import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.view.SurfaceHolder;
import android.view.SurfaceView; import com.example.administrator.mystudent.R; /**
* Created by Administrator on 2016/9/13.
*/
public class TestSufaceView extends SurfaceView implements SurfaceHolder.Callback { private SurfaceHolder holder;
private MyThread myThread; public TestSufaceView(Context context) {
super(context);
holder = this.getHolder();
holder.addCallback(this);
myThread = new MyThread(holder);//创建一个绘图线程 } /**
* @param holder 在创建时激发,一般在这里调用画图的线程
*/
@Override
public void surfaceCreated(SurfaceHolder holder) { myThread.isRun = true;
myThread.start();
} /**
* @param holder
* @param format
* @param width
* @param height 在surface的大小发生改变时激发
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } /**
* @param holder 销毁时激发,一般在这里将画图的线程停止、释放
*/
@Override
public void surfaceDestroyed(SurfaceHolder holder) { myThread.isRun = false;
} //线程内部类
class MyThread extends Thread {
private SurfaceHolder holder;
public boolean isRun; public MyThread(SurfaceHolder holder) {
this.holder = holder;
isRun = true;
} @Override
public void run() { int count = 0;
while (isRun) {
Canvas c = null;
try {
synchronized (holder) {
c = holder.lockCanvas();//锁定画布,一般在锁定后就可以通过其返回的画布对象Canvas,在其上面画图等操作了。
c.drawColor(Color.BLACK);//设置画布背景颜色
Paint p = new Paint(); //创建画笔
p.setColor(Color.WHITE);
Rect r = new Rect(100, 50, 300, 250);
c.drawRect(r, p);
c.drawText("这是第" + (count++) + "秒", 100, 310, p);
Thread.sleep(1000);//睡眠时间为1秒
}
}
catch(Exception e){
e.printStackTrace();
} finally
{
if (c != null)
{
holder.unlockCanvasAndPost(c);//结束锁定画图,并提交改变。
}
}
}
} }
}

最新文章

  1. 掌握javascript中的最基础数据结构-----数组
  2. [SCOI2007] 修车
  3. Groovy 模版引擎
  4. C语言面试题大汇总
  5. js、jQuery操作input大全 不断完善
  6. Ajax结合Js操作灵活操作表格
  7. 用 CALayer 定制下载进度条控件
  8. 提高效率的便签By番茄时间管理 win7标签,小功能,大作用
  9. 正确的 Composer 扩展包安装方法
  10. 微端游戏启动器LAUNCHER的制作之MFC版一(序和进程通信)
  11. 【Java】Objects 源码学习
  12. Iterm2/Mac自带终端工具快速进入你想进入的虚拟机教程
  13. LocalVariableTable之 Slot 复用
  14. node(基础)_node.js中的http服务以及模板引擎的渲染
  15. win7下一劳永逸地解决触控板禁用的问题
  16. C#数据结构----------------------------哈希表源码解析
  17. chromedriver与chrome版本对应表,firefox、geckodriver
  18. Windoows窗口程序二
  19. 深入Redis 主从复制原理
  20. oracle 基础知识(四) 构成

热门文章

  1. 工厂模式/factory模式/创建型模式
  2. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
  3. HDU 3364 Lanterns 高斯消元
  4. 标准MDL方法修改Page、NonPage内存的属性
  5. JQuery解析json数据
  6. css3 总结03
  7. PHP 汉字转拼音
  8. kafka storm hbase性能
  9. underscore.js依赖库函数分析二(查找)
  10. iOS学习08之C语言内存管理