بهینهسازی صفحهنمایش بزرگ شامل توانایی مدیریت ورودیهای صفحهکلید خارجی است، مانند واکنش به فشار دادن کلید فاصله برای توقف موقت یا ازسر گرفتن بازپخش ویدیوها و رسانههای دیگر. این بهویژه برای رایانههای لوحی که اغلب به صفحهکلیدهای خارجی متصل میشوند و 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 }
نتایج
اکنون برنامهتان میتواند به فشردن کلید فاصله برای توقف موقت و ازسر گرفتن ویدیو یا رسانههای دیگر پاسخ دهد.
منابع بیشتر
برای کسب اطلاعات بیشتر درباره رویدادهای صفحهکلید و نحوه مدیریت آنها، به مدیریت ورودی صفحهکلید مراجعه کنید.