真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android復(fù)習(xí)(五)設(shè)備兼容—>屏幕適配-創(chuàng)新互聯(lián)

1. 適配使用的布局

在杭錦后等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),全網(wǎng)整合營銷推廣,成都外貿(mào)網(wǎng)站建設(shè),杭錦后網(wǎng)站建設(shè)費用合理。

目前版本Google還是希望開發(fā)者通過 ConstraintLayout 布局完成適配

2. 對于特定屏幕

  創(chuàng)建備用布局,即在res/layout/目錄下創(chuàng)建對應(yīng)尺寸的布局文件 例: layout-w600dp,例如用戶啟動多窗口時

  另在 Android Studio 3.0或更高版本中創(chuàng)建備用布局

  1. 打開默認(rèn)布局,然后點擊工具欄中的 Orientation for Preview 圖標(biāo) 。
  2. 在下拉列表中,點擊以創(chuàng)建一個建議的變體(如 Create Landscape Variant),或點擊 Create Other。
  3. 如果您選擇 Create Other,系統(tǒng)將顯示 Select Resource Directory。在此窗口中,在左側(cè)選擇一個屏幕限定符,然后將其添加到 Chosen qualifiers 列表。添加完限定符后,點擊 OK。(有關(guān)屏幕尺寸限定符的信息,請參閱下面幾部分。)

此時系統(tǒng)會在相應(yīng)的布局目錄中創(chuàng)建一個重復(fù)的布局文件,以便您可以開始自定義該屏幕變體的布局。

3. 設(shè)定最小寬度值

最小寬度限定符指定屏幕兩側(cè)的最小尺寸,而不考慮設(shè)備當(dāng)前的屏幕方向,因此這是一種指定布局可用的整體屏幕尺寸的簡單方法。

下面是其他最小寬度值與典型屏幕尺寸的對應(yīng)關(guān)系:

  • 320dp:典型手機屏幕(240x320 ldpi、320x480 mdpi、480x800 hdpi 等)。
  • 480dp:約為 5 英寸的大手機屏幕 (480x800 mdpi)。
  • 600dp:7 英寸平板電腦 (600x1024 mdpi)。
  • 720dp:10 英寸平板電腦(720x1280 mdpi、800x1280 mdpi 等)。

圖 4 提供了一個更詳細(xì)的視圖,說明了不同屏幕 dp 寬度與不同屏幕尺寸和方向的一般對應(yīng)關(guān)系。

圖 4. 建議的寬度斷點以支持不同的屏幕尺寸

請記住,最小寬度限定符的所有數(shù)值都是密度無關(guān)像素,因為重要的是系統(tǒng)考慮像素密度(而不是原始像素分辨率)之后可用的屏幕空間量。

注意:您使用這些限定符指定的尺寸不是實際屏幕尺寸,而是 Activity 的窗口可用的寬度或高度(以 dp 為單位)。Android 系統(tǒng)可能會將部分屏幕用于系統(tǒng)界面(如屏幕底部的系統(tǒng)欄或頂部的狀態(tài)欄),因此部分屏幕可能不可供您的布局使用。如果您的應(yīng)用在多窗口模式下使用,則它只能使用該窗口的尺寸。該窗口進(jìn)行大小調(diào)整時,會使用新窗口尺寸觸發(fā)配置更改,以便系統(tǒng)可以選擇適當(dāng)?shù)牟季治募?。因此,在聲明尺寸時,您應(yīng)具體說明 Activity 需要的尺寸。在聲明為布局提供多少空間時,系統(tǒng)會考慮系統(tǒng)界面使用的所有空間。

4. 使用布局別名

如果同時支持低于和高于 Android 3.2 的版本,那么您必須同時對布局使用最小寬度限定符和 large 限定符。因此,您應(yīng)創(chuàng)建一個名為 res/layout-large/main.xml 的文件,該文件可能與 res/layout-sw600dp/main.xml 完全相同。

為避免同一文件出現(xiàn)這種重復(fù),您可以使用別名文件。例如,您可以定義以下布局:

