Hướng dẫn TextureView trong lập trình Android

Discussion in 'Các mặt hàng khác' started by n_erudite, Dec 28, 2015.

  1. n_erudite

    n_erudite Thành Viên


    Để sử dụng TextureView, tất cả các bạn cần làm là có được SurfaceTexture. SurfaceTexture của nó sau đó có thể được dùng để biểu hiện nội dung. Để làm điều này, bạn chỉ cần làm nhanh chóng một đối tượng của lớp này và thực hiện các giao diện SurfaceTextureListener. Cú pháp của nó được đưa ra dưới đây khi bạn học lập trình android:
    Code:
    private TextureView myTexture;
    public class MainActivity extends Activity implements SurfaceTextureListener{
    protected void onCreate(Bundle savedInstanceState) {
    myTexture = new TextureView(this);
    myTexture.setSurfaceTextureListener(this);
    setContentView(myTexture);
    }
    }
    
    Sau đó, những gì bạn cần làm là ghi đè phương thức của nó. Các phương pháp được liệt kê như sau:

    Code:
    @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) {
    }
    Bất kỳ mọi view sẽ được hiển thị trong giao diện kết cấu có thể được luân chuyển và thuộc tính Alpha có thể được điều chỉnh bằng setAlpha và phương pháp setRotation. Cú pháp của nó được đưa ra dưới đây -

    Code:
    myTexture.setAlpha(1.0f);
    myTexture.setRotation(90.0f);
    Ngoài những phương pháp này, có những phương pháp khác có sẵn trong lớp TextureView. Chúng được liệt kê dưới đây -

    STT Phương pháp và mô tả
    1 getSurfaceTexture()
    Phương pháp này trả về SurfaceTexture sử dụng bởi quan điểm này.
    2 getBitmap(int width, int height)
    Phương thức này trả Trả về một đại diện Bitmap về nội dung của các kết cấu bề mặt có liên quan.
    3 getTransform(Matrix transform)
    Phương thức này trả các biến đổi có liên quan với điểm kết cấu này.
    4 isOpaque()
    Phương pháp này chỉ ra cho dù Xem này là đục.
    5 lockCanvas()
    Phương pháp này bắt đầu chỉnh sửa các điểm ảnh trên bề mặt
    6 setOpaque(boolean opaque)
    Phương pháp này chỉ ra cho dù nội dung của TextureView này là đục.
    7 setTransform(Matrix transform)
    Phương pháp này đặt ra các biến đổi để kết hợp với điểm kết cấu này.
    8 unlockCanvasAndPost(Canvas canvas)
    Hoàn thiện phương pháp này chỉnh sửa pixel trên bề mặt.

    Ví dụ

    Ví dụ dưới đây trình bày cách sử dụng các lớp TextureView. Nó thùng một ứng dụng cơ bản cho phép bạn xem ảnh bên trong một cái nhìn kết cấu và thay đổi góc của nó, định hướng vv

    Để thử nghiệm với ví dụ này, bạn cần phải chạy trên một thiết bị thực tế trên mà máy ảnh có mặt.

    Các bước Mô tả
    1 Bạn sẽ sử dụng Android Studio IDE để tạo ra một ứng dụng Android và tên nó là TextureView dưới một gói com.example.textureview. Trong khi tạo dự án này, chắc chắn bạn Target SDK và biên dịch với các phiên bản mới nhất của Android SDK sử dụng các cấp cao hơn của API.
    2 Sửa đổi file src/MainActivity.java thêm mã Hoạt động.
    3 Sửa đổi bố trí tập tin XML res/layout/activity_main.xml thêm bất kỳ thành phần giao diện nếu cần thiết.
    4 Chạy ứng dụng và chọn một thiết bị Android chạy và cài đặt các ứng dụng trên nó và kiểm tra kết quả.


    Dưới đây là nội dung của src/com.example.textureview/MainActivity.java.

    Code:
    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
    }
    }
    Nội dung của file activity_main.xml

    Code:
    <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>
    Nội dung của file AndroidManifest.xml

    Code:
    <?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>
    [​IMG]

    Chọn thiết bị di động của bạn như là một lựa chọn và sau đó kiểm tra thiết bị di động của bạn sẽ hiển thị sau màn hình. Màn hình này có thuộc tính Alpha đặt là 0,5 và luân chuyển thiết lập để 45.
    [​IMG]

    Màn hình này có thuộc tính Alpha đặt là 1,5 và luân chuyển thiết lập để 45.
    [​IMG]

    Màn hình này có thuộc tính Alpha đặt là 1.0 và luân chuyển thiết lập để 90.
    TextureView 4


    ----------- || -----------
    Trung tâm đào tạo Thiết kế đồ họa với các khóa học photoshop cùng đội ngũ giảng viên trẻ, chuyên nghiệp, tận tình và các khóa học lập trình php cơ bản đến nâng cao tại VietPro!