بریدگی نمایشگر ناحیه ای در برخی دستگاه ها است که تا سطح نمایشگر گسترش می یابد. این امکان تجربه لبه به لبه را فراهم می کند و در عین حال فضایی را برای سنسورهای مهم در جلوی دستگاه فراهم می کند.
Android از بریدگیهای نمایشگر در دستگاههای دارای Android 9 (سطح API 28) و بالاتر پشتیبانی میکند. با این حال، سازندگان دستگاه میتوانند از بریدگیهای نمایشگر در دستگاههای دارای اندروید ۸.۱ یا پایینتر نیز پشتیبانی کنند.
این صفحه نحوه اجرای پشتیبانی از دستگاههای دارای برش را در Compose شرح میدهد، از جمله نحوه کار با ناحیه برش - یعنی مستطیل لبه به لبه روی سطح نمایشگر که حاوی برش است.
مورد پیش فرض
به طور پیشفرض، برشهای نمایشگر در اطلاعات ورودی پنجره گنجانده میشوند. به همین دلیل، وقتی از راهنمای ساخت لبه به لبه برنامه خود پیروی می کنید، برنامه شما در قسمت های برش نمایشگر نمی کشد.
به عنوان مثال، هنگامی که از 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 } } }
برای سفارشی کردن بیشتر این رفتار، باید اطلاعات برش را خودتان مدیریت کنید.
اطلاعات برش را به صورت دستی مدیریت کنید
می توانید برش ها را به یکی از روش های زیر مدیریت کنید:
با استفاده از
WindowInsets.displayCutout
تنظیم در مانیفست تم با
android:windowLayoutInDisplayCutoutMode
تنظیم برنامهای گزینه در یک
Window
باwindow.attributes.layoutInDisplayCutoutMode
دسترسی به شیء
Path
قطع باLocalView.current.rootWindowInsets.displayCutout
برای Compose، توصیه میشود که windowLayoutInDisplayCutoutMode
را در قالب کلی خود روی default
تنظیم کنید و سپس از WindowInsets.displayCutout
برای مدیریت insetهای موجود در composableهای خود استفاده کنید:
Canvas(modifier = Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.displayCutout)) { drawRect(Color.Red, style = Stroke(2.dp.toPx())) }
این رویکرد به شما امکان میدهد در صورت لزوم به displayCutout
احترام بگذارید یا در جاهایی که لازم نیست، آن را نادیده بگیرید.
همچنین، میتوانید تنظیمات مشابهی را که مستندات Views Cutout توصیف میکند، با تنظیم موضوع فعالیت android:windowLayoutInDisplayCutoutMode
روی گزینهای دیگر یا تنظیم ویژگی پنجره با استفاده از window.attributes.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
اعمال کنید. با این حال، حالت برش پس از آن برای یک فعالیت کامل اعمال میشود و نمیتوان آن را به ازای هر فرد قابل ترکیب کنترل کرد.
برای رعایت بریدگی نمایشگر در برخی از اجزای سازنده خاص، اما نه در موارد دیگر، از WindowInset.displayCutout
استفاده کنید. این API به شما امکان می دهد در صورت لزوم به اطلاعات برش دسترسی داشته باشید.
بهترین شیوه ها
هنگام کار با برش های نمایشگر، موارد زیر را در نظر بگیرید:
- مراقب قرار دادن عناصر حیاتی UI باشید. اجازه ندهید ناحیه برش هر متن، کنترل یا اطلاعات مهم دیگری را مبهم کند.
- هیچ عنصر تعاملی را که نیاز به تشخیص دقیق لمسی دارد در ناحیه برش قرار ندهید یا گسترش ندهید. حساسیت لمس ممکن است در ناحیه برش کمتر باشد.
- هنگام پیروی از راهنمای لبه به لبه، اطلاعات برش در قسمت های
safeDrawing
/safeContent
گنجانده می شود. - در صورت امکان، از
Modifier.windowInsetsPadding(WindowInsets.safeDrawing)
برای تعیین بالشتک مناسب برای اعمال بر محتوای خود استفاده کنید. از کدگذاری سخت ارتفاع نوار وضعیت اجتناب کنید، زیرا این امر می تواند منجر به همپوشانی یا قطع محتوا شود.
نحوه نمایش محتوای خود را با برشها آزمایش کنید
مطمئن شوید که تمام صفحات و تجربیات برنامه خود را آزمایش کنید. در صورت امکان روی دستگاه هایی با انواع مختلف برش تست کنید. اگر دستگاهی با بریدگی ندارید، میتوانید پیکربندیهای برش معمولی را در هر دستگاه یا شبیهسازی دارای Android 9 یا بالاتر با انجام کارهای زیر شبیهسازی کنید:
- گزینه های برنامه نویس را فعال کنید.
- در صفحه گزینههای برنامهنویس ، به قسمت Drawing بروید و شبیهسازی نمایشگر با برش را انتخاب کنید.
- نوع برش را انتخاب کنید.
برای شما توصیه می شود
- توجه: وقتی جاوا اسکریپت خاموش است، متن پیوند نمایش داده می شود
- ورودی های پنجره در Compose
- اصلاح کننده های گرافیکی
- پاراگراف سبک