কম্পোজে কাটআউট

একটি ডিসপ্লে কাটআউট হল কিছু ডিভাইসের একটি এলাকা যা ডিসপ্লে পৃষ্ঠের মধ্যে প্রসারিত হয়। ডিভাইসের সামনে গুরুত্বপূর্ণ সেন্সরগুলির জন্য স্থান প্রদান করার সময় এটি প্রান্ত থেকে প্রান্তের অভিজ্ঞতার জন্য অনুমতি দেয়।

পোর্ট্রেট মোডে কাটআউট উদাহরণ
চিত্র 1 । পোর্ট্রেট মোডে কাটআউট উদাহরণ
ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ
চিত্র 2 । ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ

অ্যান্ড্রয়েড অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) এবং উচ্চতর ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করে। যাইহোক, ডিভাইস নির্মাতারা অ্যান্ড্রয়েড 8.1 বা তার নিচের ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করতে পারে।

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

ডিফল্ট কেস

ডিফল্টরূপে, প্রদর্শন কাটআউট উইন্ডো ইনসেট তথ্য অন্তর্ভুক্ত করা হয়. এই কারণে, যখন আপনি আপনার অ্যাপ এজ-টু-এজ তৈরির নির্দেশিকা অনুসরণ করেন তখন আপনার অ্যাপটি ডিসপ্লে কাটআউট এলাকায় আঁকবে না।

উদাহরণস্বরূপ, আপনি যখন Modifier.windowInsetsPadding(WindowInsets.safeContent) বা Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করেন, তখন আপনার অ্যাপ স্বয়ংক্রিয়ভাবে সেই জায়গাগুলিতে আঁকবে না যেখানে একটি কাটআউট রাখা হয়েছে। WindowInsets.safeContent এবং WindowInsets.safeDrawing উভয়ই ডিসপ্লে কাটআউট তথ্য ধারণ করে এবং একটি ডিভাইস কাটআউট যেখানে আঁকবে না।

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    WindowCompat.setDecorFitsSystemWindows(window, false)

    setContent {
        Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) {
            // Any composable inside here will avoid drawing behind cutouts
        }
    }
}

এই আচরণটি আরও কাস্টমাইজ করতে, আপনাকে কাটআউট তথ্য নিজেই পরিচালনা করতে হবে।

ম্যানুয়ালি কাটআউট তথ্য পরিচালনা করুন

আপনি নিম্নলিখিত যে কোনও উপায়ে কাটআউটগুলি পরিচালনা করতে পারেন:

কম্পোজের জন্য, আপনার সামগ্রিক থিমে windowLayoutInDisplayCutoutMode default সেট করার এবং তারপর আপনার কম্পোজেবলের ইনসেটগুলি পরিচালনা করতে WindowInsets.displayCutout ব্যবহার করার পরামর্শ দেওয়া হয়:

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

এই পদ্ধতিটি আপনাকে displayCutout প্যাডিংকে যেখানে প্রয়োজন সেখানে সম্মান করতে দেয়, বা যেখানে এটির প্রয়োজন নেই সেখানে উপেক্ষা করতে দেয়।

বিকল্পভাবে, আপনি কার্যকলাপ থিম android:windowLayoutInDisplayCutoutMode অন্য বিকল্পে সেট করে, অথবা window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT ব্যবহার করে উইন্ডো অ্যাট্রিবিউট সেট করে ভিউ কাটআউট ডকুমেন্টেশনে বর্ণনা করা একই সেটিংস প্রয়োগ করতে পারেন। যাইহোক, কাটআউট মোড তারপর একটি সম্পূর্ণ কার্যকলাপ প্রয়োগ করা হয়, এবং প্রতিটি পৃথক কম্পোজেবল নিয়ন্ত্রণ করা যাবে না.

নির্দিষ্ট কম্পোজেবলের ডিসপ্লে কাটআউটকে সম্মান করতে কিন্তু অন্যদের নয়, WindowInset.displayCutout ব্যবহার করুন। এই API আপনাকে যখন প্রয়োজন হয় তখন কাটআউট তথ্য অ্যাক্সেস করতে দেয়।

