TextureView در برنامه نویسی اندروید
TextureView در برنامه نویسی اندروید
در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در مورد TextureView در برنامه نویسی اندروید صحبت خواهیم کرد.
اگر می خواهید یک جریان ویدئویی زنده یا هر جریان محتوایی مانند فیلم یا یک صحنه OpenGL نمایش دهید، می توانید از TextureView در برنامه نویسی اندروید برای انجام این کار استفاده کنید.
برای استفاده از TextureView، تنها کاری که باید انجام دهید این است که SurfaceTexture آن را تهیه کنید. سپس از SurfaceTexture می توان برای ارائه محتوا استفاده کرد.
برای انجام این کار ، فقط باید یک شی از این کلاس رابط SurfaceTextureListener را پیاده سازی کنید.
نحو آن در زیر آورده شده است:
1 2 3 4 5 6 7 8 |
private TextureView myTexture; public class MainActivity extends Activity implements SurfaceTextureListener{ protected void onCreate(Bundle savedInstanceState) { myTexture = new TextureView(this); myTexture.setSurfaceTextureListener(this); setContentView(myTexture); } } |
پس از آن ، آنچه شما باید انجام دهید این است که متد های آن را اعمال کنید. متدها به شرح زیر ذکر شده است
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@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) { |
هر view که در texture view نمایش داده می شود می تواند چرخانده شود و خاصیت آلفای آن با استفاده از متد های setAlpha و setRotation قابل تنظیم است.
نحو آن در زیر آورده شده است:
1 2 |
myTexture.setAlpha(1.0f); myTexture.setRotation(90.0f); |
به غیر از این متدها، متدهای دیگری نیز در کلاس TextureView موجود است. آنها در زیر ذکر شده اند:
- ()getSurfaceTexture
این متد SurfaceTexture استفاده شده توسط این View را برمی گرداند.
- (getBitmap(int width, int height
این متد بReturns a Bitmap representation از محتوای TextureView را باز می گرداند.
- (getTransform(Matrix transform
این متد تبدیل مرتبط با TextureView را برمی گرداند.
- ()isOpaque
این متد مات بودن این View را نشان می دهد.
- ()LockCanvas
این متد ویرایش پیکسل های سطح را شروع می کند
- (setOpaque(boolean opaque
این متد مات بودن محتوای این TextureView را نشان می دهد.
- (setTransform(Matrix transform
این متد تبدیل را برای ارتباط با TextureView تنظیم می کند.
- (unlockCanvasAndPost(Canvas canvas
این متد ویرایش پیکسل های سطح را به پایان می رساند.
مثال
مثال زیر استفاده از کلاس TextureView در برنامه نویسی اندروید را نشان می دهد. این برنامه به شما اجازه می دهد دوربین را در داخل TextureView مشاهده کرده و زاویه آن را تغییر دهید ،جهت گیری می کند.
برای آزمایش این مثال، باید این مورد را روی دستگاه واقعی که دوربین روی آن وجود دارد اجرا کنید.
شرح مراحل
1- شما از android studio IDE برای ایجاد یک برنامه اندروید و نامگذاری آن به عنوان TextureView در زیر یک پکیج com.example.textureview استفاده خواهید کرد.
2- برای افزودن کد فعالیت ، پرونده src / MainActivity.java را تغییر دهید.
3- طرح XML را تغییر دهید فایل res / layout / activity_main.xml در صورت لزوم هر جز GUI اضافه کنید.
5- برنامه را اجرا کنید و دستگاه اندرویدی در حال اجرا را انتخاب کنید و برنامه را روی آن نصب کنید و نتایج را بررسی کنید.
در اینجا محتوای src / com.example.textureview / MainActivity.java است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
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 } } |
در اینجا محتوای activity_main.xml است
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?xml version="1.0" encoding="utf-8"?> <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> |
در اینجا محتوای پیش فرض AndroidManifest.xml وجود دارد
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.textureview" > <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> |
بیایید برنامه خود را اجرا کنیم! من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.
دستگاه همراه خود را به عنوان گزینه انتخاب کنید و سپس دستگاه همراه خود را که در زیر صفحه نمایش داده می شود بررسی کنید. این صفحه دارای ویژگی آلفا روی 0.5 و چرخش روی 45 است.
این صفحه دارای ویژگی آلفا روی 1.5 و چرخش روی 45 تنظیم شده است.
ویژگی این آلفا روی 1.0 و چرخش روی 90 است
لیست جلسات قبل آموزش برنامه نویسی اندروید
-
- نگاهی کلی به برنامه نویسی اندروید
- تنظیمات محیط در برنامه نویسی اندروید
- معماری برنامه نویسی اندروید
- اجزای برنامه در برنامه نویسی اندروید
- Hello World در برنامه نویسی اندروید
- سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
- فعالیت در برنامه نویسی اندروید
- سرویس در برنامه نویسی اندروید
- گیرنده های پخش در برنامه نویسی اندروید
- ارائه دهنده محتوا در برنامه نویسی اندروید
- قطعات در برنامه نویسی اندروید
- Intent و فیلتر در برنامه نویسی اندروید
- طرح بندی رابط کاربری در برنامه نویسی اندروید
- کنترل های رابط کاربری در برنامه نویسی اندروید
- مدیریت رویدادها در برنامه نویسی اندروید
- استایل و تم ها در برنامه نویسی اندروید
- اجزای سفارشی در برنامه نویسی اندروید
- کشیدن و رها کردن در برنامه نویسی اندروید
- نوتیفیکیشن ها در برنامه نویسی اندروید
- سرویس های مبتنی بر مکان در برنامه نویسی اندروید
- ارسال ایمیل در برنامه نویسی اندروید
- ارسال پیامک در برنامه نویسی اندروید
- تماس های تلفنی در برنامه نویسی اندروید
- انتشار برنامه اندروید
- آموزش Alert Dialog در برنامه نویسی اندروید
- انیمیشن در برنامه نویسی اندروید
- ضبط صدا در برنامه نویسی اندروید
- مدیریت صدا در برنامه نویسی اندروید
- آموزش Auto Complete در برنامه نویسی اندروید
- بهترین شیوه ها در برنامه نویسی اندروید
- بلوتوث در برنامه نویسی اندروید
- استفاده از دوربین در برنامه نویسی اندروید
- کلیپ بورد در برنامه نویسی اندروید
- فونت سفارشی در برنامه نویسی اندروید
- پشتیبان گیری از داده ها در برنامه نویسی اندروید
- ابزارهای توسعه دهنده در برنامه نویسی اندروید
- آموزش شبیه ساز در برنامه نویسی اندروید
- اتصال به فیس بوک در برنامه نویسی اندروید
- حرکات لمسی در برنامه نویسی اندروید
- آموزش گوگل مپ در برنامه نویسی اندروید
- افکت های تصویر در برنامه نویسی اندروید
- Image Switcher در برنامه نویسی اندروید
- حافظه داخلی در برنامه نویسی اندروید
- آموزش کار با JetPlayer در برنامه نویسی اندروید
- JSON Parser در برنامه نویسی اندروید
- ارتباط با LinkedIn در برنامه نویسی اندروید
- نوار پیشرفت Spinner در برنامه نویسی اندروید
- بومی سازی در برنامه نویسی اندروید
- صفحه Login در برنامه نویسی اندروید
- MediaPlayer در برنامه نویسی اندروید
- Multitouch در برنامه نویسی اندروید
- Navigation در برنامه نویسی اندروید
- اتصال به اینترنت در برنامه نویسی اندروید
- NFC در برنامه نویسی اندروید
- PHP و MYSQL در برنامه نویسی اندروید
- Progress Circle دربرنامه نویسی اندروید
- Progress Bar در برنامه نویسی اندروید
- Push Notification در برنامه نویسی اندروید
- RenderScript در برنامه نویسی اندروید
- RSS Reader در برنامه نویسی اندروید
- Screen cast در برنامه نویسی اندروید
- SDK Manager در برنامه نویسی اندروید
- سنسورها در برنامه نویسی اندروید
- Session در برنامه نویسی اندروید
- Shared Preferences در برنامه نویسی اندروید
- پروتکل SIP در برنامه نویسی اندروید
- Spelling Checker در برنامه نویسی اندروید
- پایگاه داده SQLite در برنامه نویسی اندروید
- Support Library در برنامه نویسی اندروید
- تست برنامه های اندروید
- قابلیت متن به گفتار در برنامه نویسی اندروید
دیدگاه شما