ইমোজি পিকার

ইমোজি পিকার হলো একটি UI সমাধান যা আধুনিক রূপ ও অনুভূতি, হালনাগাদ ইমোজি এবং ব্যবহারের সহজতা প্রদান করে। ব্যবহারকারীরা ইমোজি ও সেগুলোর বিভিন্ন রূপ ব্রাউজ করে নির্বাচন করতে পারেন অথবা তাদের সম্প্রতি ব্যবহৃত ইমোজিগুলো থেকে বেছে নিতে পারেন।

চিত্র ১. ইমোজি পিকার

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

বৈশিষ্ট্য

ইমোজি পিকারটিতে নিম্নলিখিত বৈশিষ্ট্যগুলো রয়েছে।

হালনাগাদ ইমোজি

নতুন প্রকাশিত ইমোজিগুলো বাছাই করে ইমোজি পিকার-এ অন্তর্ভুক্ত করা হয়। ইমোজি পিকার লাইব্রেরিটি একাধিক অ্যান্ড্রয়েড সংস্করণ এবং ডিভাইসে সামঞ্জস্যপূর্ণ।

আঠালো প্রকারভেদ

বিভিন্ন লিঙ্গ বা ত্বকের রঙের মতো বিকল্পগুলির একটি মেনু দেখতে কোনো ইমোজিতে দীর্ঘক্ষণ চাপ দিন। আপনার বেছে নেওয়া বিকল্পটি ইমোজি পিকার-এ সংরক্ষিত হয় এবং মূল প্যানেলে সর্বশেষ নির্বাচিত বিকল্পটি ব্যবহৃত হয়।

এই ফিচারের মাধ্যমে ব্যবহারকারীরা এক ট্যাপেই তাদের পছন্দের ইমোজি ভ্যারিয়েন্টগুলো পাঠাতে পারবেন।

ইমোজির বিভিন্ন রূপ
চিত্র ২. ইমোজির বিভিন্ন প্রকারভেদ।

সাম্প্রতিক ইমোজি

সাম্প্রতিক ইমোজি
চিত্র ৩. সাম্প্রতিক ইমোজিসমূহ।

RecentEmojiProvider এর দায়িত্ব হলো ‘Recently Used’ ক্যাটাগরির ইমোজিগুলো সরবরাহ করা। লাইব্রেরিটিতে একটি ডিফল্ট সাম্প্রতিক ইমোজি প্রোভাইডার রয়েছে যা সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রটি পূরণ করে:

  • নির্বাচিত সমস্ত ইমোজি শেয়ার্ড প্রেফারেন্সে অ্যাপ-ভিত্তিক ভাবে সংরক্ষিত হয়।
  • পিকারটি নির্বাচিত ইমোজিগুলো থেকে ডুপ্লিকেট বাদ দিয়ে, বিপরীত কালানুক্রমিক ক্রমে সর্বাধিক তিনটি সারি প্রদর্শন করে।

যদি এই ডিফল্ট আচরণই যথেষ্ট হয়, তাহলে আপনার setRecentEmojiProvider() ব্যবহার করার প্রয়োজন নেই।

তবে, আপনাকে প্রোভাইডারের আচরণ কাস্টমাইজ করার প্রয়োজন হতে পারে। এখানে কিছু সাধারণ পরিস্থিতি তুলে ধরা হলো:

  • আপনি প্রতিটি ব্যবহারকারী অ্যাকাউন্টের জন্য আলাদা আলাদা নির্বাচিত ইমোজি সংরক্ষণ করতে চান।
  • আপনি শেয়ার্ড প্রেফারেন্স ছাড়া অন্য ডেটা স্টোরেজ ব্যবহার করতে চান।
  • আপনি সাম্প্রতিক ইমোজিগুলো ব্যবহারের হার অনুসারে সাজিয়ে প্রদর্শন করতে চান।

এরপর আপনি RecentEmojiProvider ইন্টারফেসটি ইমপ্লিমেন্ট করতে এবং setRecentEmojiProvider() ব্যবহার করে এটি সেট করতে পারবেন।

দিক নির্বাচক

ইমোজি ১৫.১ থেকে শুরু করে, ইমোজি পিকার দ্বিমুখী ইমোজি সমর্থন করে। ব্যবহারকারীরা ইমোজির বাম এবং ডানমুখী সংস্করণের মধ্যে টগল করতে দ্বিমুখী সুইচারটিতে ট্যাপ করতে পারেন।

bidirectional left emoji

চিত্র ৪। বামমুখী দ্বিমুখী ইমোজি।

bidirectional right emoji

চিত্র ৫. ডানমুখী দ্বিমুখী ইমোজি।

একাধিক ব্যক্তির ইমোজি নির্বাচক

ব্যবহারকারীরা একাধিক ব্যক্তির ইমোজি নির্বাচন দেখতে ইমোজি জোড়া স্পর্শ করে ধরে রাখতে পারেন।

touch and hold emoji couple

চিত্র ৬। একাধিক ব্যক্তির ইমোজি নির্বাচন করতে একটি যুগল ইমোজি স্পর্শ করে ধরে রাখুন।

