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地址进行查阅。

更多相关文章

  1. Android(安卓)文字绘制,多行文字绘制
  2. Android(安卓)使用AIDL调用外部服务 (转)
  3. Android(安卓)Audio代码分析10 - audio_track_cblk_t::framesRea
  4. Bitmap recycle()
  5. Android的绘制详解(Canvas、Paint、Path等)
  6. android graphic(3)—surfaceflinger的启动流程
  7. Android中 startService()和bindService()的区别
  8. Android分享---调用系统自带的分享功能
  9. Activity生命周期和对话框

随机推荐

  1. 【Android(安卓)Training - 04】保存数据
  2. 冰淇淋三明治 (Android(安卓)4.0)介绍
  3. MAC系统Android(安卓)Studio默认debug签
  4. Android(安卓)StrictMode 详解
  5. android面试一些常见的问题
  6. Android横竖屏总结全
  7. android的binder机制研究(C++部分)
  8. 【Android(安卓)UI】ListView系列一(基础
  9. Android使用Cordova框架开发Android(安卓
  10. android资源引用