درباره برش‌ها

برش نمایشگر ناحیه‌ای در برخی‌از دستگاه‌ها است که تا سطح نمایشگر امتداد دارد. این طراحی امکان تجربه لب‌به‌لب را فراهم می‌کند و درعین‌حال فضایی برای حسگرهای مهم در جلوی دستگاه ایجاد می‌کند.

نمونه برش در حالت عمودی
شکل ۱. نمونه برش در «حالت چهره»
نمونه برش در حالت افقی
شکل ۲. نمونه برش در حالت افقی

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 نسخه ۱۵ یا بالاتر هدف قرار می‌دهند تفسیر می‌شوند.

مدیریت دستی اطلاعات برش

باید اطلاعات مربوط به بریدگی را مدیریت کنید تا از پوشانده شدن نوشتار مهم، کنترل‌ها، یا عناصر تعاملی که به تشخیص لمس دقیق نیاز دارند توسط ناحیه بریدگی جلوگیری شود (حساسیت لمس ممکن است در ناحیه بریدگی کمتر باشد). هنگام مدیریت برش‌ها، ارتفاع نوار وضعیت را کدنویسی ثابت نکنید، زیرا این کار می‌تواند منجر به هم‌پوشانی یا قطع شدن محتوا شود. درعوض، بریدگی‌ها را به یکی از روش‌های زیر مدیریت کنید:

برای Compose، توصیه می‌کنیم از displayCutout، safeContent، یا safeDrawing برای مدیریت تورفتگی‌های برش در composable خود استفاده کنید. این رویکرد به شما امکان می‌دهد درصورت لزوم، حاشیه داخلی برش نمایشگر را رعایت کنید یا درصورت عدم نیاز، آن را نادیده بگیرید.

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