<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Android復(fù)習(xí)(五)設(shè)備兼容—>支持劉海屏

      支持劉海屏

      帶劉海屏的設(shè)備

      劉海屏是指某些設(shè)備顯示屏上的一個(gè)區(qū)域延伸到顯示面,這樣既能為用戶提供全面屏體驗(yàn),又能為設(shè)備正面的重要傳感器留出空間。Android 在搭載 Android 9(API 級別 28)及更高版本的設(shè)備上正式支持劉海屏。請注意,設(shè)備制造商也可以選擇在搭載 Android 8.1 或更低版本的設(shè)備上支持劉海屏。

      本主題介紹如何實(shí)現(xiàn)對帶劉海屏的設(shè)備的支持,包括如何處理“劉海區(qū)域”,即顯示面上包含劉海的無邊框矩形。

      在帶劉海屏的設(shè)備上有什么要求

      為了確保一致性和應(yīng)用兼容性,搭載 Android 9 的設(shè)備必須確保以下劉海行為:

      • 一條邊緣最多只能包含一個(gè)劉海。
      • 一臺設(shè)備不能有兩個(gè)以上的劉海。
      • 設(shè)備的兩條較長邊緣上不能有劉海。
      • 在未設(shè)置特殊標(biāo)志的豎屏模式下,狀態(tài)欄的高度必須至少與劉海的高度持平。
      • 默認(rèn)情況下,在全屏模式或橫屏模式下,整個(gè)劉海區(qū)域必須顯示黑邊。

      選擇您的應(yīng)用如何處理劉海區(qū)域

      如果不希望您的內(nèi)容與劉海區(qū)域重疊,請確保您的內(nèi)容不與狀態(tài)欄和導(dǎo)航欄重疊,這樣做一般就足夠了。如果您要將內(nèi)容呈現(xiàn)到劉海區(qū)域中,則可以使用 WindowInsets.getDisplayCutout() 來檢索 DisplayCutout 對象,該對象包含每個(gè)劉海區(qū)域的安全邊襯區(qū)和邊界框。您可以使用這些 API 來檢查您的內(nèi)容是否與劉海區(qū)域重疊,以便根據(jù)需要重新放置。

      注意:要在多個(gè) API 級別管理劉海實(shí)現(xiàn),您還可以使用 AndroidX 庫(可通過 SDK 管理器獲得)中的 DisplayCutoutCompat

      Android 還允許您控制是否在劉海區(qū)域內(nèi)顯示內(nèi)容。窗口布局屬性 layoutInDisplayCutoutMode 控制您的內(nèi)容如何呈現(xiàn)在劉海區(qū)域中。您可以將 layoutInDisplayCutoutMode 設(shè)為以下某個(gè)值:

      您可以通過編程或在 Activity 中設(shè)置樣式來設(shè)置劉海模式。以下示例定義了一種樣式,您可以使用它將 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES 屬性應(yīng)用到 Activity。

          <style name="ActivityTheme">
            <item name="android:windowLayoutInDisplayCutoutMode">
              shortEdges <!-- default, shortEdges, never -->
            </item>
          </style>
         
       

      下面幾部分更詳細(xì)地介紹了不同的劉海模式。

      默認(rèn)行為

      默認(rèn)情況下,在未設(shè)置特殊標(biāo)志的豎屏模式下,在帶劉海屏的設(shè)備上,狀態(tài)欄的大小會調(diào)整為至少與劉海一樣高,而您的內(nèi)容會顯示在下方區(qū)域。在橫屏模式或全屏模式下,您的應(yīng)用窗口會顯示黑邊,因此您的任何內(nèi)容都不會顯示在劉海區(qū)域中。

      將內(nèi)容呈現(xiàn)在短邊劉海區(qū)域中

      對于某些內(nèi)容(如視頻、照片、地圖和游戲),呈現(xiàn)在劉海區(qū)域中是一種很好的方法,這樣能夠?yàn)橛脩籼峁┏两懈鼜?qiáng)的全面屏體驗(yàn)。如果設(shè)置了 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES,則在豎屏模式和橫屏模式下,內(nèi)容都會延伸到顯示屏的短邊上的劉海區(qū)域,而不管系統(tǒng)欄處于隱藏還是可見狀態(tài)。請注意,窗口無法延伸到屏幕的長邊上的劉海區(qū)域。使用此模式時(shí),請確保沒有重要內(nèi)容與劉海區(qū)域重疊。

      請注意,Android 可能不允許內(nèi)容視圖與系統(tǒng)欄重疊。要替換此行為并強(qiáng)制內(nèi)容延伸到劉海區(qū)域,請通過 View.setSystemUiVisibility(int) 方法將以下任一標(biāo)志應(yīng)用于視圖可見性:

      • SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
      • SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
      • SYSTEM_UI_FLAG_LAYOUT_STABLE

      下面是一些 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES 示例:

       

      在豎屏模式下將內(nèi)容呈現(xiàn)到劉海區(qū)域中

       

       

      在橫屏模式下將內(nèi)容呈現(xiàn)到劉海區(qū)域中

       

      請注意,邊角處的劉海可等同于在短邊上,因此適用同樣的行為:

      帶邊角劉海屏的設(shè)備

      從不將內(nèi)容呈現(xiàn)在劉海區(qū)域中

      如果設(shè)置了 LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER,則不允許窗口與劉海區(qū)域重疊。

      此模式應(yīng)該用于暫時(shí)設(shè)置 View.SYSTEM_UI_FLAG_FULLSCREEN 或 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 的窗口,以避免在設(shè)置或清除了該標(biāo)志時(shí)執(zhí)行另一種窗口布局。

      請查看下面的 LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER 示例:

      特殊模式

      某些搭載 Android 8.1(API 級別 27)或更低版本的設(shè)備支持一種特殊模式,可讓用戶將顯示黑邊的全屏或橫屏應(yīng)用延伸到劉海區(qū)域。此模式通常使用導(dǎo)航欄中的切換開關(guān)來控制,在延伸屏幕之前會顯示一個(gè)對話框,要求用戶進(jìn)行確認(rèn)。

      支持劉海屏的最佳做法

      使用劉海屏時(shí),請務(wù)必考慮以下幾點(diǎn):

      • 不要讓劉海區(qū)域遮蓋任何重要的文本、控件或其他信息。
      • 不要將任何需要精細(xì)輕觸識別的交互式元素放置或延伸到劉海區(qū)域。劉海區(qū)域中的輕觸靈敏度可能要比其他區(qū)域低一些。
      • 避免對狀態(tài)欄高度進(jìn)行硬編碼,因?yàn)檫@樣做可能會導(dǎo)致內(nèi)容重疊或被切斷。如有可能,請使用 WindowInsetsCompat 檢索狀態(tài)欄高度,并確定要對您的內(nèi)容應(yīng)用的適當(dāng)內(nèi)邊距。

      • 不要假定應(yīng)用會占據(jù)整個(gè)窗口,而應(yīng)使用 View.getLocationInWindow() 來確認(rèn)應(yīng)用的位置。不要使用 View.getLocationOnScreen()

      • 務(wù)必妥善處理進(jìn)入或退出全屏模式。請閱讀這篇 Android 開發(fā)者博文

      • 對于豎屏模式下的默認(rèn)劉海行為,如果劉海區(qū)域位于頂部邊緣,并且窗口未設(shè)置 FLAG_FULLSCREEN 或 View.SYSTEM_UI_FLAG_FULLSCREEN,則窗口可以延伸到劉海區(qū)域。同樣,如果劉海區(qū)域位于底部邊緣,并且窗口未設(shè)置 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION,則窗口可以延伸到劉海區(qū)域。在全屏模式或橫屏模式下,窗口的布局方式應(yīng)確保其不與劉海區(qū)域重疊。

      • 如果您的應(yīng)用需要進(jìn)入和退出全屏模式,請使用 shortEdges 或 never 劉海模式。默認(rèn)劉海行為可導(dǎo)致應(yīng)用中的內(nèi)容在全屏模式轉(zhuǎn)換過程中上下移動,如下圖所示:

      • 在全屏模式下,在使用窗口坐標(biāo)與屏幕坐標(biāo)時(shí)應(yīng)保持謹(jǐn)慎,因?yàn)樵陲@示黑邊的情況下,您的應(yīng)用不會占據(jù)整個(gè)屏幕。由于顯示黑邊,因此根據(jù)屏幕原點(diǎn)得到的坐標(biāo)與根據(jù)窗口原點(diǎn)得到的坐標(biāo)不再相同。您可以根據(jù)需要使用 getLocationOnScreen() 將屏幕坐標(biāo)轉(zhuǎn)換為視圖坐標(biāo)。下圖展示了內(nèi)容顯示黑邊時(shí)這兩種坐標(biāo)有何不同:

        處理 MotionEvent 時(shí),請使用 MotionEvent.getX() 和 MotionEvent.getY() 來避免類似的坐標(biāo)問題。不要使用 MotionEvent.getRawX() 或 MotionEvent.getRawY()

      測試您的內(nèi)容如何呈現(xiàn)

      在模擬器中模擬劉海屏

      請務(wù)必測試應(yīng)用的所有屏幕和體驗(yàn)。如有可能,在具有不同類型劉海屏的設(shè)備上進(jìn)行測試。如果您沒有帶劉海屏的設(shè)備,可以在搭載 Android 9 的任意設(shè)備或模擬器上模擬一些常見的劉海配置,具體操作步驟如下:

      1. 啟用開發(fā)者選項(xiàng)
      2. 開發(fā)者選項(xiàng)屏幕中,向下滾動到繪制部分,然后選擇模擬劉海屏。
      3. 選擇劉海類型。

       

       

      其他資源

      posted @ 2020-04-21 14:00  王世楨  閱讀(1391)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 亚洲国产天堂久久综合网| 国产一区二区三区不卡自拍| 亚洲成人av在线高清| 黄色亚洲一区二区在线观看 | 久久午夜私人影院| 亚洲乱色伦图片区小说| 精品嫩模福利一区二区蜜臀| 人妻少妇偷人精品一区| 亚洲成人四虎在线播放| jk白丝喷浆| 久久99久国产精品66| 欧美成人精品| 婷婷六月色| 国产亚洲精品aaaa片app| 卓尼县| 亚洲精品揄拍自拍首页一| 亚洲AV国产福利精品在现观看| 国产美女MM131爽爽爽| 在线看片免费人成视久网| 东京热一精品无码av| 日本一卡2卡3卡4卡无卡免费| 洛川县| 久久综合精品成人一本| 在厨房拨开内裤进入在线视频| 和黑人中出一区二区三区| 人妻中文字幕不卡精品| 亚洲av无码精品色午夜蛋壳| 男女啪啪高潮激烈免费版| 国产成人免费观看在线视频| 中文字幕午夜福利片午夜福利片97| 国产成人一区二区三区影院动漫| 粉嫩一区二区三区精品视频| 国产成人精品视频不卡| 人妻日韩人妻中文字幕| 午夜高清福利在线观看| 香蕉EEWW99国产精选免费| 国产一精品一av一免费爽爽 | 免费99精品国产人妻自在现线| 韩国无码AV片午夜福利| 国产午夜精品亚洲精品国产| 久热在线中文字幕色999舞|