استفاده از Gesture در اندروید
سه شنبه 24 آذر 1394در این مقاله می خواهیم با استفاده از کشیدن روی صفحه ی گوشی خود یک toast را نمایش دهیم ، مثلا با کشیدن یک شکل نیم دایره پیغام happy را به صورت toast نمایش دهد.
در این مقاله رنگ ها برای کشیدن یک 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 نمایش دهد.
در آخر خروجی به صورت زیر خواهد شد.
- Android
- 2k بازدید
- 2 تشکر