هیچ دوره ای در سبد آموزش شما وجود ندارد
Multitouch اندروید
صفحه نخستحالت Multitouch زماني كه بيش از يك انگشت صفحه را لمس كنند اتفاق مي افتد. اندرويد اجازه انتخاب اين حركات را مي دهد.
زمانی که چند انگشت روی صفحه نمایش لمس شود، اندروید رویدادهای زیر را فرخوانی می کند:
ردیف | رویداد و توضیحات |
1 | ACTION_DOWN
براي اولين نقطه كه صفحه را لمس مي كند اين عمل حركات را آغاز مي كند. |
2 | ACTION_POINTER_DOWN
براي نقاط زيادي كه بر صفحه وارد مي شود بيش از يك نقطه… |
3 | ACTION_MOVE
تغييري در طي لمس صفحه و حركت آن اتفاق مي افتد. |
4 | ACTION_POINTER_UP
فرستادن تماس بيشتر تا زماني كه يك نقطه كه اوليه نباشد بالا بيايد. . |
5 | ACTION_UP
فرستادن تماس تا زماني كه آخرين نقطه صفحه نمايش را ترك مي كند. |
بنابراين برای تشخیص هر یک از موارد ذکر شده فوق، شما باید متد onTouchEvent() را لحاظ کنید.
ترکیب متد فوق به صورت زیر است:
public boolean onTouchEvent(MotionEvent ev){ final int actionPeformed = ev.getAction(); switch(actionPeformed){ case MotionEvent.ACTION_DOWN:{ break; } case MotionEvent.ACTION_MOVE:{ break; } return true; } }
در اين موارد شما قادر به محاسبه از هر راهي هستيد. براي مثال زومينگ و شرايكينگ و غيره. براي بدست آوردن x و y شما مي توانيد از روش هاي getx و gety استفاده كنيد كه به قرار زير می باشد.
final float x = ev.getX(); final float y = ev.getY();
علاوه بر متدهای فوق، متدهای دیگری نیز برای مدیریت Multitouch در اندروید از کلاس ارائه شده که به شرح زیر است:
شماره | متد و توضیحات |
1 | getAction()
اين روش عمل انجام شده را باز مي گرداند. |
2 | getPressure()
اين روش تماس اوليه را براي مورد ضميمه شده باز مي گرداند. |
3 | getRawX()
اين روش بردار X اصلي را هماهنگ مي سازد. |
4 | getRawY()
اين روش بردار Y اصلي را هماهنگ مي سازد. |
5 | getSize()
اين روش اندازه را به حالت اندازه اوليه براي مورد ضميمه شده در مي آورد. |
6 | getSource()
اين روش منبع عمل را در دسترس قرار مي دهد. |
7 | getXPrecision()
اين روش دقت هماهنگي بردار X را كه گزارش داده شده است باز مي گرداند. |
8 | getYPrecision()
اين روش دقت هماهنگي بردار Y را كه گزارش داده شده است باز مي گرداند. |
مثال
در اينجا مثالي براي مولتي تاچ آمده است. برنامه حالات مولتي تاچ را مي سازد كه به شما اجازه مي دهد تا هماهنگي بين اين حركات را زماني كه مولتي تاچ اجرا مي شود ببينيد.
براي آزمايش كردن اين مثال شما بايد آن را بر روي يك دستگاه حقيقي امتحان كنيد.
مرحله | توضیحات |
1 | شما از Eclipse IDE براي ساختن برنامه اندرويدي با نام Multitouch استفاده خواهيد كرد و آن را در پوشه com.example.multitouch جاي خواهيد داد. |
2 | اصلاح src/MainActivity.java file به منظود افزودن كد هاي لازم. |
3 | اصلاح the res/layout/activity_main به منظور افزودن تركيبات XML به ترتيب |
4 | اصلاح the res/values/string.xml به منظور افزودن تركيبات رديفي لازم |
5 | برنامه را اجرا كنيد و يك وسيله اندرويدي اجرايي را انتخاب كنيد سپس برنامه را در آن نصب كنيد و نتيجه را باز بيني كنيد. |
محتوای main activity برنامه در فایل src/MainActivity.java:
package com.example.sairamkrishna.myapplication; import android.app.Activity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends Activity { float xAxis = 0f; float yAxis = 0f; float lastXAxis = 0f; float lastYAxis = 0f; EditText ed1, ed2, ed3, ed4; TextView tv1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ed1 = (EditText) findViewById(R.id.editText); ed2 = (EditText) findViewById(R.id.editText2); ed3 = (EditText) findViewById(R.id.editText3); ed4 = (EditText) findViewById(R.id.editText4); tv1=(TextView)findViewById(R.id.textView2); tv1.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { final int actionPeformed = event.getAction(); switch(actionPeformed){ case MotionEvent.ACTION_DOWN:{ final float x = event.getX(); final float y = event.getY(); lastXAxis = x; lastYAxis = y; ed1.setText(Float.toString(lastXAxis)); ed2.setText(Float.toString(lastYAxis)); break; } case MotionEvent.ACTION_MOVE:{ final float x = event.getX(); final float y = event.getY(); final float dx = x - lastXAxis; final float dy = y - lastYAxis; xAxis += dx; yAxis += dy; ed3.setText(Float.toString(xAxis)); ed4.setText(Float.toString(yAxis)); break; } } return true; } }); } }
طراحی برنامه در فایل res/layout/activity_main.xml:
<?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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:transitionGroup="true"> <TextView android:text="Multitouch example" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textview" android:textSize="35dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tutorials point" android:id="@+id/textView" android:layout_below="@+id/textview" android:layout_centerHorizontal="true" android:textColor="#ff7aff24" android:textSize="35dp" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/abc" android:layout_below="@+id/textView" android:layout_centerHorizontal="true" android:theme="@style/Base.TextAppearance.AppCompat" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_below="@+id/imageView" android:layout_alignRight="@+id/textview" android:layout_alignEnd="@+id/textview" android:hint="X-Axis" android:layout_alignLeft="@+id/textview" android:layout_alignStart="@+id/textview" android:textColorHint="#ff69ff0e" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText2" android:layout_below="@+id/editText" android:layout_alignLeft="@+id/editText" android:layout_alignStart="@+id/editText" android:textColorHint="#ff21ff11" android:hint="Y-Axis" android:layout_alignRight="@+id/editText" android:layout_alignEnd="@+id/editText" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText3" android:layout_below="@+id/editText2" android:layout_alignLeft="@+id/editText2" android:layout_alignStart="@+id/editText2" android:hint="Move X" android:textColorHint="#ff33ff20" android:layout_alignRight="@+id/editText2" android:layout_alignEnd="@+id/editText2" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editText4" android:layout_below="@+id/editText3" android:layout_alignLeft="@+id/editText3" android:layout_alignStart="@+id/editText3" android:textColorHint="#ff31ff07" android:hint="Move Y" android:layout_alignRight="@+id/editText3" android:layout_alignEnd="@+id/editText3" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Touch here" android:id="@+id/textView2" android:layout_alignParentBottom="true" android:layout_alignLeft="@+id/imageView" android:layout_alignStart="@+id/imageView" android:focusable="true" android:typeface="sans" android:clickable="true" android:textColor="#ff5480ff" android:textSize="35dp" /> </RelativeLayout>
محتوای فایل res/values/string.xml:
<resources> <string name="app_name">My Application</string> </resources>
محتوای فایل AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sairamkrishna.myapplication" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".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>
اجازه بدهید برنامه multitouch را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
دستگاه موبايلتان را به عنوان يك گزينه انتخاب كنيد و سپس آن را براي ديدن اين پيام چک كنيد.
به طور پیش فرض در پس زمینه برنامه چیزی را مشاهده نمی کنید، حالا روی عبارت Touch here ضربه بزنید تا نتیجه را ببینید:
شما خواهید دید که فیلد Move مقدار ۰ را دارد، زیرا شما فقط یک لمس را انجام داده اید.حالا بر روی صفحه ضربه بزنید و انگشت خود را بکشید تا مقدار فیلد فوق تغییر کند.