بهینهسازی صفحهنمایش بزرگ شامل توانایی مدیریت ورودیهای صفحهکلید خارجی، مانند واکنش به فشار دادن کلید فاصله برای مکث یا ازسرگیری بازپخش ویدیوها و سایر رسانهها است. این ویژگی بهویژه برای رایانههای لوحی که اغلب به صفحهکلید خارجی متصل میشوند و Chromebook که معمولاً با صفحهکلید خارجی ارائه میشود اما میتواند در حالت رایانه لوحی استفاده شود مفید است.
وقتی رسانه تنها عنصر پنجره است (مثل بازپخش ویدیو تمامصفحه)، در Jetpack Compose به رویدادهای فشار کلید در سطح صفحهنمایش پاسخ دهید.
روالهای مطلوب
هرگاه برنامهتان فایل رسانهای پخش میکند، کاربران باید بتوانند با فشار دادن «کلید فاصله» در صفحهکلید فیزیکی، پخش را موقتاً متوقف و ازسر بگیرند.
مواد تشکیلدهنده
KEYCODE_SPACE: ثابت کد کلید برای «کلید فاصله».onPreviewKeyEvent:Modifierکه به یک عنصر امکان میدهد رویدادهای کلید سختافزاری را وقتی که (یا یکی از فرزندانش) در کانون توجه است رهگیری کند.onKeyEvent: مشابهonPreviewKeyEvent، اینModifierبه عنصری امکان میدهد رویدادهای کلید سختافزار را وقتی که (یا یکی از عناصر فرزند آن) در کانون توجه است رهگیری کند.
قدمها
برای پاسخ دادن به فشار کلیدهای صفحهکلید در Jetpack Compose، برنامه شما باید به رویدادهای فشار کلید گوش دهد، رویدادها را فیلتر کند، و به فشار کلیدهای انتخابشده، مثل فشار کلید «فاصله»، پاسخ دهد.
۱. گوش دادن به رویدادهای صفحهکلید
با Jetpack Compose، میتوانید از اصلاحگر onPreviewKeyEvent یا
onKeyEvent در مؤلفهای که ضربه کلید را مدیریت میکند استفاده کنید.
تفاوت اصلی بین این دو اصلاحگر این است که اگر اصلاحگر رویداد را مصرف نکند، رویداد در کجا توزیع میشود:
onPreviewKeyEvent— رویداد را به اولین فرزندش ارسال میکند.onKeyEvent— رویداد را به عنصر ترکیبی ولی ارسال میکند.
۲. فیلتر کردن و مدیریت فشار دادنهای «کلید فاصله»
در لامبدای اصلاحگر onPreviewKeyEvent یا onKeyEvent، رویدادهای کلیدی را فیلتر کنید
بهطوریکه رها کردن کلید (KeyEventType.KeyUp) با «کلید فاصله»
(Key.Spacebar) مطابقت داشته باشد.
اگر کد شما رویداد را مدیریت میکند و نمیخواهید رویداد بیشتر منتشر شود، true را برگردانید. false را برگردانید تا به عناصر دیگر اجازه دهید رویداد را مدیریت کنند.
گزینه الف: استفاده از
onPreviewKeyEventColumn( modifier = Modifier.onPreviewKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
گزینه ب: استفاده از
onKeyEventColumn( modifier = Modifier.onKeyEvent { event -> if (event.type == KeyEventType.KeyUp && event.key == Key.Spacebar) { // Handle spacebar keypress to pause/resume playback. true } else { false } } ) { // Content }
نتایج
برنامه شما اکنون میتواند به فشار کلید «کلید فاصله» برای مکث و ازسرگیری ویدیو یا رسانههای دیگر پاسخ دهد.
منابع بیشتر
برای کسب اطلاعات بیشتر درباره رویدادهای صفحهکلید و نحوه مدیریت آنها، به مدیریت ورودی صفحهکلید مراجعه کنید.