res/layout/main.xml # single-pane layout res/layout/main_twopanes.xml # two-pane layout

并添加以下兩個文件:

  • res/values-large/layout.xml:    @layout/main_twopanes
  • res/values-sw600dp/layout.xml @layout/main_twopanes

這兩個文件的內(nèi)容完全相同,但它們實際上并未定義布局,而只是將 main 設(shè)為 main_twopanes 的別名。由于這些文件具有 large 和 sw600dp 選擇器,因此無論使用的是哪個 Android 版本,它們都適用于大屏幕(低于 3.2 版本的平板電腦和 TV 與 large 匹配,高于 3.2 版本的平板電腦和 TV 與 sw600dp 匹配)

5. dp單位轉(zhuǎn)像素單位的說明

在某些情況下,您需要以 dp 表示尺寸,然后將其轉(zhuǎn)換為像素。dp 單位轉(zhuǎn)換為屏幕像素很簡單:

px = dp * (dpi / 160)

假設(shè)在某一應(yīng)用中,用戶的手指至少移動 16 像素之后,系統(tǒng)會識別出滾動或滑動手勢,那么在基準(zhǔn)屏幕上,用戶的手指必須至少移動 16 pixels / 160 dpi,相當(dāng)于 1 英寸的 1/10(2.5 毫米),相應(yīng)手勢才能被識別;而在配備高密度顯示屏 (240dpi) 的設(shè)備上,用戶的手指必須至少移動 16 pixels / 240 dpi,相當(dāng)于 1 英寸的 1/15(1.7 毫米)。此距離短得多,因此用戶會感覺應(yīng)用在該設(shè)備上更靈敏。

要解決此問題,手勢閾值必須在代碼中以 dp 表示,然后再轉(zhuǎn)換為實際像素。例如:

kotlin // The gesture threshold expressed in dp private const val GESTURE_THRESHOLD_DP = 16.0f ... private var mGestureThreshold: Int = 0 ... override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Get the screen's density scale val scale: Float = resources.displayMetrics.density // Convert the dps to pixels, based on density scale mGestureThreshold = (GESTURE_THRESHOLD_DP * scale + 0.5f).toInt() // Use mGestureThreshold as a distance in pixels... } java // The gesture threshold expressed in dp private static final float GESTURE_THRESHOLD_DP = 16.0f; // Get the screen's density scale final float scale = getResources().getDisplayMetrics().density; // Convert the dps to pixels, based on density scale mGestureThreshold = (int) (GESTURE_THRESHOLD_DP * scale + 0.5f); // Use mGestureThreshold as a distance in pixels...

DisplayMetrics.density 字段根據(jù)當(dāng)前像素密度指定將 dp 單位轉(zhuǎn)換為像素時必須使用的縮放系數(shù)。對于中密度屏幕,DisplayMetrics.density 等于 1.0;對于高密度屏幕,等于 1.5;對于超高密度屏幕,等于 2.0;對于低密度屏幕,等于 0.75。此數(shù)字是一個系數(shù),用其乘以 dp 單位,即可得出當(dāng)前屏幕的實際像素數(shù)。

使用預(yù)縮放的配置值

您可以使用 ViewConfiguration 類來獲取 Android 系統(tǒng)常用的距離、速度和時間。例如,可通過 getScaledTouchSlop() 來獲取框架用作滾動閾值的距離(以像素為單位):

kotlin: private val GESTURE_THRESHOLD_DP = ViewConfiguration.get(myContext).scaledTouchSlop java: private static final int GESTURE_THRESHOLD_DP = ViewConfiguration.get(myContext).getScaledTouchSlop();  

ViewConfiguration 中以 getScaled 為前綴的方法都會返回以像素為單位的值,無論當(dāng)前像素密度是多少,該值都會正確顯示。

6. 備用圖片的說明以及l(fā)dpi等說明:

表 1. 適用于不同像素密度的配置限定符。

