Wenn Sie ein Live-Video oder einen Inhaltsstrom wie Video oder eine OpenGL-Szene angezeigt werden sollen, können Sie TextureView von Android zur Verfügung gestellt, um zu verwenden, um das zu tun.
Um TextureView verwenden, alles, was Sie tun müssen, ist ihre SurfaceTexture.The SurfaceTexture kann dann verwendet werden, um Inhalte zu rendern. Um dies zu tun, müssen Sie nur zu tun, instanziieren ein Objekt dieser Klasse und umzusetzen SurfaceTextureListener Schnittstelle. Die Syntax ist wie folgt:
private TextureView myTexture; public class MainActivity extends Activity implements SurfaceTextureListener{ protected void onCreate(Bundle savedInstanceState) { myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this); setContentView(myTexture); } }
Danach, was Sie tun müssen, ist, seine Methoden überschreiben. Die Verfahren sind wie folgt aufgeführt -
@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) { }
Jede Ansicht, die in der Textur-Ansicht angezeigt wird, gedreht werden kann, und dessen Eigenschaft alpha kann durch die Verwendung eingestellt werdensetAlpha und setRotation Methoden. Die Syntax ist unten angegeben -
myTexture.setAlpha(1.0f); myTexture.setRotation(90.0f);
Zusätzlich zu diesen Verfahren gibt es andere in TextureView Klassenmethoden.Sie sind: -
Sr.No | Verfahren & Beschreibung |
---|---|
1 | getSurfaceTexture ()
Diese Methode gibt den SurfaceTexture von dieser Ansicht verwendet.
|
2 | GetBitmap (int width, int height)
Diese Methode gibt Gibt ein Bitmap-Darstellung des Inhalts des zugehörigen Oberflächenstruktur.
|
3 | getTransform (Matrix-Transformation)
Diese Methode liefert die Transformations assoziierten mit dieser Textur-Ansicht.
|
4 | Isopaque ()
Diese Methode gibt an, ob diese Ansicht ist undurchsichtig.
|
5 | lockCanvas ()
Diese Methode startet die Bearbeitung der Bildpunkte in der Oberfläche
|
6 | setOpaque (boolean opak)
Dieses Verfahren gibt an, ob der Inhalt dieser TextureView opak ist.
|
7 | setTransform (Matrix-Transformation)
Diese Methode setzt die Transformation mit dieser Textur-Ansicht zu verknüpfen.
|
8 | unlockCanvasAndPost (Canvas Leinwand)
Diese Methode Finish bearbeiten Pixel in der Oberfläche.
|
Beispiel
Das folgende Beispiel demonstriert die Verwendung von TextureView Klasse. Es Kästen einer einfachen Anwendung, mit dem Sie die Kamera in einer Textur-Ansicht anzeigen und ändern ihren Winkel, Orientierung etc erlaubt
Um bei diesem Beispiel zu experimentieren, müssen Sie diese auf einem Gerät, auf dem die Kamera vorhanden ist, ausgeführt werden.
Schritte | Bezeichnung |
---|---|
1 | Sie werden Android Studio IDE verwenden, um ein Android-Anwendung als TextureView unter einem Paket com.example.textureview erstellen und sie zu nennen. Bei der Erstellung dieses Projekt, stellen Sie sicher SDK Ziel und Kompilieren Sie mit der neuesten Version des Android SDK zu höheren Ebenen der APIs verwenden. |
2 | Ändern src / MainActivity.java Datei an Aktivität Code hinzufügen. |
3 | Ändern Sie das Layout XML-Datei res / layout / activity_main.xml jede GUI-Komponente hinzufügen, wenn erforderlich. |
5 | Führen Sie die Anwendung, und wählen Sie einen laufenden Android-Gerät und installieren Sie die Anwendung und überprüfen Sie die Ergebnisse. |
Hier ist der Inhalt des src / com.example.textureview / MainActivity.java.
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 { 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 } }
Hier beträgt der Gehalt an 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>
Hier ist der Standardinhalt der 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-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>
Lassen Sie uns versuchen, um Ihre TextureView Anwendung auszuführen. Ich nehme an, Sie Ihre aktuelle Android-Gerät mit dem Computer verbunden haben. Um die App vom Android-Studio, öffnen Sie eine der Aktivität Dateien Ihres Projekt auszuführen, und klicken Sie auf
Ausführen-Symbol in der Symbolleiste. Vor dem Start der Anwendung wird Android Studio Display folgende Fenster, um eine Option, wo Sie Ihre Android-Anwendung ausgeführt werden soll.
Wählen Sie Ihr Mobilgerät als Option und prüfen Sie dann Ihr mobiles Gerät, das folgende Bildschirm anzeigt. Dieser Bildschirm hat alpha-Eigenschaft auf 0.5und Rotation zu setzen 45.
Dieser Bildschirm hat alpha-Eigenschaft auf 1.5 und Rotation zu setzen 45.
Dieser Bildschirm hat alpha-Eigenschaft auf 1.0 und Rotation zu setzen 90.
0 التعليقات:
Kommentar veröffentlichen