鍵盤輸入
override fun onKeyUp(code: Int, ev: KeyEvent?): Boolean { return when (code) { KeyEvent.KEYCODE_J -> { true } else -> super.onKeyUp(code, ev) }}注意我們標出 "重要" 的那一行代碼。這行代碼會將沒有被開發者處理的鍵值交回給父類邏輯處理,而不是忽視它們。
刷新鍵
Chrome OS 鍵盤上有獨有的刷新鍵,而且有自己的鍵值 (KEYCODE_REFRESH),因此請確保您的應用可以處理 KEYCODE_REFRESH 事件。如果您已經在使用 SwipeRefreshLayout,Chrome OS 可以確保布局能響應刷新按鈕事件。
觸控板
當有人在帶觸摸板的桌面設備上使用您的應用時,他們會希望使用雙指輕掃觸摸板進行滾動;但在行動裝置上,用戶通常會按住並拖動屏幕來實現滾動。Chrome OS 會自動解析這些不同類型的動作事件,例如,當用戶在使用繪圖應用時如果做出了滾動的操作,繪圖應用不會讓畫筆在畫面上塗抹。
對於需要更高級觸摸事件處理的應用,可以在 event.getButtonState()== 0 時忽略 MotionEvents 來檢查按鍵狀態,並忽略掉不需要的事件 (參考上面的繪圖應用例子)。
Chrome OS 上遊戲和應用會自動獲得 ARM - x86 指令翻譯。但如果您希望獲得更佳的性能,那支持 x86 就至關重要。大多數高端 Chrome OS 設備都搭載了 64 位 x86 晶片 (更多這樣的設備也即將到來)。如果您想在所有設備上都提供最佳性能,那請確保您的構建支持 ARM、ARM64、x86 和 x86_64 (如果您有對應的原生代碼的話)。
支持 64 位 x86 的 Chrome OS 設備https://www.chromium.org/chromium-os/developer-information-for-chrome-os-devices
好消息是,Android Studio 能讓這種多平臺支持變得簡單: 只需使用 Android App Bundle 即可,它會將所有的構建打包,然後通過 Play Store 只發送用戶設備所需要的那一部分,從而將下載文件體積保持在最低限度。
如果一個應用的界面布局沒有專門適配過大屏幕,那當它運行在大屏幕上時效果會非常尷尬——大量被浪費的空間,和非常不順手的導航,這些都會讓用戶感到困惑。為了確保您的應用在多種布局中都能擁有良好的完成度,您可以讓同一個界面擁有多個布局文件 (如下圖)。
△ 同一個界面針對不同屏幕的布局文件
同時,您的應用在不同的屏幕尺寸上都應該易於使用。提供縱向、橫向等布局,使得應用可以根據可用的屏幕寬度,在底部導航、側邊導航和側邊擴展導航模式之間切換。
https://github.com/google/chromeosnavigationdemo電子郵件應用 Reply 就針對多種屏幕重新設計了其功能和布局。Adobe Acrobat 在適配 Chrome OS 的時候,也同樣考慮了不同設備的布局區別。https://material.io/design/material-studies/reply.html#about-reply△ Reply 在屏幕尺寸不同時會採用不同的導航模式多屏幕
當用戶使用多個顯示器時,兩個屏幕之間通常會存在像素密度差異。您可以通過在界面裡監聽 onConfigurationChanged 來得知像素密度 (density) 的變化,從而對界面做出調整。
在 I/O 上我們還發布了很多新內容,將 Chrome OS 打造成為 Web 和 Android 開發者更快捷、更簡單、更安全的開發環境,具體包括:
一鍵安裝 Android Studio
只需下載、單擊和安裝,不再需要使用 terminal。不再需要開發者模式,只需使用 USB 連接手機即可進行調試。
https://www.chromium.org/chromium-os/chrome-os-systems-supporting-adb-debugging-over-usb
Lint 檢查
高亮顯示鎖定的或不友好的屏幕方向、不可調整大小的界面、不正確的硬體要求以及其他不適合 Chrome OS 的功能。Chrome OS 容器支持 Linux 的所有音頻工具,例如 Audacity。
這是 M76 (也是我們目前的穩定渠道) 中的一個功能,當您的屏幕被很多窗口塞滿時,可以新開一個虛擬桌面。
在外部顯示器上投屏觀看受 DRM 保護的視頻內容 *。* 使用此功能時請調用 SurfaceView.setSecure()
https://developer.android.google.cn/topic/google-play-instant
外部存儲
Android 應用現在可以訪問連接至設備的外部存儲。Chrome OS 文件管理器在 Play files 文件夾裡可以顯示 Android 的 /sdcard 文件夾,從而讓用戶可以通過 Chrome 容器讀寫 Android 文件。
Chrome OS 現在支持 Android DocumentsProvider 接口,可以通過 DocumentsProvider 和自定義文檔提供程序支持 Android Cloud 雲存儲。
集成分析工具允許開發者隨時檢測系統狀態: 包括緩衝區使用、垂直同步、CPU 使用、GPU 和 CPU 頻率以及系統溫度,從而便於開發者定位動畫卡頓和/或系統速度降低的原因。
體驗應用的場景已經遠遠超出了行動裝置。在設備形式更加多樣化的今天,用戶每次打開應用時都希望獲得精心設計的界面和友好的交互體驗。請您充分利用我們給出的新特性,支持各種輸入方式,針對各種屏幕尺寸優化布局和導航,並儘可能通過原生代碼支持 x86,從而為用戶打造精良迅捷的使用體驗。
您的 Android 應用有沒有支持更大、更多樣的屏幕尺寸、更多種類的設備?有沒有為它們提供高完成度的使用體驗?如果您在界面和交互適配上有任何疑問或者想法,歡迎在評論區和我們分享。
點擊屏末 | 閱讀原文 | 即刻讓您的 Android 應用登上更大的舞臺