فهرست آموزش برنامه نویسی اندروید

Multitouch اندروید

۱۳۹۸/۰۹/۰۲ ۳۶

حالت Multitouch زمانی که بیش از یک انگشت صفحه را لمس کنند اتفاق می افتد. اندروید اجازه انتخاب این حرکات را می دهد.

زمانی که چند انگشت روی صفحه نمایش لمس شود، اندروید رویدادهای زیر را فرخوانی می کند:

ردیف رویداد و توضیحات
۱ ACTION_DOWN

برای اولین نقطه که صفحه را لمس می کند این عمل حرکات را آغاز می کند.

۲ ACTION_POINTER_DOWN

برای نقاط زیادی که بر صفحه وارد می شود بیش از یک نقطه…

۳ ACTION_MOVE

تغییری در طی لمس صفحه و حرکت آن اتفاق می افتد.

۴ ACTION_POINTER_UP

فرستادن تماس بیشتر تا زمانی که یک نقطه که اولیه نباشد بالا بیاید. .

۵ 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 در اندروید از کلاس ارائه شده که به شرح زیر است:

شماره متد و توضیحات
۱ getAction()

این روش عمل انجام شده را باز می گرداند.

۲ getPressure()

این روش تماس اولیه را برای مورد ضمیمه شده باز می گرداند.

۳ getRawX()

این روش بردار X اصلی را هماهنگ می سازد.

۴ getRawY()

این روش بردار Y اصلی را هماهنگ می سازد.

۵ getSize()

این روش اندازه را به حالت اندازه اولیه برای مورد ضمیمه شده در می آورد.

۶ getSource()

این روش منبع عمل را در دسترس قرار می دهد.

۷ getXPrecision()

این روش دقت هماهنگی بردار X را که گزارش داده شده است باز می گرداند.

۸ getYPrecision()

این روش دقت هماهنگی بردار Y را که گزارش داده شده است باز می گرداند.

مثال

در اینجا مثالی برای مولتی تاچ آمده است. برنامه حالات مولتی تاچ را می سازد که به شما اجازه می دهد تا هماهنگی بین این حرکات را زمانی که مولتی تاچ اجرا می شود ببینید.

برای آزمایش کردن این مثال شما باید آن را بر روی یک دستگاه حقیقی امتحان کنید.

مرحله  توضیحات
۱ شما از Eclipse IDE برای ساختن برنامه اندرویدی با نام Multitouch استفاده خواهید کرد و آن را در پوشه com.example.multitouch جای خواهید داد.
۲ اصلاح src/MainActivity.java file به منظود افزودن کد های لازم.
۳ اصلاح the res/layout/activity_main به منظور افزودن ترکیبات XML به ترتیب
۴ اصلاح the res/values/string.xml به منظور افزودن ترکیبات ردیفی لازم
۵ برنامه را اجرا کنید و یک وسیله اندرویدی اجرایی را انتخاب کنید سپس برنامه را در آن نصب کنید و نتیجه را باز بینی کنید.

محتوای 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، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن RunEclipse Run Icon از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.

Anroid MediaPlayer Tutorial

دستگاه موبایلتان را به عنوان یک گزینه انتخاب کنید و سپس آن را برای دیدن این پیام چک کنید.

Android Multitouch Tutorial

به طور پیش فرض در پس زمینه برنامه چیزی را مشاهده نمی کنید، حالا روی عبارت Touch here ضربه بزنید تا نتیجه را ببینید:

Android Multitouch Tutorial

شما خواهید دید که فیلد Move مقدار ۰ را دارد، زیرا شما فقط یک لمس را انجام داده اید.حالا بر روی صفحه ضربه بزنید و انگشت خود را بکشید تا مقدار فیلد فوق تغییر کند.

Android Multitouch Tutorial

 

 

دانشجویار نماد اعتماد به دانشجویار مجوز نشر دیجیتال لوگو شرکت به پرداخت ملت logo-samandehi مجوز سازمان فنی حرفه ای کشور
blackFriday

پیش از شروع جشنواره بلک فرایدی
خودت رو برای یک خرید برق آسا آماده کن!


بلک فرایدی!

برای شرکت در جشنواره بلک فرایدی لطفا ثبت نام کنید.

  از الان برای بلک فرایدی آماده شو - رزرو تخفیف 90% ، برای همه آموزش ها  صفحه جشنواره