সর্বোত্তম অনুশীলন

ডিসপ্লে কাটআউটগুলির সাথে কাজ করার সময়, নিম্নলিখিতগুলি বিবেচনা করুন:

  • UI-এর সমালোচনামূলক উপাদানগুলির স্থান নির্ধারণের বিষয়ে সচেতন হন। কাটআউট এলাকাটিকে কোনো গুরুত্বপূর্ণ পাঠ্য, নিয়ন্ত্রণ বা অন্যান্য তথ্য অস্পষ্ট হতে দেবেন না।
  • কাটআউট এলাকায় সূক্ষ্ম স্পর্শ স্বীকৃতি প্রয়োজন এমন কোনো ইন্টারেক্টিভ উপাদান স্থাপন বা প্রসারিত করবেন না। কাটআউট এলাকায় স্পর্শ সংবেদনশীলতা কম হতে পারে।
  • প্রান্ত থেকে প্রান্ত নির্দেশিকা অনুসরণ করার সময়, কাটআউট তথ্য safeDrawing / safeContent ইনসেটগুলিতে অন্তর্ভুক্ত করা হয়।
  • যেখানে সম্ভব, আপনার সামগ্রীতে প্রয়োগ করার জন্য উপযুক্ত প্যাডিং নির্ধারণ করতে Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করুন। স্ট্যাটাস বার উচ্চতা হার্ডকোডিং এড়িয়ে চলুন, কারণ এটি ওভারল্যাপিং বা কাট-অফ বিষয়বস্তু হতে পারে।

আপনার সামগ্রী কাটআউট দিয়ে কীভাবে রেন্ডার হয় তা পরীক্ষা করুন

আপনার অ্যাপের সমস্ত স্ক্রীন এবং অভিজ্ঞতা পরীক্ষা করতে ভুলবেন না। সম্ভব হলে বিভিন্ন ধরনের কাটআউট সহ ডিভাইসে পরীক্ষা করুন। আপনার কাছে কাটআউট সহ একটি ডিভাইস না থাকলে, আপনি নিম্নলিখিতগুলি করে Android 9 বা উচ্চতর চলমান যে কোনও ডিভাইস বা এমুলেটরে সাধারণ কাটআউট কনফিগারেশনগুলি অনুকরণ করতে পারেন:

  1. বিকাশকারী বিকল্পগুলি সক্ষম করুন৷
  2. বিকাশকারী বিকল্পগুলির স্ক্রিনে, অঙ্কন বিভাগে নীচে স্ক্রোল করুন এবং একটি কাটআউট সহ একটি প্রদর্শন অনুকরণ নির্বাচন করুন।
  3. কাটআউট টাইপ নির্বাচন করুন।
    এমুলেটরে একটি প্রদর্শন কাটআউট অনুকরণ করা
    চিত্র 3 । আপনার সামগ্রী কীভাবে রেন্ডার হয় তা পরীক্ষা করতে বিকাশকারী বিকল্পগুলি ব্যবহার করুন৷
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %} ,

একটি ডিসপ্লে কাটআউট হল কিছু ডিভাইসের একটি এলাকা যা ডিসপ্লে পৃষ্ঠের মধ্যে প্রসারিত হয়। ডিভাইসের সামনে গুরুত্বপূর্ণ সেন্সরগুলির জন্য স্থান প্রদান করার সময় এটি প্রান্ত থেকে প্রান্তের অভিজ্ঞতার জন্য অনুমতি দেয়।

পোর্ট্রেট মোডে কাটআউট উদাহরণ
চিত্র 1 । পোর্ট্রেট মোডে কাটআউট উদাহরণ
ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ
চিত্র 2 । ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ

অ্যান্ড্রয়েড অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) এবং উচ্চতর ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করে। যাইহোক, ডিভাইস নির্মাতারা অ্যান্ড্রয়েড 8.1 বা তার নিচের ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করতে পারে।

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

ডিফল্ট কেস

ডিফল্টরূপে, প্রদর্শন কাটআউট উইন্ডো ইনসেট তথ্য অন্তর্ভুক্ত করা হয়. এই কারণে, যখন আপনি আপনার অ্যাপ এজ-টু-এজ তৈরির নির্দেশিকা অনুসরণ করেন তখন আপনার অ্যাপটি ডিসপ্লে কাটআউট এলাকায় আঁকবে না।

উদাহরণস্বরূপ, আপনি যখন Modifier.windowInsetsPadding(WindowInsets.safeContent) বা Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করেন, তখন আপনার অ্যাপ স্বয়ংক্রিয়ভাবে সেই জায়গাগুলিতে আঁকবে না যেখানে একটি কাটআউট রাখা হয়েছে। WindowInsets.safeContent এবং WindowInsets.safeDrawing উভয়ই ডিসপ্লে কাটআউট তথ্য ধারণ করে এবং একটি ডিভাইস কাটআউট যেখানে আঁকবে না।

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    WindowCompat.setDecorFitsSystemWindows(window, false)

    setContent {
        Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) {
            // Any composable inside here will avoid drawing behind cutouts
        }
    }
}

এই আচরণটি আরও কাস্টমাইজ করতে, আপনাকে কাটআউট তথ্য নিজেই পরিচালনা করতে হবে।

ম্যানুয়ালি কাটআউট তথ্য পরিচালনা করুন

আপনি নিম্নলিখিত যে কোনও উপায়ে কাটআউটগুলি পরিচালনা করতে পারেন:

কম্পোজের জন্য, আপনার সামগ্রিক থিমে windowLayoutInDisplayCutoutMode default সেট করার এবং তারপর আপনার কম্পোজেবলের ইনসেটগুলি পরিচালনা করতে WindowInsets.displayCutout ব্যবহার করার পরামর্শ দেওয়া হয়:

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

এই পদ্ধতিটি আপনাকে displayCutout প্যাডিংকে যেখানে প্রয়োজন সেখানে সম্মান করতে দেয়, বা যেখানে এটির প্রয়োজন নেই সেখানে উপেক্ষা করতে দেয়।

বিকল্পভাবে, আপনি কার্যকলাপ থিম android:windowLayoutInDisplayCutoutMode অন্য বিকল্পে সেট করে, অথবা window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT ব্যবহার করে উইন্ডো অ্যাট্রিবিউট সেট করে ভিউ কাটআউট ডকুমেন্টেশনে বর্ণনা করা একই সেটিংস প্রয়োগ করতে পারেন। যাইহোক, কাটআউট মোড তারপর একটি সম্পূর্ণ কার্যকলাপ প্রয়োগ করা হয়, এবং প্রতিটি পৃথক কম্পোজেবল নিয়ন্ত্রণ করা যাবে না.

নির্দিষ্ট কম্পোজেবলের ডিসপ্লে কাটআউটকে সম্মান করতে কিন্তু অন্যদের নয়, WindowInset.displayCutout ব্যবহার করুন। এই API আপনাকে যখন প্রয়োজন হয় তখন কাটআউট তথ্য অ্যাক্সেস করতে দেয়।

সর্বোত্তম অনুশীলন

ডিসপ্লে কাটআউটগুলির সাথে কাজ করার সময়, নিম্নলিখিতগুলি বিবেচনা করুন:

  • UI-এর সমালোচনামূলক উপাদানগুলির স্থান নির্ধারণের বিষয়ে সচেতন হন। কাটআউট এলাকাটিকে কোনো গুরুত্বপূর্ণ পাঠ্য, নিয়ন্ত্রণ বা অন্যান্য তথ্য অস্পষ্ট হতে দেবেন না।
  • কাটআউট এলাকায় সূক্ষ্ম স্পর্শ স্বীকৃতি প্রয়োজন এমন কোনো ইন্টারেক্টিভ উপাদান স্থাপন বা প্রসারিত করবেন না। কাটআউট এলাকায় স্পর্শ সংবেদনশীলতা কম হতে পারে।
  • প্রান্ত থেকে প্রান্ত নির্দেশিকা অনুসরণ করার সময়, কাটআউট তথ্য safeDrawing / safeContent ইনসেটগুলিতে অন্তর্ভুক্ত করা হয়।
  • যেখানে সম্ভব, আপনার সামগ্রীতে প্রয়োগ করার জন্য উপযুক্ত প্যাডিং নির্ধারণ করতে Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করুন। স্ট্যাটাস বার উচ্চতা হার্ডকোডিং এড়িয়ে চলুন, কারণ এটি ওভারল্যাপিং বা কাট-অফ বিষয়বস্তু হতে পারে।

আপনার সামগ্রী কাটআউট দিয়ে কীভাবে রেন্ডার হয় তা পরীক্ষা করুন

আপনার অ্যাপের সমস্ত স্ক্রীন এবং অভিজ্ঞতা পরীক্ষা করতে ভুলবেন না। সম্ভব হলে বিভিন্ন ধরনের কাটআউট সহ ডিভাইসে পরীক্ষা করুন। আপনার কাছে কাটআউট সহ একটি ডিভাইস না থাকলে, আপনি নিম্নলিখিতগুলি করে Android 9 বা উচ্চতর চলমান যে কোনও ডিভাইস বা এমুলেটরে সাধারণ কাটআউট কনফিগারেশনগুলি অনুকরণ করতে পারেন:

  1. বিকাশকারী বিকল্পগুলি সক্ষম করুন৷
  2. বিকাশকারী বিকল্পগুলির স্ক্রিনে, অঙ্কন বিভাগে নীচে স্ক্রোল করুন এবং একটি কাটআউট সহ একটি প্রদর্শন অনুকরণ নির্বাচন করুন।
  3. কাটআউট টাইপ নির্বাচন করুন।
    এমুলেটরে একটি প্রদর্শন কাটআউট অনুকরণ করা
    চিত্র 3 । আপনার সামগ্রী কীভাবে রেন্ডার হয় তা পরীক্ষা করতে বিকাশকারী বিকল্পগুলি ব্যবহার করুন৷
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %} ,

একটি ডিসপ্লে কাটআউট হল কিছু ডিভাইসের একটি এলাকা যা ডিসপ্লে পৃষ্ঠের মধ্যে প্রসারিত হয়। ডিভাইসের সামনে গুরুত্বপূর্ণ সেন্সরগুলির জন্য স্থান প্রদান করার সময় এটি প্রান্ত থেকে প্রান্তের অভিজ্ঞতার জন্য অনুমতি দেয়।

পোর্ট্রেট মোডে কাটআউট উদাহরণ
চিত্র 1 । পোর্ট্রেট মোডে কাটআউট উদাহরণ
ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ
চিত্র 2 । ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ

অ্যান্ড্রয়েড অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) এবং উচ্চতর ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করে। যাইহোক, ডিভাইস নির্মাতারা অ্যান্ড্রয়েড 8.1 বা তার নিচের ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করতে পারে।

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

ডিফল্ট কেস

ডিফল্টরূপে, প্রদর্শন কাটআউট উইন্ডো ইনসেট তথ্য অন্তর্ভুক্ত করা হয়. এই কারণে, যখন আপনি আপনার অ্যাপ এজ-টু-এজ তৈরির নির্দেশিকা অনুসরণ করেন তখন আপনার অ্যাপটি ডিসপ্লে কাটআউট এলাকায় আঁকবে না।

উদাহরণস্বরূপ, আপনি যখন Modifier.windowInsetsPadding(WindowInsets.safeContent) বা Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করেন, তখন আপনার অ্যাপ স্বয়ংক্রিয়ভাবে সেই জায়গাগুলিতে আঁকবে না যেখানে একটি কাটআউট রাখা হয়েছে। WindowInsets.safeContent এবং WindowInsets.safeDrawing উভয়ই ডিসপ্লে কাটআউট তথ্য ধারণ করে এবং একটি ডিভাইস কাটআউট যেখানে আঁকবে না।

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    WindowCompat.setDecorFitsSystemWindows(window, false)

    setContent {
        Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) {
            // Any composable inside here will avoid drawing behind cutouts
        }
    }
}

এই আচরণটি আরও কাস্টমাইজ করতে, আপনাকে কাটআউট তথ্য নিজেই পরিচালনা করতে হবে।

ম্যানুয়ালি কাটআউট তথ্য পরিচালনা করুন

আপনি নিম্নলিখিত যে কোনও উপায়ে কাটআউটগুলি পরিচালনা করতে পারেন:

কম্পোজের জন্য, আপনার সামগ্রিক থিমে windowLayoutInDisplayCutoutMode default সেট করার এবং তারপর আপনার কম্পোজেবলের ইনসেটগুলি পরিচালনা করতে WindowInsets.displayCutout ব্যবহার করার পরামর্শ দেওয়া হয়:

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

এই পদ্ধতিটি আপনাকে displayCutout প্যাডিংকে যেখানে প্রয়োজন সেখানে সম্মান করতে দেয়, বা যেখানে এটির প্রয়োজন নেই সেখানে উপেক্ষা করতে দেয়।

বিকল্পভাবে, আপনি কার্যকলাপ থিম android:windowLayoutInDisplayCutoutMode অন্য বিকল্পে সেট করে, অথবা window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT ব্যবহার করে উইন্ডো অ্যাট্রিবিউট সেট করে ভিউ কাটআউট ডকুমেন্টেশনে বর্ণনা করা একই সেটিংস প্রয়োগ করতে পারেন। যাইহোক, কাটআউট মোড তারপর একটি সম্পূর্ণ কার্যকলাপ প্রয়োগ করা হয়, এবং প্রতিটি পৃথক কম্পোজেবল নিয়ন্ত্রণ করা যাবে না.

নির্দিষ্ট কম্পোজেবলের ডিসপ্লে কাটআউটকে সম্মান করতে কিন্তু অন্যদের নয়, WindowInset.displayCutout ব্যবহার করুন। এই API আপনাকে যখন প্রয়োজন হয় তখন কাটআউট তথ্য অ্যাক্সেস করতে দেয়।

সর্বোত্তম অনুশীলন

ডিসপ্লে কাটআউটগুলির সাথে কাজ করার সময়, নিম্নলিখিতগুলি বিবেচনা করুন:

  • UI-এর সমালোচনামূলক উপাদানগুলির স্থান নির্ধারণের বিষয়ে সচেতন হন। কাটআউট এলাকাটিকে কোনো গুরুত্বপূর্ণ পাঠ্য, নিয়ন্ত্রণ বা অন্যান্য তথ্য অস্পষ্ট হতে দেবেন না।
  • কাটআউট এলাকায় সূক্ষ্ম স্পর্শ স্বীকৃতি প্রয়োজন এমন কোনো ইন্টারেক্টিভ উপাদান স্থাপন বা প্রসারিত করবেন না। কাটআউট এলাকায় স্পর্শ সংবেদনশীলতা কম হতে পারে।
  • প্রান্ত থেকে প্রান্ত নির্দেশিকা অনুসরণ করার সময়, কাটআউট তথ্য safeDrawing / safeContent ইনসেটগুলিতে অন্তর্ভুক্ত করা হয়।
  • যেখানে সম্ভব, আপনার সামগ্রীতে প্রয়োগ করার জন্য উপযুক্ত প্যাডিং নির্ধারণ করতে Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করুন। স্ট্যাটাস বার উচ্চতা হার্ডকোডিং এড়িয়ে চলুন, কারণ এটি ওভারল্যাপিং বা কাট-অফ বিষয়বস্তু হতে পারে।

আপনার সামগ্রী কাটআউট দিয়ে কীভাবে রেন্ডার হয় তা পরীক্ষা করুন

আপনার অ্যাপের সমস্ত স্ক্রীন এবং অভিজ্ঞতা পরীক্ষা করতে ভুলবেন না। সম্ভব হলে বিভিন্ন ধরনের কাটআউট সহ ডিভাইসে পরীক্ষা করুন। আপনার কাছে কাটআউট সহ একটি ডিভাইস না থাকলে, আপনি নিম্নলিখিতগুলি করে Android 9 বা উচ্চতর চলমান যে কোনও ডিভাইস বা এমুলেটরে সাধারণ কাটআউট কনফিগারেশনগুলি অনুকরণ করতে পারেন:

  1. বিকাশকারী বিকল্পগুলি সক্ষম করুন৷
  2. বিকাশকারী বিকল্পগুলির স্ক্রিনে, অঙ্কন বিভাগে নীচে স্ক্রোল করুন এবং একটি কাটআউট সহ একটি প্রদর্শন অনুকরণ নির্বাচন করুন।
  3. কাটআউট টাইপ নির্বাচন করুন।
    এমুলেটরে একটি প্রদর্শন কাটআউট অনুকরণ করা
    চিত্র 3 । আপনার সামগ্রী কীভাবে রেন্ডার হয় তা পরীক্ষা করতে বিকাশকারী বিকল্পগুলি ব্যবহার করুন৷
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %} ,

একটি ডিসপ্লে কাটআউট হল কিছু ডিভাইসের একটি এলাকা যা ডিসপ্লে পৃষ্ঠের মধ্যে প্রসারিত হয়। ডিভাইসের সামনে গুরুত্বপূর্ণ সেন্সরগুলির জন্য স্থান প্রদান করার সময় এটি প্রান্ত থেকে প্রান্তের অভিজ্ঞতার জন্য অনুমতি দেয়।

পোর্ট্রেট মোডে কাটআউট উদাহরণ
চিত্র 1 । পোর্ট্রেট মোডে কাটআউট উদাহরণ
ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ
চিত্র 2 । ল্যান্ডস্কেপ মোডে কাটআউট উদাহরণ

অ্যান্ড্রয়েড অ্যান্ড্রয়েড 9 (এপিআই লেভেল 28) এবং উচ্চতর ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করে। যাইহোক, ডিভাইস নির্মাতারা অ্যান্ড্রয়েড 8.1 বা তার নিচের ডিভাইসে ডিসপ্লে কাটআউট সমর্থন করতে পারে।

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

ডিফল্ট কেস

ডিফল্টরূপে, প্রদর্শন কাটআউট উইন্ডো ইনসেট তথ্য অন্তর্ভুক্ত করা হয়. এই কারণে, যখন আপনি আপনার অ্যাপ এজ-টু-এজ তৈরির নির্দেশিকা অনুসরণ করেন তখন আপনার অ্যাপটি ডিসপ্লে কাটআউট এলাকায় আঁকবে না।

উদাহরণস্বরূপ, আপনি যখন Modifier.windowInsetsPadding(WindowInsets.safeContent) বা Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করেন, তখন আপনার অ্যাপ স্বয়ংক্রিয়ভাবে সেই জায়গাগুলিতে আঁকবে না যেখানে একটি কাটআউট রাখা হয়েছে। WindowInsets.safeContent এবং WindowInsets.safeDrawing উভয়ই ডিসপ্লে কাটআউট তথ্য ধারণ করে এবং একটি ডিভাইস কাটআউট যেখানে আঁকবে না।

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    WindowCompat.setDecorFitsSystemWindows(window, false)

    setContent {
        Box(Modifier.windowInsetsPadding(WindowInsets.safeContent)) {
            // Any composable inside here will avoid drawing behind cutouts
        }
    }
}

এই আচরণটি আরও কাস্টমাইজ করতে, আপনাকে কাটআউট তথ্য নিজেই পরিচালনা করতে হবে।

ম্যানুয়ালি কাটআউট তথ্য পরিচালনা করুন

আপনি নিম্নলিখিত যে কোনও উপায়ে কাটআউটগুলি পরিচালনা করতে পারেন:

কম্পোজের জন্য, আপনার সামগ্রিক থিমে windowLayoutInDisplayCutoutMode default সেট করার এবং তারপর আপনার কম্পোজেবলের ইনসেটগুলি পরিচালনা করতে WindowInsets.displayCutout ব্যবহার করার পরামর্শ দেওয়া হয়:

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

এই পদ্ধতিটি আপনাকে displayCutout প্যাডিংকে যেখানে প্রয়োজন সেখানে সম্মান করতে দেয়, বা যেখানে এটির প্রয়োজন নেই সেখানে উপেক্ষা করতে দেয়।

বিকল্পভাবে, আপনি কার্যকলাপ থিম android:windowLayoutInDisplayCutoutMode অন্য বিকল্পে সেট করে, অথবা window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT ব্যবহার করে উইন্ডো অ্যাট্রিবিউট সেট করে ভিউ কাটআউট ডকুমেন্টেশনে বর্ণনা করা একই সেটিংস প্রয়োগ করতে পারেন। যাইহোক, কাটআউট মোড তারপর একটি সম্পূর্ণ কার্যকলাপ প্রয়োগ করা হয়, এবং প্রতিটি পৃথক কম্পোজেবল নিয়ন্ত্রণ করা যাবে না.

নির্দিষ্ট কম্পোজেবলের ডিসপ্লে কাটআউটকে সম্মান করতে কিন্তু অন্যদের নয়, WindowInset.displayCutout ব্যবহার করুন। এই API আপনাকে যখন প্রয়োজন হয় তখন কাটআউট তথ্য অ্যাক্সেস করতে দেয়।

সর্বোত্তম অনুশীলন

ডিসপ্লে কাটআউটগুলির সাথে কাজ করার সময়, নিম্নলিখিতগুলি বিবেচনা করুন:

  • UI-এর সমালোচনামূলক উপাদানগুলির স্থান নির্ধারণের বিষয়ে সচেতন হন। কাটআউট এলাকাটিকে কোনো গুরুত্বপূর্ণ পাঠ্য, নিয়ন্ত্রণ বা অন্যান্য তথ্য অস্পষ্ট হতে দেবেন না।
  • কাটআউট এলাকায় সূক্ষ্ম স্পর্শ স্বীকৃতি প্রয়োজন এমন কোনো ইন্টারেক্টিভ উপাদান স্থাপন বা প্রসারিত করবেন না। কাটআউট এলাকায় স্পর্শ সংবেদনশীলতা কম হতে পারে।
  • প্রান্ত থেকে প্রান্ত নির্দেশিকা অনুসরণ করার সময়, কাটআউট তথ্য safeDrawing / safeContent ইনসেটগুলিতে অন্তর্ভুক্ত করা হয়।
  • যেখানে সম্ভব, আপনার সামগ্রীতে প্রয়োগ করার জন্য উপযুক্ত প্যাডিং নির্ধারণ করতে Modifier.windowInsetsPadding(WindowInsets.safeDrawing) ব্যবহার করুন। স্ট্যাটাস বার উচ্চতা হার্ডকোডিং এড়িয়ে চলুন, কারণ এটি ওভারল্যাপিং বা কাট-অফ বিষয়বস্তু হতে পারে।

আপনার সামগ্রী কাটআউট দিয়ে কীভাবে রেন্ডার হয় তা পরীক্ষা করুন

আপনার অ্যাপের সমস্ত স্ক্রীন এবং অভিজ্ঞতা পরীক্ষা করতে ভুলবেন না। সম্ভব হলে বিভিন্ন ধরনের কাটআউট সহ ডিভাইসে পরীক্ষা করুন। আপনার কাছে কাটআউট সহ একটি ডিভাইস না থাকলে, আপনি নিম্নলিখিতগুলি করে Android 9 বা উচ্চতর চলমান যে কোনও ডিভাইস বা এমুলেটরে সাধারণ কাটআউট কনফিগারেশনগুলি অনুকরণ করতে পারেন:

  1. বিকাশকারী বিকল্পগুলি সক্ষম করুন৷
  2. বিকাশকারী বিকল্পগুলির স্ক্রিনে, অঙ্কন বিভাগে নীচে স্ক্রোল করুন এবং একটি কাটআউট সহ একটি প্রদর্শন অনুকরণ নির্বাচন করুন।
  3. কাটআউট টাইপ নির্বাচন করুন।
    এমুলেটরে একটি প্রদর্শন কাটআউট অনুকরণ করা
    চিত্র 3 । আপনার সামগ্রী কীভাবে রেন্ডার হয় তা পরীক্ষা করতে বিকাশকারী বিকল্পগুলি ব্যবহার করুন৷
{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}