কীবোর্ড অ্যাকশন ম্যানেজ করা

Compose-এর মাধ্যমে চেষ্টা করুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। Compose-এ কীবোর্ড অ্যাকশন কীভাবে ম্যানেজ করতে হয় তা জানুন।

ব্যবহারকারী যখন এডিট করা যায় এমন টেক্সট ভিউতে ফোকাস করেন, যেমন EditText এলিমেন্ট এবং ব্যবহারকারীর কাছে একটি হার্ডওয়্যার কীবোর্ড অ্যাটাচ করা থাকে, তখন সমস্ত ইনপুট সিস্টেম দ্বারা পরিচালিত হয়। তবে, আপনি যদি কীবোর্ড ইনপুট ইন্টারসেপ্ট করতে বা সরাসরি নিজেই ম্যানেজ করতে চান, তাহলে KeyEvent.Callback ইন্টারফেস থেকে কলব্যাক পদ্ধতি প্রয়োগ করে তা করতে পারেন, যেমন onKeyDown() এবং onKeyMultiple()।

Activity এবং View ক্লাস দুটিই KeyEvent.Callback ইন্টারফেস প্রয়োগ করে, তাই আপনি সাধারণত এই ক্লাসগুলির এক্সটেনশনে কলব্যাক পদ্ধতিগুলি ওভাররাইড করেন, যেমন উপযুক্ত।

মনে রাখবেন: KeyEvent ক্লাস এবং সংশ্লিষ্ট API-এর মাধ্যমে কীবোর্ড ইভেন্ট ম্যানেজ করার সময়, মনে রাখবেন যে কীবোর্ড ইভেন্ট শুধুমাত্র হার্ডওয়্যার কীবোর্ড থেকেই আসে। সফ্ট ইনপুট মেথডের (স্ক্রিনের কীবোর্ড) কোনও কী-এর জন্য কী ইভেন্ট পাওয়ার উপর কখনও নির্ভর করবেন না।

সিঙ্গেল কী ইভেন্ট ম্যানেজ করুন

আলাদা আলাদা কী প্রেস ম্যানেজ করতে, onKeyDown() বা onKeyUp(), প্রয়োজন অনুযায়ী প্রয়োগ করুন। সাধারণত, আপনি শুধুমাত্র একটি ইভেন্ট পাবেন কিনা তা নিশ্চিত করতে চাইলে onKeyUp() ব্যবহার করেন। ব্যবহারকারী কোনও কী প্রেস করে ধরে রাখলে, onKeyDown() একাধিকবার কল করা হয়।

যেমন, এই প্রয়োগ গেম কন্ট্রোল করার জন্য কিছু কীবোর্ড 'কী'-তে কাজ করে:

Kotlin

override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
    return when (keyCode) {
        KeyEvent.KEYCODE_D -> {
            moveShip(MOVE_LEFT)
            true
        }
        KeyEvent.KEYCODE_F -> {
            moveShip(MOVE_RIGHT)
            true
        }
        KeyEvent.KEYCODE_J -> {
            fireMachineGun()
            true
        }
        KeyEvent.KEYCODE_K -> {
            fireMissile()
            true
        }
        else -> super.onKeyUp(keyCode, event)
    }
}

জাভা

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch (keyCode) {
        case KeyEvent.KEYCODE_D:
            moveShip(MOVE_LEFT);
            return true;
        case KeyEvent.KEYCODE_F:
            moveShip(MOVE_RIGHT);
            return true;
        case KeyEvent.KEYCODE_J:
            fireMachineGun();
            return true;
        case KeyEvent.KEYCODE_K:
            fireMissile();
            return true;
        default:
            return super.onKeyUp(keyCode, event);
    }
}

মডিফায়ার 'কী' হ্যান্ডেল করা

মডিফায়ার কী ইভেন্টে প্রতিক্রিয়া জানাতে, যেমন কোনও কী Shift বা Control-এর সাথে যুক্ত হলে, আপনি কলব্যাক পদ্ধতিতে পাস করা KeyEvent কোয়েরি করতে পারেন। বিভিন্ন পদ্ধতি পরিবর্তক কী সম্পর্কে তথ্য প্রদান করে, যেমন getModifiers() এবং getMetaState()। তবে, সবচেয়ে সহজ সমাধান হল, আপনি যে পরিবর্তক কী ব্যবহার করতে চান সেটি প্রেস করা হচ্ছে কিনা তা isShiftPressed() এবং isCtrlPressed()-এর মতো পদ্ধতি ব্যবহার করে চেক করা।

যেমন, এখানে onKeyUp() প্রয়োগের উদাহরণ দেওয়া হল, যেখানে Shift কী-এর সাথে অন্য কোনও কী প্রেস করে ধরে রাখার জন্য অতিরিক্ত হ্যান্ডলিংয়ের ব্যবস্থা করা হয়েছে:

Kotlin

override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
    return when (keyCode) {
        ...
        KeyEvent.KEYCODE_J -> {
            if (event.isShiftPressed) {
                fireLaser()
            } else {
                fireMachineGun()
            }
            true
        }
        KeyEvent.KEYCODE_K -> {
            if (event.isShiftPressed) {
                fireSeekingMissle()
            } else {
                fireMissile()
            }
            true
        }
        else -> super.onKeyUp(keyCode, event)
    }
}

জাভা

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch (keyCode) {
        ...
        case KeyEvent.KEYCODE_J:
            if (event.isShiftPressed()) {
                fireLaser();
            } else {
                fireMachineGun();
            }
            return true;
        case KeyEvent.KEYCODE_K:
            if (event.isShiftPressed()) {
                fireSeekingMissle();
            } else {
                fireMissile();
            }
            return true;
        default:
            return super.onKeyUp(keyCode, event);
    }
}

অতিরিক্ত রিসোর্স