Android-使用OpengGL实现的Canvas进行绘制(简单介绍)
来源:互联网 发布:微信开发教程 php 编辑:程序博客网 时间:2024/06/06 18:06
Android-使用OpengGL实现的Canvas进行绘制(简单介绍)
本文简单介绍一个Github开源库:
android-openGL-canvas
这个开源库的特点是提供一个类似 Android 的 canvas 那样的类。我们可以继承它的 GLTextureView 来实现自定义View, 接着就可以使用它的canvas来画自己想画的东西了。例如:
public class MyGLView extends GLTextureView { public MyGLView(Context context) { super(context); } public MyGLView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onGLDraw(ICanvasGL canvas) { // draw things with canvas here }}
和传统的自定义View不同,这个View是在自己的线程画的,而不是主线程。
* Canvas的用例
canvas.drawBitmap(textBitmap, left, top); // transform canvas.save(); canvas.rotate(rotateDegree, x, y); canvas.drawBitmap(bitmap, left, top); canvas.restore(); // or CanvasGL.BitmapMatrix matrix = new CanvasGL.BitmapMatrix(); matrix.postScale(2.1f, 2.1f); matrix.postRotate(90); canvas.drawBitmap(bitmap, matrix); // apply filter to the bitmap textureFilter = new ContrastFilter(2.8f); canvas.drawBitmap(bitmap, left, top, textureFilter);
是不是跟普通的canvas很像?
- 因为使用OpenGL,所以绘制效率高,亲测比硬件加速的View效率高一点,比没有硬件加速的View效率高很多。
- 如果需要自定义连续不断的动画,可以考虑使用它的GLContinuousTextureView,可以作为对SurfaceView和GLSurfaceView的替代品,比SurfaceView效率高很多。用法跟上边的例子一样,只是它的onGLDraw会无限循环地调用,达到不断绘制地效果。不过记得调用onResume和onPause。
- 它的 Canvas 可以使用 OpenGL 进行高效的图像处理,上方textureFilter就是例子。例如调节对比度,打马赛克之类的。它的处理方式跟一著名的图像处理库
GPUImage差不多。
效果:
还能与 Camera 结合
详细的请进入github地址进行查阅。
0 0
- Android-使用OpengGL实现的Canvas进行绘制(简单介绍)
- 【Android Canvas系列】使用canvas绘制简单的clock
- Android中使用Canvas绘制简单的图形(一)
- 简单的OpengGL ES 的使用
- Android中使用Canvas绘制简单的图形(二) 进阶 绘制钟表
- 使用canvas简单绘制心电图
- 一则通过Android Canvas动态绘制图形的实例介绍
- OpengGL绘制立方体的三种方法
- 使用 UIBezierPath 进行简单的图形绘制
- html5之canvas绘制图形的简单使用
- html5 canvas 实现简单绘制折线图
- 使用Canvas的drawTextOnPath方法实现沿着Path绘制文本
- 绘制Canvas的使用二
- 利用canvas进行一个饼形图的绘制
- android 用canvas 绘制简单圆形时钟
- Android 使用Canvas中的drawBitmap方法绘制拉伸的图片
- android Paint 和Canvas的简单使用
- Canvas 动态绘制简单的柱形图
- Atitit截屏功能的设计解决方案
- 第8天
- linux文件系统中各文件夹存放系统文件的作用
- 数组插入排序
- centos如何进入图形界面和centos已经进到图形界面后怎么打开命令行
- Android-使用OpengGL实现的Canvas进行绘制(简单介绍)
- Atitit 代理与分销系统(1) 子代理 充值总额功能设计概览 sum() groubpy subagt
- php连接mysql
- MardownDemo
- leetcode oj java arrangecoins
- javascripts页面跳转
- Android 资源整合
- JS设置cookie、读取cookie、删除cookie
- 自治事务和变异表的行级触发器部分问题