সামাজিক এবং মেসেজিং অ্যাপে টেক্সট

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

ইমোজি নিয়ে কাজ করা

ইমোজি আধুনিক যোগাযোগের একটি অবিচ্ছেদ্য অংশ হয়ে উঠেছে, বিশেষ করে সামাজিক এবং মেসেজিং অ্যাপে। তারা ভাষার বাধা অতিক্রম করে, ব্যবহারকারীদের দ্রুত এবং কার্যকরভাবে আবেগ এবং ধারণা প্রকাশ করতে দেয়।

রচনায় ইমোজি সমর্থন

জেটপ্যাক কম্পোজ, অ্যান্ড্রয়েডের আধুনিক ঘোষণামূলক UI টুলকিট, ইমোজি পরিচালনাকে সহজ করে:

  • ইনপুট : TextField উপাদানটি স্থানীয়ভাবে ইমোজি ইনপুট সমর্থন করে।
  • প্রদর্শন : কম্পোজের Text উপাদান ইমোজিকে সঠিকভাবে রেন্ডার করে, ডিভাইস এবং প্ল্যাটফর্ম জুড়ে তাদের সামঞ্জস্যপূর্ণ উপস্থিতি নিশ্চিত করে যেগুলি ইমোজি2-সামঞ্জস্যপূর্ণ ডাউনলোডযোগ্য ফন্ট প্রদানকারী, যেমন Google Play পরিষেবা দ্বারা চালিত ডিভাইসগুলি অফার করে।

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

ভিউতে ইমোজি সমর্থন

আপনি যদি অ্যান্ড্রয়েড ভিউ ব্যবহার করেন, অ্যাপকম্প্যাট লাইব্রেরি 1.4 বা উচ্চতর TextView -এর প্ল্যাটফর্ম সাবক্লাসগুলির জন্য ইমোজি সমর্থন প্রদান করে:

  • ইনপুট : EditText এর AppCompat সংস্করণ স্থানীয়ভাবে ইমোজি ইনপুট সমর্থন করে।
  • প্রদর্শন : TextView , ToggleButton , Switch , Button , CheckedTextView , RadioButton , CheckBox , AutoCompleteTextView এবং MultiAutoCompleteTextView সমস্ত অ্যাপকোমপ্যাট সংস্করণগুলি ইমোজি ডিসপ্লে সমর্থন করে, যেমন ডিভাইসগুলি এবং প্ল্যাটফর্মগুলি জুড়ে ধারাবাহিক উপস্থিতি সরবরাহ করে যা একটি এমওজেআই 2-C-C-C-C-C-C-C-, Google Play পরিষেবা দ্বারা।

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

ইমোজি পিকার ব্যবহার করে

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

build.gradle এ লাইব্রেরি আমদানি করে শুরু করুন।

dependencies {
   implementation("androidx.emoji2:emojipicker:$version")
}

রচনার সাথে ইমোজি পিকার ব্যবহার করা

আপনি AndroidView কম্পোজেবল ব্যবহার করে কম্পোজে ইমোজি পিকার তৈরি করুন। এই স্নিপেটে একজন শ্রোতা রয়েছে যা আপনাকে জানাতে দেয় যখন একটি ইমোজি নির্বাচন করা হয়:

AndroidView(
    modifier = Modifier.fillMaxSize(),
    factory = { context ->
        val emojiPickerView = EmojiPickerView(context)
        emojiPickerView.setOnEmojiPickedListener(this::updateTextField)
        emojiPickerView
    },
)

কম্পোজ 1.7 BasicTextField প্রচুর নতুন কার্যকারিতা যোগ করে, যার মধ্যে TextFieldState সমর্থন সহ, যা আপনার ViewModel- এ বসতে পারে:

private val emojiTextFieldState = TextFieldState()

@Composable fun EmojiTextField() {
    BasicTextField(
        state = emojiTextFieldState,
    )
}

আপনি TextFieldState ব্যবহার করে কার্সার অবস্থানে পাঠ্য সন্নিবেশ করতে পারেন বা নির্বাচিত পাঠ্যটি প্রতিস্থাপন করতে পারেন, যেন আপনি IME এ টাইপ করছেন:

private fun insertStringAsIfTyping(textFieldState: TextFieldState, string: String) {
    textFieldState.edit {
        replace(selection.start, selection.end, string)
        // clear selection on replace if necessary
        if (hasSelection) selection = TextRange(selection.end)
    }
}

কলব্যাক সাহায্যকারী ফাংশন ব্যবহার করে BasicTextField আপডেট করতে পারে:

private fun updateTextField(emojiViewItem: EmojiViewItem) {
    insertStringAsIfTyping(emojiTextFieldState, emojiViewItem.emoji)
}

ভিউ সহ ইমোজি পিকার ব্যবহার করা

ইমোজি পিকার ভিউ এর সাথেও ভাল কাজ করে।

ইমোজিপিকারভিউ স্ফীত করুন। ঐচ্ছিকভাবে প্রতিটি ইমোজি সেলের পছন্দসই আকারের উপর ভিত্তি করে ইমোজিগ্রিডকলাম এবং ইমোজিগ্রিডরো সেট করুন।

<androidx.emoji2.emojipicker.EmojiPickerView
    …
    app:emojiGridColumns="9" />

কার্সার অবস্থানে একটি অক্ষর সন্নিবেশ করান বা নির্বাচিত পাঠ্যটি প্রতিস্থাপন করুন:

