Path,SurfaceView, GLSurfaceView, SurfaceTexture,VideoView以及TextureView

> 自定义View进阶-Path

安卓自定义View进阶-Path之玩出花样(PathMeasure)- http://blog.csdn.net/u013831257/article/details/51565591
Android 自定义View—Path的使用- http://blog.csdn.net/to_be_designer/article/details/48525957
Path类的最全面详解 - 自定义View应用系列- http://www.jianshu.com/p/2c19abde958c#
自定义View之绘图篇(二):路径(Path)- http://blog.csdn.net/u012551350/article/details/51245793
安卓自定义View进阶-Path基本操作- http://blog.csdn.net/u013831257/article/details/50784565
Android自定义View-Path基本操作- http://www.jianshu.com/p/726b714da133#

> Path/ PathMeasure/ PathEffect/ SVG
  Path在2D绘图中是一个很重要的东西。请关闭硬件加速,以免引起不必要的问题!Path, 轨迹,路径。Path可以沿着多个点绘制一条路径, 在Canvas中可以根据Path绘制不同的图形。
  绘制复杂的图形时我们一般是将 SVG 图像转换为 Path。Path 和 SVG 结合通常能诞生出一些奇妙的东西.
SVG与Path的转换:https://bigbadaboom.github.io/androidsvg/  https://github.com/geftimov/android-pathview
  https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/Code/SearchView.md


> SurfaceView, GLSurfaceView, SurfaceTexture,VideoView以及TextureView (View在游戏和视频中的使用及demo)

Android 5.0(Lollipop)中的SurfaceTexture,TextureView, SurfaceView和GLSurfaceView- http://blog.csdn.net/jinzhuojun/article/details/44062175

玩转Android Camera开发(二):使用TextureView和SurfaceTexture预览Camera 基础拍照demo- http://blog.csdn.net/yanzi1225627/article/details/33313707
PlayCamera_V2.0.0[TextureView预览Camera 拍照完整demo]- http://download.csdn.net/detail/yanzi1225627/7540903

> SurfaceView(API 1)

  SurfaceView从Android 1.0(API level 1)时就有 。它继承自类View,因此它本质上是一个View。但与普通View不同的是,它有自己的Surface。我们知道,一般的Activity包含的多个View会组成View hierachy的树形结构,只有最顶层的DecorView,也就是根结点视图,才是对WMS可见的。这个DecorView在WMS中有一个对应的WindowState。相应地,在SF中对应的Layer。而SurfaceView自带一个Surface,这个Surface在WMS中有自己对应的WindowState,在SF中也会有自己的Layer。

> GLSurfaceView(API 3)

  GLSurfaceView从Android 1.5(API level 3)开始加入,作为SurfaceView的补充。它可以看作是SurfaceView的一种典型使用模式。在SurfaceView的基础上,它加入了EGL的管理,并自带了渲染线程。另外它定义了用户需要实现的Render接口,提供了用Strategy pattern更改具体Render行为的灵活性。作为GLSurfaceView的Client,只需要将实现了渲染函数的Renderer的实现类设置给GLSurfaceView即可。

> SurfaceTexture(API 11)

  SurfaceTexture从Android 3.0(API level 11)加入。和SurfaceView不同的是,它对图像流的处理并不直接显示,而是转为GL外部纹理,因此可用于图像流数据的二次处理(如Camera滤镜,桌面特效等)。比如Camera的预览数据,变成纹理后可以交给GLSurfaceView直接显示,也可以通过SurfaceTexture交给TextureView作为View heirachy中的一个硬件加速层来显示。

> TextureView(API 14)

  TextureView在4.0(API level 14)中引入。它可以将内容流直接投影到View中,可以用于实现Live preview等功能。和SurfaceView不同,它不会在WMS中单独创建窗口,而是作为View hierachy中的一个普通View,因此可以和其它普通View一样进行移动,旋转,缩放,动画等变化。值得注意的是TextureView必须在硬件加速的窗口中。

  SurfaceView是一个有自己Surface的View。它的渲染可以放在单独线程而不是主线程中。其缺点是不能做变形和动画。SurfaceTexture可以用作非直接输出的内容流,这样就提供二次处理的机会。与SurfaceView直接输出相比,这样会有若干帧的延迟。同时,由于它本身管理BufferQueue,因此内存消耗也会稍微大一些。TextureView是一个可以把内容流作为外部纹理输出在上面的View。它本身需要是一个硬件加速层。事实上TextureView本身也包含了SurfaceTexture。它与SurfaceView+SurfaceTexture组合相比可以完成类似的功能(即把内容流上的图像转成纹理,然后输出)。区别在于TextureView是在View hierachy中做绘制,因此一般它是在主线程上做的(在Android 5.0引入渲染线程后,它是在渲染线程中做的)。而SurfaceView+SurfaceTexture在单独的Surface上做绘制,可以是用户提供的线程,而不是系统的主线程或是渲染线程。另外,与TextureView相比,它还有个好处是可以用Hardware overlay进行显示。

---------------------------------------------

GLSurefaceView代码:

glSurefaceView.setRenderer(new GLSurfaceViewRender());
class GLSurfaceViewRender implements GLSurfaceView.Renderer {


@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
Log.i(TAG, "onSurfaceCreated");
gl.glClearColor(0.0f, 0f, 1f, 0.5f);
}

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
Log.i(TAG, "onSurfaceChanged");
}

@Override
public void onDrawFrame(GL10 gl) {
Log.i(TAG, "onDrawFrame");
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
}

你可能感兴趣的:(Path,SurfaceView, GLSurfaceView, SurfaceTexture,VideoView以及TextureView)