برش در نوشتن

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

نمونه برش در حالت عمودی
شکل 1 . نمونه برش در حالت پرتره
نمونه برش در حالت افقی
شکل 2 . نمونه برش در حالت افقی

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
        }
    }
}

برای سفارشی کردن بیشتر این رفتار، باید اطلاعات برش را خودتان مدیریت کنید.

اطلاعات برش را به صورت دستی مدیریت کنید

می توانید برش ها را به یکی از روش های زیر مدیریت کنید:

برای 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 یا بالاتر با انجام کارهای زیر شبیه‌سازی کنید:

  1. گزینه های برنامه نویس را فعال کنید.
  2. در صفحه گزینه‌های برنامه‌نویس ، به قسمت Drawing بروید و شبیه‌سازی نمایشگر با برش را انتخاب کنید.
  3. نوع برش را انتخاب کنید.
    شبیه سازی برش نمایشگر در شبیه ساز
    شکل 3 . از گزینه‌های توسعه‌دهنده برای آزمایش نحوه ارائه محتوای خود استفاده کنید.
{% کلمه به کلمه %} {% آخر کلمه %} {% کلمه به کلمه %} {% آخر کلمه %}