কাটআউট সম্পর্কে

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

পোর্ট্রেট মোডে কাটআউটের উদাহরণ
ছবি ১. পোর্ট্রেট মোডে কাট-আউটের উদাহরণ
ল্যান্ডস্কেপ মোডে কাটআউটের উদাহরণ
ছবি ২. ল্যান্ডস্কেপ মোডে কাট-আউটের উদাহরণ

Android 9 (API লেভেল 28) ও এর পরবর্তী যেকোনও ভার্সনে চলে এমন ডিভাইসে Android ডিসপ্লে কাটআউট কাজ করে। তবে, ডিভাইস প্রস্তুতকারকরা Android 8.1 বা তার আগের যেকোনও ভার্সনে চলমান ডিভাইসে ডিসপ্লে কাটআউটও কাজ করতে পারে।

এই পৃষ্ঠায়, Compose-এ কাটআউট সহ ডিভাইসের জন্য কীভাবে সহায়তা প্রয়োগ করতে হয় তা বর্ণনা করা হয়েছে। এর মধ্যে, কাটআউট এরিয়া—অর্থাৎ, ডিসপ্লে সারফেসে এজ-টু-এজ আয়তক্ষেত্র যা কাটআউট কন্টেন্ট করে—এর সাথে কীভাবে কাজ করতে হয় তা অন্তর্ভুক্ত।

ডিফল্ট কেস

API লেভেল ৩৪ বা তার নিচের ভার্সনকে টার্গেট করা অ্যাপ অথবা enableEdgeToEdge কল করে না এমন অ্যাক্টিভিটি, অ্যাপটি ডিসপ্লে কাটআউট থাকা সিস্টেম বারে ড্র না করলে, ডিফল্ট হিসেবে কাটআউট অঞ্চলে ড্র করবে না।

Android 15 বা এর পরের যেকোনও ভার্সন চলছে এমন ডিভাইসে API লেভেল 35 বা এর পরের যেকোনও ভার্সনকে টার্গেট করা অ্যাপ অথবা enableEdgeToEdge কল করা অ্যাক্টিভিটি, কাটআউট অঞ্চলে ড্র করে।

অন্যভাবে বলতে গেলে, Android 15 বা এর পরবর্তী যেকোনও ভার্সনে চলা ডিভাইসে API লেভেল ৩৫ বা এর পরবর্তী যেকোনও ভার্সনকে টার্গেট করা অ্যাপে নন-ফ্লোটিং উইন্ডোর জন্য LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT, LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES এবং LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER-কে LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS হিসেবে ব্যাখ্যা করা হয়।

কাটআউট সংক্রান্ত তথ্য ম্যানুয়ালি ম্যানেজ করা

কাটআউট এরিয়া যাতে গুরুত্বপূর্ণ টেক্সট, কন্ট্রোল বা ফাইন-টাচ রেcognition (কাটআউট এরিয়ায় টাচ সেনসিটিভিটি কম হতে পারে) প্রয়োজন এমন ইন্ট্যার‍্যাক্টিভ এলিমেন্টকে অস্পষ্ট করে না দেয়, তা নিশ্চিত করতে আপনাকে কাটআউট সংক্রান্ত তথ্য ম্যানেজ করতে হবে। কাট-আউট ম্যানেজ করার সময়, স্ট্যাটাস বারের উচ্চতা হার্ডকোড করবেন না, কারণ এর ফলে কন্টেন্ট ওভারল্যাপ বা কাট-অফ হয়ে যেতে পারে। পরিবর্তে, নিম্নলিখিত যেকোনও উপায়ে হ্যান্ডেল কাটআউট করুন:

কম্পোজের জন্য, আমরা সাজেস্ট করি যে আপনার কম্পোজেবল আইটেমে কাটআউট ইনসেট ম্যানেজ করতে displayCutout, safeContent অথবা safeDrawing ব্যবহার করুন। এই পদ্ধতিতে, যেখানে প্রয়োজন সেখানে ডিসপ্লে কাট-আউট প্যাডিং মেনে চলতে পারেন অথবা যেখানে প্রয়োজন নেই সেখানে তা এড়িয়ে যেতে পারেন।

Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) {
    drawRect(Color.Red, style = Stroke(2.dp.toPx()))
}