android动画之SurfaceView
2016-07-30 00:00
225 查看
由于view有以下两个缺陷:
1、缺乏双缓冲机制;
2、当需要更新view上面的图像时,必须重绘整个图像,效率低下;
因此SurfaceView登场了!SurfaceView一般与SurfaceHolder结合使用,SurfaceHolder用来在SurfaceView上画图,它使用下面的方法来获取Canvas对象:
lockCanvas(Rect rect); //获取指定区域,画图时只对指定区域进行更新,可以提高效率。
lockCanvas();
绘图完成后,使用下面的方法来释放绘图,提交所绘制的图形:
unlockCanvasAndPost(Canvas canvas);
需要说明的是该方法之后绘制的图形还处于缓冲中,下次再lockCanvas时,可能会"遮挡"它。
SurfaceHolder还可以添加回调函数,callbak中有三个方法:
public void surfaceCreated(SurfaceHolder holder); //SurfaceView被创建时调用
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height); //SurfaceView格式或大小发生变换时调用
public void surfaceDestroyed(SurfaceHolder holder); //SurfaceView被销毁时调用
看一个例子,基于SurfaceView开发一个示波器,效果如下:
关键代码如下:
view1 = (SurfaceView)findViewById(R.id.surfaceview1);
holder = view1.getHolder();
Canvas canvas = holder.lockCanvas(new Rect(cx,cy-2,cx+2,cy+2));
canvas.drawPoint(cx,cy,paint);
...
holder.unlockCanvasAndPost(canvas);
完整源码下载地址:点击打开链接
1、缺乏双缓冲机制;
2、当需要更新view上面的图像时,必须重绘整个图像,效率低下;
因此SurfaceView登场了!SurfaceView一般与SurfaceHolder结合使用,SurfaceHolder用来在SurfaceView上画图,它使用下面的方法来获取Canvas对象:
lockCanvas(Rect rect); //获取指定区域,画图时只对指定区域进行更新,可以提高效率。
lockCanvas();
绘图完成后,使用下面的方法来释放绘图,提交所绘制的图形:
unlockCanvasAndPost(Canvas canvas);
需要说明的是该方法之后绘制的图形还处于缓冲中,下次再lockCanvas时,可能会"遮挡"它。
SurfaceHolder还可以添加回调函数,callbak中有三个方法:
public void surfaceCreated(SurfaceHolder holder); //SurfaceView被创建时调用
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height); //SurfaceView格式或大小发生变换时调用
public void surfaceDestroyed(SurfaceHolder holder); //SurfaceView被销毁时调用
看一个例子,基于SurfaceView开发一个示波器,效果如下:
关键代码如下:
view1 = (SurfaceView)findViewById(R.id.surfaceview1);
holder = view1.getHolder();
Canvas canvas = holder.lockCanvas(new Rect(cx,cy-2,cx+2,cy+2));
canvas.drawPoint(cx,cy,paint);
...
holder.unlockCanvasAndPost(canvas);
完整源码下载地址:点击打开链接
相关文章推荐
- 从零开始Android游戏编程(第二版) 第六章 SurfaceView动画
- Android开发学习SurfaceView显示动画效果
- Android在SurfaceView做动画一般方法
- Android中使用SurfaceView和Canvas来绘制动画
- Android L(5.0)源码之图形与图像处理之动画——Frame、Tween、属性动画、SurfaceView
- Android进阶篇之引导页系列之强大的SurfaceView实现动画引导页(1)
- android SurfaceView绘制 重新学习--控制动画移动
- Android 自定义SurfaceView实现加载GIF动画
- 【Android开发学习08】SurfaceView显示动画效果
- Android的图形与图像处理之六 SurfaceView实现动画
- android自定义SurfaceView实现跑男动画
- 【Android2D游戏开发十四】(未完待续)手把手教你在SurfaceView中照样使用Android 动画—Tween Animation!
- android SurfaceView实现人物动画
- Android用surfaceView制作动画效果
- Android游戏开发----动画SurfaceView详解
- android中使用2D动画 — SurfaceView 转载
- Android游戏开发----动画SurfaceView详解
- Android使用属性动画ValueAnimator动态改变SurfaceView的背景颜色
- Android SurfaceView实现动画
- Android利用SurfaceView实现下雨的天气动画效果