// Consider unregistering/reregistering anyTextWatcher that you might have as part of this
private fun insertStringAsIfTyping(editText: EditText, string: String) {
    val stringBuffer = StringBuffer(editText.text.toString())
    val index = editText.selectionStart
    if ( !editText.hasSelection() ) {
        stringBuffer.insert(index, string)
    } else {
        stringBuffer.replace(index, editText.selectionEnd, string)
    }
    editText.setText(stringBuffer.toString())
    editText.setSelection(index + string.length)
}

বাছাই করা ইমোজিতে একজন শ্রোতা প্রদান করুন এবং EditText এ অক্ষর যুক্ত করতে এটি ব্যবহার করুন।

// a listener example
emojiPickerView.setOnEmojiPickedListener {
   val editText = findViewById<EditText>(R.id.edit_text)
   insertStringAsIfTyping(editText, it.emoji)
}

শৈলী পাঠ্য

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

রচনায় শৈলী পাঠ্য

Text কম্পোজেবল স্টাইলিং বিকল্পগুলির একটি সম্পদ অফার করে, যার মধ্যে রয়েছে:

  • পাঠ্যের রঙ : পাঠ্যকে আলাদা করতে Color সেট করুন।
  • ফন্ট সাইজ : উপযুক্ত স্কেলের জন্য FontSize নিয়ন্ত্রণ করুন।
  • ফন্ট স্টাইল : টেক্সট ইটালিক করতে FontStyle ব্যবহার করুন।
  • ফন্টের ওজন : বোল্ড, হালকা, ইত্যাদি টেক্সট বৈচিত্রের জন্য FontWeight সামঞ্জস্য করুন।
  • ফন্ট পরিবার : একটি উপযুক্ত ফন্ট চয়ন করতে FontFamily ব্যবহার করুন।
Text(
    text = "Hello 👋",
    color = Color.Blue
    fontSize = 18.sp,
    fontWeight = FontWeight.Bold,
    fontFamily = FontFamily.SansSerif
)

আপনি থিম ব্যবহার করে আপনার অ্যাপ্লিকেশন জুড়ে ধারাবাহিকভাবে এই স্টাইলিং বিকল্পগুলি সেট করতে পারেন৷

MaterialTheme(
    // This theme would include Color.Blue (as appropriate for dark and light themes)
    colorScheme = colorScheme,
    content = content,
    typography = Typography(
        titleLarge = TextStyle(
            fontSize = 18.sp,
            fontFamily = titleFont,
            fontWeight = FontWeight.Bold
        ),
    ),
)

পাঠ্যে একাধিক শৈলী যোগ করুন

আপনি একটি AnnotatedString ব্যবহার করে একই Text মধ্যে বিভিন্ন স্টাইল সেট করতে পারেন।

তৈরি করা সহজ করার জন্য AnnotatedString এর একটি টাইপ-সেফ বিল্ডার , buildAnnotatedString রয়েছে।

@Composable
fun MultipleStylesInText() {
    Text(
        buildAnnotatedString {
            withStyle(style = SpanStyle(color = Color.Blue)) {
                append("M")
            }
            append("y ")

            withStyle(style = SpanStyle(fontWeight = FontWeight.Bold, color = Color.Red)) {
                append("S")
            }
            append("tyle")
        }
    )
}

কম্পোজে টেক্সট স্টাইলিং সম্পর্কে আরও অনেক তথ্যের জন্য স্টাইল টেক্সট দেখুন, একটি ছায়া যোগ করা , ব্রাশের সাহায্যে উন্নত স্টাইলিং এবং অস্বচ্ছতা সহ।

ভিউ-এ স্টাইল টেক্সট

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

ইমেজ কীবোর্ড এবং অন্যান্য সমৃদ্ধ সামগ্রী সমর্থন করে

ব্যবহারকারীরা প্রায়ই স্টিকার, অ্যানিমেশন এবং অন্যান্য ধরণের সমৃদ্ধ সামগ্রী ব্যবহার করে যোগাযোগ করতে চান৷ অ্যাপ্লিকেশানগুলির জন্য সমৃদ্ধ বিষয়বস্তু গ্রহণ করা সহজতর করার জন্য, Android 12 (API স্তর 31) একটি ইউনিফাইড API চালু করেছে যা আপনার অ্যাপকে যেকোনো উত্স থেকে সামগ্রী গ্রহণ করতে দেয়: ক্লিপবোর্ড, কীবোর্ড, বা টেনে আনা এবং ড্রপ করা৷ পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণগুলির সাথে পিছিয়ে থাকা সামঞ্জস্যের জন্য (বর্তমানে API স্তর 14-এ ফিরে আসুন), আমরা আপনাকে এই API-এর Android Jetpack (AndroidX) সংস্করণ ব্যবহার করার পরামর্শ দিই।

আপনি UI উপাদানগুলির সাথে একটি OnReceiveContentListener সংযুক্ত করেন এবং কোনও প্রক্রিয়ার মাধ্যমে সামগ্রী সন্নিবেশিত হলে একটি কলব্যাক পান৷ প্লেইন এবং স্টাইল করা টেক্সট থেকে মার্কআপ, ছবি, ভিডিও, অডিও ফাইল এবং অন্যান্য সমস্ত বিষয়বস্তু গ্রহণ করার জন্য কলব্যাক আপনার কোডের জন্য একক স্থান হয়ে ওঠে।

কীভাবে আপনার অ্যাপে সমর্থন প্রয়োগ করতে হয় সে সম্পর্কে আরও জানতে সমৃদ্ধ সামগ্রী পান দেখুন। আপনার অ্যাপের মধ্যে এবং অন্যান্য অ্যাপের মধ্যে ড্র্যাগ-এন্ড-ড্রপ বাস্তবায়ন সহজ করতে Jetpack Compose-এ এখন dragAndDropSource এবং dragAndDropTarget সংশোধক রয়েছে।