tap left emoji person

চিত্র ৭। একটি বাম-অর্ধেক ইমোজি ব্যক্তি নির্বাচন করুন।

tap right emoji person

চিত্র ৮। ডান অর্ধেক থাকা একটি মানুষের ইমোজি নির্বাচন করুন।

যখন ব্যবহারকারী কোনো ইমোজি যুগলের বাম বা ডান অর্ধেক ইমোজি ব্যক্তি নির্বাচন করেন, তখন সিলেক্টরটি নীচের-ডানদিকে একটি প্রিভিউ প্রদর্শন করে, যেমনটি চিত্র ৭ এবং ৮-এ দেখানো হয়েছে। ইমোজি যুগলের উভয় অর্ধেক নির্বাচন করার পর, ব্যবহারকারীরা নিজস্ব ইমোজি যুগল তৈরি করার জন্য প্রিভিউটি নির্বাচন করতে পারেন।

EmojiCompat এর সাথে সামঞ্জস্যতা

সক্রিয় করা থাকলে, ইমোজি পিকার-এ যত বেশি সম্ভব ইমোজি রেন্ডার করার জন্য একটি EmojiCompat ইনস্ট্যান্স ব্যবহার করা হয়। তবে, ইমোজি পিকার-এর জন্য EmojiCompat প্রয়োজন হয় না।

পূর্বশর্ত

আপনার অ্যাপটিকে অবশ্যই অ্যান্ড্রয়েড ৫.০ (এপিআই লেভেল ২১) বা তার উচ্চতর সংস্করণ টার্গেট করতে হবে।

লাইব্রেরি ব্যবহার করুন

  1. আপনার অ্যাপের build.gradle ফাইলে androidx.emoji2:emojipicker:$version ইম্পোর্ট করুন।

    dependencies {
        implementation "androidx.emoji2:emojipicker:$version"
    }
    
  2. ইমোজি পিকার ভিউটি ইনফ্লেট করুন এবং ঐচ্ছিকভাবে emojiGridRowsemojiGridColumns সেট করুন।

    • emojiGridColumns এর ডিফল্ট সংখ্যা হলো ৯।
    • প্যারেন্ট ভিউ-এর উচ্চতা এবং emojiGridColumns এর মানের উপর ভিত্তি করে সারির সংখ্যা গণনা করা হয়।
    • ব্যবহারকারী যে আরও ইমোজি দেখার জন্য স্ক্রল করতে পারবেন, তা বোঝাতে emojiGridRows এর জন্য একটি ফ্লোট ভ্যালু ব্যবহার করুন।
    <androidx.emoji2.emojipicker.EmojiPickerView
        android:id="@+id/emoji_picker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:emojiGridColumns="9" />
    
    val emojiPickerView = EmojiPickerView(context).apply {
        emojiGridColumns = 15
        layoutParams = ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.MATCH_PARENT
        )
    }
    
    findViewById<ViewGroup>(R.id.emoji_picker_layout).addView(emojiPickerView)
    
  3. কোনো ভিউতে নির্বাচিত ইমোজি যুক্ত করতে setOnEmojiPickedListener() ব্যবহার করুন। উদাহরণস্বরূপ, একটি EditText এ যুক্ত করতে, নিম্নলিখিতটি করুন:

    emojiPickerView.setOnEmojiPickedListener {
        findViewById<EditText>(R.id.edit_text).append(it.emoji)
    }
    
  4. ঐচ্ছিকভাবে RecentEmojiProvider সেট করুন, একটি উদাহরণ বাস্তবায়নের জন্য নমুনা অ্যাপটি দেখুন।

  5. ঐচ্ছিকভাবে স্টাইল কাস্টমাইজ করুন। সাধারণ থিম অ্যাট্রিবিউটগুলোকে ওভাররাইড করতে আপনার নিজস্ব স্টাইল তৈরি করুন এবং সেই স্টাইলটি EmojiPickerView তে প্রয়োগ করুন। উদাহরণস্বরূপ, colorControlNormal ওভাররাইড করলে ক্যাটাগরি আইকনের রঙ পরিবর্তিত হয়।

    <style name="CustomStyle" >
        <item name="colorControlNormal">#FFC0CB</item>
    </style>
    <androidx.emoji2.emojipicker.EmojiPickerView
        android:id="@+id/emoji_picker"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:theme="@style/CustomStyle"
        app:emojiGridColumns="9" />
    

নমুনা অ্যাপ

ইমোজি পিকার স্যাম্পল অ্যাপটি মৌলিক ব্যবহারের ক্ষেত্রগুলোর পাশাপাশি নিম্নলিখিত অতিরিক্ত দৃশ্যকল্পগুলোও প্রদর্শন করে:

  • emojiGridRows বা emojiGridColumns রিসেট করা হলে লেআউটের পুনর্গণনা।
  • একটি ওভাররাইড করা সাম্প্রতিক ইমোজি প্রদানকারী যা ব্যবহারের ফ্রিকোয়েন্সি অনুসারে সাজায়।
  • অতিরিক্ত স্টাইল কাস্টমাইজেশন।