Android关于TextureView理解及基本使用
2017-06-07 15:18
2763 查看
TextureView文档大概的意思是:
TextureView可以用来显示内容流。这样一个内容流例如可以视频或者OpenGL的场景。内容流可以来自本应用程序以及其他进程。
Textureview必须在硬件加速开启的窗口中。
与SurfaceView相比,TextureView不会创建一个单独的窗口,这使得它可以像一般的View一样执行一些变换操作,比如移动、动画等等,例如,你可以通过调用myView.setAlpha(0.5f)将TextureView设置成半透明。
使用TextureView很简单:你需要使用的就是SurfaceTexture,SurfaceTexture可以用于呈现内容
TextureView的兄弟SurfaceView
应用程序的视频或者opengl内容往往是显示在一个特别的UI控件中:SurfaceView。SurfaceView的工作方式是创建一个置于应用窗口之后的新窗口。这种方式的效率非常高,因为SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(android普通窗口的视图绘制机制是一层一层的,任何一个子元素或者是局部的刷新都会导致整个视图结构全部重绘一次,因此效率非常低下,不过满足普通应用界面的需求还是绰绰有余),但是SurfaceView也有一些非常不便的限制。
因为SurfaceView的内容不在应用窗口上,所以不能使用变换(平移、缩放、旋转等)。也难以放在ListView或者ScrollView中,不能使用UI控件的一些特性比如
为了解决这个问题 Android 4.0中引入了TextureView。
TextureView
与SurfaceView相比,TextureView并没有创建一个单独的Surface用来绘制,这使得它可以像一般的View一样执行一些变换操作,设置透明度等。另外,Textureview必须在硬件加速开启的窗口中。
TextureView的使用非常简单,你唯一要做的就是获取用于渲染内容的SurfaceTexture。具体做法是先创建TextureView对象,然后实现SurfaceTextureListener接口,
myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this);
Activity
@Override
public void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) {
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1,int arg2) {
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture arg0) {
}
TextureView可以使用setAlpha和setRotation方法达到改变透明度和旋转的效果
myTexture.setAlpha(0.8f);
myTexture.setRotation(90.0f);
附上效果图:
源码地址:源码下载
TextureView可以用来显示内容流。这样一个内容流例如可以视频或者OpenGL的场景。内容流可以来自本应用程序以及其他进程。
Textureview必须在硬件加速开启的窗口中。
与SurfaceView相比,TextureView不会创建一个单独的窗口,这使得它可以像一般的View一样执行一些变换操作,比如移动、动画等等,例如,你可以通过调用myView.setAlpha(0.5f)将TextureView设置成半透明。
使用TextureView很简单:你需要使用的就是SurfaceTexture,SurfaceTexture可以用于呈现内容
TextureView的兄弟SurfaceView
应用程序的视频或者opengl内容往往是显示在一个特别的UI控件中:SurfaceView。SurfaceView的工作方式是创建一个置于应用窗口之后的新窗口。这种方式的效率非常高,因为SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(android普通窗口的视图绘制机制是一层一层的,任何一个子元素或者是局部的刷新都会导致整个视图结构全部重绘一次,因此效率非常低下,不过满足普通应用界面的需求还是绰绰有余),但是SurfaceView也有一些非常不便的限制。
因为SurfaceView的内容不在应用窗口上,所以不能使用变换(平移、缩放、旋转等)。也难以放在ListView或者ScrollView中,不能使用UI控件的一些特性比如
View.setAlpha()。
为了解决这个问题 Android 4.0中引入了TextureView。
TextureView
与SurfaceView相比,TextureView并没有创建一个单独的Surface用来绘制,这使得它可以像一般的View一样执行一些变换操作,设置透明度等。另外,Textureview必须在硬件加速开启的窗口中。
TextureView的使用非常简单,你唯一要做的就是获取用于渲染内容的SurfaceTexture。具体做法是先创建TextureView对象,然后实现SurfaceTextureListener接口,
myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this);
Activity
implements了
SurfaceTextureListener接口因此activity中需要重写如下方法:
@Override
public void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) {
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1,int arg2) {
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture arg0) {
}
TextureView可以使用setAlpha和setRotation方法达到改变透明度和旋转的效果
myTexture.setAlpha(0.8f);
myTexture.setRotation(90.0f);
附上效果图:
源码地址:源码下载
相关文章推荐
- Android关于开发过程中使用Webview时的基本设置。
- Android WebView系列文章1-关于WebView基本使用介绍
- Android关于开发过程中使用Webview时的基本设置。
- Android 提高 5 SurfaceView绘图容器的基本使用
- android 关于view 中 getTag()和setTag()方法使用示例
- Android的ViewPager关于列表的使用
- 关于android的VideoView的使用
- Android 关于ViewPager结合碎片Fragment的简单使用
- Android提高第二篇之SurfaceView的基本使用
- Android提高第二篇之SurfaceView的基本使用
- [转载+实践理解]Android动画---如何正确使用平移动画(关于fillBefore和fillAfter的一点说明)(转载)
- Android提高第二篇之SurfaceView的基本使用
- 【android】关于使用ViewPager和LayoutInflater的出现问题
- Android提高第二篇之SurfaceView的基本使用
- android花屏效果的实现(ViewPager的基本使用)
- android百度地图:地图的基本使用和MKMapViewListener
- webView控件基本使用(android)
- android中父view与子view关于触摸事件的理解
- Android中内容提供者ContentProvider的理解与基本使用
- Android学习小Demo(17)关于ViewPager和Fragment的使用