密度限定符說明
ldpi適用于低密度 (ldpi) 屏幕 (~ 120dpi) 的資源。
mdpi適用于中密度 (mdpi) 屏幕 (~ 160dpi) 的資源(這是基準(zhǔn)密度)。
hdpi適用于高密度 (hdpi) 屏幕 (~ 240dpi) 的資源。
xhdpi適用于加高 (xhdpi) 密度屏幕 (~ 320dpi) 的資源。
xxhdpi適用于超超高密度 (xxhdpi) 屏幕 (~ 480dpi) 的資源。
xxxhdpi適用于超超超高密度 (xxxhdpi) 屏幕 (~ 640dpi) 的資源。
nodpi適用于所有密度的資源。這些是與密度無關(guān)的資源。無論當(dāng)前屏幕的密度是多少,系統(tǒng)都不會縮放以此限定符標(biāo)記的資源。
tvdpi適用于密度介于 mdpi 和 hdpi 之間的屏幕(約 213dpi)的資源。這不屬于“主要”密度組。它主要用于電視,而大多數(shù)應(yīng)用都不需要它。對于大多數(shù)應(yīng)用而言,提供 mdpi 和 hdpi 資源便已足夠,系統(tǒng)將視情況對其進(jìn)行縮放。如果您發(fā)現(xiàn)有必要提供 tvdpi 資源,應(yīng)按一個系數(shù)來確定其大小,即 1.33*mdpi。例如,如果某張圖片在 mdpi 屏幕上的大小為 100px x 100px,那么它在 tvdpi 屏幕上的大小應(yīng)該為 133px x 133px。

要針對不同的密度創(chuàng)建備用可繪制位圖資源,您應(yīng)遵循六種主要密度之間的 3:4:6:8:12:16 縮放比。例如,如果您有一個可繪制位圖資源,它在中密度屏幕上的大小為 48x48 像素,那么它在其他各種密度的屏幕上的大小應(yīng)該為:

  • 36x36 (0.75x) - 低密度 (ldpi)
  • 48x48(1.0x 基準(zhǔn))- 中密度 (mdpi)
  • 72x72 (1.5x) - 高密度 (hdpi)
  • 96x96 (2.0x) - 超高密度 (xhdpi)
  • 144x144 (3.0x) - 超超高密度 (xxhdpi)
  • 192x192 (4.0x) - 超超超高密度 (xxxhdpi)

7. 在AndroidStuido中使用矢量圖形

矢量圖形通常以 SVG(可縮放矢量圖形)文件的形式提供,但 Android 不支持此格式,因此您必須將 SVG 文件轉(zhuǎn)換為 Android 的矢量圖格式。

您可以在 Android Studio 中使用 Vector Asset Studio 輕松地將 SVG 轉(zhuǎn)換為矢量圖,具體步驟如下:

  1. 在 Project 窗口中,右鍵點擊 res 目錄,然后依次選擇 New > Vector Asset。
  2. 選擇 Local file (SVG, PSD)。
  3. 找到要導(dǎo)入的文件并進(jìn)行任何調(diào)整。

    圖 3. 使用 Android Studio 導(dǎo)入 SVG 文件

    您可能會注意到 Asset Studio 窗口中出現(xiàn)了一些錯誤,指出文件的某些屬性不受矢量圖支持。但這不會阻止您導(dǎo)入,只是會忽略不受支持的屬性。

  4. 點擊 Next。

  5. 在下一個屏幕上,確認(rèn)您希望從中查找項目文件的源集,然后點擊 Finish。

    因為可以對所有像素密度使用一個矢量圖,所以此文件位于默認(rèn)的 drawable 目錄中(您不需要使用特定于密度的目錄):

    res/ drawable/ ic_android_launcher.xml  如需詳細(xì)了解如何創(chuàng)建矢量圖形,請閱讀矢量圖文檔。

網(wǎng)頁名稱:Android復(fù)習(xí)(五)設(shè)備兼容—>屏幕適配-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://weahome.cn/article/dhcoid.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部