textureview用法详解
来源:互联网 发布:jQuery数组 编辑:程序博客网 时间:2024/05/21 15:50
In order to use TextureView, all you need to do is get its SurfaceTexture.The SurfaceTexture can then be used to render content. In order to do this, you just need to do instantiate an object of this class and implement SurfaceTextureListener interface. Its syntax is given below:
private TextureView myTexture;public class MainActivity extends Activity implements SurfaceTextureListener{protected void onCreate(Bundle savedInstanceState) { myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this); setContentView(myTexture); }}
After that, what you need to do is to override its methods. The methods are listed as follows:
@Overridepublic void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) {}@Overridepublic boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) {}@Overridepublic void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1,int arg2) {}@Overridepublic void onSurfaceTextureUpdated(SurfaceTexture arg0) {}
Any view that is displayed in the texture view can be rotated and its alpha property can be adjusted by using setAlpha and setRotation methods. Its syntax is given below:
myTexture.setAlpha(1.0f);myTexture.setRotation(90.0f);
Example
The below example demonstrates the use of TextureView class. It crates a basic application that allows you to view camera inside a texture view and change its angle , orientation e.t.c.
To experiment with this example , you need to run this on an actual device on which camera is present
package com.example.textureview;import java.io.IOException;import android.annotation.SuppressLint;import android.app.Activity;import android.graphics.SurfaceTexture;import android.hardware.Camera;import android.os.Bundle;import android.view.Gravity;import android.view.Menu;import android.view.TextureView;import android.view.TextureView.SurfaceTextureListener;import android.view.View;import android.widget.FrameLayout;public class MainActivity extends Activity implements SurfaceTextureListener { private TextureView myTexture; private Camera mCamera; @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this); setContentView(myTexture); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @SuppressLint("NewApi") @Override public void onSurfaceTextureAvailable(SurfaceTexture arg0, int arg1, int arg2) { mCamera = Camera.open(); // Camera.Size previewSize = mCamera.getParameters().getPreviewSize(); //myTexture.setLayoutParams(new FrameLayout.LayoutParams( // previewSize.width, previewSize.height, Gravity.CENTER)); try {
<span style="white-space:pre"></span>//设置mCamera的表面结构为surface mCamera.setPreviewTexture(arg0); } catch (IOException t) { } mCamera.startPreview(); myTexture.setAlpha(1.0f); myTexture.setRotation(90.0f); } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture arg0) { mCamera.stopPreview(); mCamera.release(); return true; } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture arg0, int arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onSurfaceTextureUpdated(SurfaceTexture arg0) { // TODO Auto-generated method stub }}Here is the content of activity_main.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextureView android:id="@+id/textureView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /></RelativeLayout>Here is the default content of AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.textureview" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.CAMERA"/> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.textureview.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
参考:http://www.tuicool.com/articles/eimY73
- textureview用法详解
- textureview用法详解
- TextureView
- TextureView
- Android TextureView 与 SurfaceView用法区别
- Android 中的SurfaceTexture,TextureView, GLsurfaceview的区别与联系详解
- TextureView 使用
- Android_UI:TextureView
- android Multimedia实战(一)详解SurfaceView,TextureView之播放视频的四种方式
- android Multimedia实战(一)详解SurfaceView,TextureView之播放视频的四种方式
- android Multimedia实战(一)详解SurfaceView,TextureView之播放视频的四种方式
- Android之TextureView浅析
- android4.0 textureview
- android TextureView 浅析
- Android TextureView简易教程
- TextureView硬件加速lockCanvas
- TextureView官方Demo
- TextureView与Camera
- java高并发量网站解决方案
- Java编程注意事项
- (OK) can't modify the kernel IP routing table in the container
- 计算机网络学习笔记一
- JavaScript语法
- textureview用法详解
- CentOS6编译安装Apache2.4 & PHP5.6
- 鼠标点击角度
- Eclipse的SVN插件与本地客户端关联不上解决方案
- 设定schedule 每隔1秒向鼠标拖拽的当前位置发射一个Sprite
- XStream应用总结
- hbase api 1.0前后版本示例
- c#_HidUsb设备通信
- NoSQL之Redis---连接(connection)