SurfaceView的概念和优点及使用
程序员文章站
2024-03-26 08:03:48
...
一、概念:
SurfaceView本身是一个View,符合一切View的特性,需要通过Canvas画布绘制。
二、优点:
可以在另一个线程中更新界面
不会阻碍界面的交互
三、View和SurfaceView的区别
基于View的绘图效率不高,主要用于动画变化较少的程序
SurfaceView 绘图效率较高,用于界面更新频繁的程序,如相机预览。
SurfaceView 可以在另一个线程中更新界面。
四、SurfaceView 使用方式:
1.布局中放入SurfaceView
2.实现SurfaceHolder.Callback
3.绘制画布更新画布到SurfaceView(本例是在主线程中更新,可以另起一个线程更新)
通过lockCanvas()将返回绘制的canvas
绘制的过程中,对canvas的绘制不会立刻反应在界面上,直到执行unlockCanvasAndPost()提交刚才修改的界面
SurfaceView surfaceView=(SurfaceView)findViewById(R.id.surfaceview);
SurfaceHolder surfaceHolder=(SurfaceHolder) surfaceView.getHolder();
surfaceHolder.addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
/**
* 获得canvas的大小并锁定canvas
*/
Canvas canvas=holder.lockCanvas();
Bitmap bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
canvas.drawBitmap(bitmap, 50, 50,new Paint());
/**
* 提交更新canvas
*/
holder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
});
上一篇: Java学习之路(五):方法定义和调用
下一篇: 【JavaSE】Java方法练习题
推荐阅读
-
SurfaceView的概念和优点及使用
-
二维码学习(一):概念篇 博客分类: 二维码 二维码概念二维码分类QRCode二维码符号结构二维码的优点和缺点
-
Session和Cookie的概念及在Express框架中的使用
-
C++不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句求1+2+3+...+n的累加和
-
学习spirngmvc 和 使用 pager-taglib的一点小例子(包含 跳转页 及 每页显示数量控制) pager-taglibspringmvc分页插件
-
MyBatis中使用$和#所遇到的问题及解决办法
-
MyBatis中使用$和#所遇到的问题及解决办法
-
使用java web 在jsp文件及Class中连接MySQL和SQLsever 的驱动方法
-
使用java web 在jsp文件及Class中连接MySQL和SQLsever 的驱动方法
-
Java中使用JavaMail多发邮件及邮件的验证和附件实现