বাংলায় অ্যান্ড্রয়েড সহায়িকা - Bangla Android Guide

ইনপুট গেশচার ব্যবস্থপানা

অন্য অনেক ইউআই ফ্রেমওয়ার্কের মতো, অ্যান্ড্রয়েড একটি ইনপুট ইভেন্ট মডেল সাপোর্ট করে। ইউজার একশন একটি ইভেন্টে পরিনত হয় যা কলব্যাক সক্রিয় করে, কীভাবে আপনার অ্যাপরিকেশন ইউজারকে রেসপন্স করবে তা কাস্টমাইজ করতে আপনি কলব্যাক ওভাররাইড করতে পারেন। অ্যান্ড্রয়েড সিস্টেমের সবচেয়ে কমন ইনপুট ইভেন্ট হচ্ছে ‘টাচ’ যা onTouchEvent(android.view.MotionEvent)কে সক্রিয় করে। ইভেন্টটিকে চালিত করতে এই পদ্ধতি ওভাররাইড করুন:

 @Override
   public boolean onTouchEvent(MotionEvent event) {
    return super.onTouchEvent(event);
   }

টাচ ইভেন্ট নিজে নিদিষ্টভাবে কার্যকরী নয়। আধূনিক টাচ ইউআই গেশচারের শর্তে ইন্টারেকশন নির্ধারণ করে যেমন ট্যাপিং, পুলিং, পুশিং ফ্লিংগিং এবং জুমিং। ও টাচ ইভেন্টকে গেশচারে রূপান্তর করতে অ্যান্ড্রয়েড GestureDetector সরবরাহ করে।

ক্লাসের একটি ইনসটেন্সে পস করার মাধ্যমে একটি GestureDetector তৈরী করুন যা GestureDetector.OnGestureListener বাস্তবায়ন করে। আপনি যদি কিছু গেশচার প্রসেস করতে চান, আপনি GestureDetector.OnGestureListener ইন্টারফেস বাস্তবায়নের পরিবর্তে GestureDetector.SimpleOnGestureListener সম্প্রসারন করতে পারেন। উদাহরনস্বরূপ, এই কোড একটি ক্লাস তৈরী করে যা GestureDetector.SimpleOnGestureListener কে সম্প্রসারণ করে এবং onDown(MotionEvent) কে ওভাররাইড করে।

class mListener extends GestureDetector.SimpleOnGestureListener {
   @Override
   public boolean onDown(MotionEvent e) {
       return true;
   }
}
mDetector = new GestureDetector(PieChart.this.getContext(), new mListener());

আপনি GestureDetector.SimpleOnGestureListener ব্যবহার করুন বা না করুন, আপনাকে অবশ্যই একটি onDown()পদ্ধতি বাস্তবায়ন করতে হবে যা true ফেরত দেয়। এই ধাপটি প্রয়োজনীয় কারন সকল গেশচার একটি onDown()মেসেজ দিয়ে শুরু করে। আপনি যদি onDown()থেকে ভধষংব ফেরত আনেন, যেভাবে GestureDetector.SimpleOnGestureListener করে থাকে, সিস্টেম মনে করবে যে আপনি বাকী গেশচারগুলোকে অবহেলা করছেন, GestureDetector.SimpleOnGestureListener ’র অন্য পদ্ধতিকে কখনই কখনই কল করা হবে না। onDown()থেকে ভধষংব ফেরত আনার একমাত্র সময় হচ্ছে যদি আপনি সত্যিই একটি সম্পূর্ণ গেশচার পরিহার করতে চান। যখনই আপনি GestureDetector.SimpleOnGestureListener বাস্তবায়ন করবেন এবং GestureDetector’র একটি ইনসট্যান্স বাস্তবায়ন তৈরী করবেন, আপনি onTouchEvent()এ গ্রহণ করা টাচ ইভেন্ট ব্যাখ্যা করতে আপনার GestureDetector ব্যবহার করতে পারবেন।

@Override
public boolean onTouchEvent(MotionEvent event) {
   boolean result = mDetector.onTouchEvent(event);
   if (!result) {
       if (event.getAction() == MotionEvent.ACTION_UP) {
           stopScrolling();
           result = true;
       }
   }
   return result;
}

যখন আপনিonTouchEvent()একটি টাচ ইভেন্ট পাস করবেন যে এটা একটি গেশচারের অংশ হিসাবে চিহ্নিত হবে না । এটা false রিটার্ন করবে। আপনি এরপর আপনার নিজের কাস্টম-ডিটেকশন (চিহ্নত করা) কোড রান করতে পারেন।