关于SurfaceView类
来源:互联网 发布:网络暴力危害数据 编辑:程序博客网 时间:2024/05/18 00:15
关于SurfaceView类:
SurfaceView 可以直接访问一个画布,提供给需要直接画像素而不是使用窗体部件的应用使用的。每一个SurfaceView创建一个Canvas对象,用来管理View在SurfaceView的绘图操作。
使用SurfaceView时需要实现SurfaceHolder.Callback接口。一下是这个接口的方法:
surfaceChange:在Surface的大小改变时激发。
surfaceCreate:在创建Surface时激发。
surfaceDestroy:在销毁Surface时激发。
addCallback:给SurfaceView添加一个回调函数
lockCanvas:锁定画布,绘图之前必须锁定画布才能得到当前画布对象。
unlockCanvasAndPost:绘制完成之后解锁画布。
RemoveCallback:从SurfaceView中移除回调函数。
****SurfaceView和view明显的不同是:Surface不需要通过线程来更新视图,但在绘制之前必须使用lockCanvas方法来锁定画布,并得到画布,然后在画布上绘制,当绘制完成之后,使用unlockCanvasAndPost方法来解锁画布。这样才能显示在屏幕上。
附上一个例子:
public class TestSurfaceViewActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setContentView(R.layout.main);
setContentView(new Myview(this));
}
//内部类
class Myview extends SurfaceView implements SurfaceHolder.Callback{
SurfaceHolder surfaceHolder;
public Myview(Context context) {
super(context);
surfaceHolder=this.getHolder();
surfaceHolder.addCallback(this);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
public void surfaceCreated(SurfaceHolder holder) {
new Thread(new Mythread()).start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
//内部类的内部类实现
class Mythread implements Runnable{
public void run() {
Canvas canvas=surfaceHolder.lockCanvas();
Paint paint=new Paint();
paint.setColor(Color.RED);
canvas.drawRect(new Rect(40, 60, 80, 80), paint);
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
}
- 关于SurfaceView类
- 关于SurfaceView
- 关于SurfaceView
- 关于SurfaceView的问题
- 关于SurfaceView的问题
- 关于surfaceview的理解
- 关于SurfaceView学习.
- 关于SurfaceView的使用
- 关于surfaceview的使用
- 关于Android之SurfaceView
- 关于android surfaceview
- 关于SurfaceView的截图问题
- 关于SurfaceView控件设置透明
- SurfaceView的操作类
- surfaceview
- SurfaceView
- surfaceview
- surfaceview
- Android精简小笔记(8):Activity转换时的效果设置
- Intent调用大全
- hdu 1016 很水的dfs
- oracle多表查询实例
- 各类资料汇总
- 关于SurfaceView类
- Android精简小笔记(9):Spinner的用法(下拉选项控件):
- 分析图库
- 解决IE8在VS2008环境下不能调试的问题
- postMessage
- poj 3254约瑟夫问题(队列实现)
- Android精简小笔记(10):长按屏幕时弹出对话框
- 诺记一则,还可以再降一点~!
- Eclipse RCP中使用Swing组件