استفاده از Gesture در اندروید

سه شنبه 24 آذر 1394

در این مقاله می خواهیم با استفاده از کشیدن روی صفحه ی گوشی خود یک toast را نمایش دهیم ، مثلا با کشیدن یک شکل نیم دایره پیغام happy را به صورت toast نمایش دهد.

استفاده از Gesture در اندروید

در این مقاله رنگ ها برای کشیدن یک Gesture به رنگ زرد است شما می توانید این رنگ را به صورت setGestureColor(Color.TRANSPARENT) در GestureOverlayView قرار دهید.

ابتدا شبیه ساز خود را باز کنید و نرم افزار Gesture builder را باز نمایید.

به صورت زیر:

یک Gesture می توانید خودتان اضافه نمایید به صورت زیر:

به عنوان مثال اسم happy را می نویسید و تصویر لبخند را بر روی صفحه می کشید

می توانید 3 کلمه ی دیگر را هم اضافه نمایید به صورت زیر :

حالا Android Debug Monitor را باز نمایید و به این آدرس بروید

یک فایل در این مسیر ذخیره شده است این فایل را بردارید و در پوشه ی raw پروژه ی خود قرار دهید

حالا باید در activity قطعه کد زیر را بنویسید:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="#ffc366"    >
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:gravity="center_horizontal"
            android:text="Draw the expression"
            android:layout_margin="10dip"/>
 
    <android.gesture.GestureOverlayView
            android:id="@+id/gesture_area"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1.0"
            android:background="#454545"/>
 
</LinearLayout>

در کلاس جاوا هم که ایجاد شده است باید قطعه کد زیر را بنویسید:

import android.gesture.Gesture;
import android.gesture.GestureLibraries;
import android.gesture.GestureLibrary;
import android.gesture.GestureOverlayView;
import android.gesture.Prediction;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Toast;
import java.util.ArrayList;
 
public class MainActivity extends Activity implements GestureOverlayView.OnGesturePerformedListener {
    private GestureLibrary gesLib;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        gesLib = GestureLibraries.fromRawResource(this, R.raw.expressions);
        if (!gesLib.load()) {
            finish();
        }
 
        GestureOverlayView overlay = (GestureOverlayView) findViewById(R.id.gesture_area);
        overlay.addOnGesturePerformedListener(this);
    }
 
    public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
        ArrayList<Prediction> predictions = gesLib.recognize(gesture);
 
         if (predictions.size() > 0) {
            Prediction prediction = predictions.get(0);
            
            if (prediction.score > 1.0) {
                    Toast.makeText(this, prediction.name, Toast.LENGTH_SHORT).show();
            }
        }
    }
}

GestureLibrary این یک کلاس abstract  است.

GestureLibrary از پوشه ی raw آن gesture ای که اول ایجاد کرده بودیم و در این پوشه انداختیم را صدا می زند.

GestureOverlayView یک پوشش transparent است برای دریافت gesture ها

onGesturePerformed یک متد است برای صدا زدن gesture ها استفاده می شود.

که اگر gesture را نشناخت هیچ اتفاقی نیفتد و لی اگر gesture از همان gesture هایی که اول اضافه کرده بودیم و آن را پیدا کرد یک پیغام toast نمایش دهد.

در آخر خروجی به صورت زیر خواهد شد.

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

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

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید