برش نمایشگر ناحیهای در برخیاز دستگاهها است که تا سطح نمایشگر امتداد دارد. این طراحی امکان تجربه لببهلب را فراهم میکند و درعینحال فضایی برای حسگرهای مهم در جلوی دستگاه ایجاد میکند.
Android از برش نمایشگر در دستگاههای دارای Android 9 (سطح ایپیآی ۲۸) و بالاتر پشتیبانی میکند. بااینحال، سازندگان دستگاه میتوانند از برش نمایشگر در دستگاههای دارای Android نسخه ۸.۱ یا پایینتر نیز پشتیبانی کنند.
این صفحه نحوه پیادهسازی پشتیبانی از دستگاههای دارای بریدگی را در Compose شرح میدهد، ازجمله نحوه کار با ناحیه بریدگی—یعنی مستطیل لبهبهلبه روی سطح نمایشگر که حاوی بریدگی است.
حالت پیشفرض
برنامههایی که سطح میانای برنامهسازی کاربردی ۳۴ یا پایینتر را هدف قرار میدهند، یا «فعالیتهایی» که
enableEdgeToEdge را فراخوانی نمیکنند، بهطور پیشفرض در ناحیه برش نمایشگر ترسیم نمیشوند، مگراینکه برنامه
در نوار سیستمی که حاوی برش نمایشگر است ترسیم شود.
برنامههایی که سطح میانای برنامهسازی کاربردی ۳۵ یا بالاتر را در دستگاههای دارای Android نسخه ۱۵ یا بالاتر هدف قرار میدهند، یا «فعالیتهایی» که enableEdgeToEdge را فراخوانی میکنند، در ناحیه بریدگی ترسیم میشوند.
بهعبارت دیگر، 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 برای پنجرههای غیرشناور در برنامههایی که
سطح میانای برنامهسازی کاربردی ۳۵ یا بالاتر را در دستگاههای دارای Android نسخه ۱۵ یا
بالاتر هدف قرار میدهند تفسیر میشوند.
مدیریت دستی اطلاعات برش
باید اطلاعات مربوط به بریدگی را مدیریت کنید تا از پوشانده شدن نوشتار مهم، کنترلها، یا عناصر تعاملی که به تشخیص لمس دقیق نیاز دارند توسط ناحیه بریدگی جلوگیری شود (حساسیت لمس ممکن است در ناحیه بریدگی کمتر باشد). هنگام مدیریت برشها، ارتفاع نوار وضعیت را کدنویسی ثابت نکنید، زیرا این کار میتواند منجر به همپوشانی یا قطع شدن محتوا شود. درعوض، بریدگیها را به یکی از روشهای زیر مدیریت کنید:
استفاده از
WindowInsets.displayCutout،WindowInsets.safeContent، یاWindowInsets.safeDrawingدسترسی به شیء برشخورده
PathباLocalView.current.rootWindowInsets.displayCutout
برای Compose، توصیه میکنیم از displayCutout، safeContent، یا
safeDrawing برای مدیریت تورفتگیهای برش در composable خود استفاده کنید. این رویکرد به شما امکان میدهد درصورت لزوم، حاشیه داخلی برش نمایشگر را رعایت کنید یا درصورت عدم نیاز، آن را نادیده بگیرید.
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- درجهای پنجره در Compose
- اصلاحکنندههای گرافیک
- سبک پاراگراف