AndroidManifest.xml文件詳解(compatible-screen)

語法(SYNTAX):

<compatible-screens>
    <screenandroid:screenSize=["small" | "normal" | "large" | "xlarge"]
            android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"] />
    …
</compatible-screens>

包含於(CONTAINED IN):

<manifest>

說明(DESCRIPTION)):

這個元素用於指定那些屏幕配置跟應用程序是兼容的。在應用的清單中隻允許有一個<compatible-screent>元素的實例,但是它能夠包含多個<screen>元素。每個<screen>元素指定一個特定的跟應用程序兼容的尺寸—密度組合。

Android系統不會讀取<compatible-screen>清單元素(無論是在安裝的時候,還是在運行的時候)。這個元素的信息隻能被外部服務使用(如Google Play),以便使其能夠更好的理解應用程序跟指定屏幕配置的兼容性。任何沒有在這個元素中聲明的屏幕配置,都是跟應用程序不兼容的屏幕。這樣,外部服務(如Google Play)就不應該把應用程序提供給帶有這樣屏幕的設備。

警告:通常不應該使用這個清單元素。因為使用這個元素會顯著的降低應用程序潛在的用戶群。如果設備帶有一個應用程序清單中沒有列出屏幕配置,那麼就不會允許用戶安裝這個應用程序。在肯定應用程序在所有的屏幕配置上都不會工作時,最後才使用這個方法。相反為瞭給多個屏幕提供完全的支持,應該按照“支持屏幕多種配置”指南(http://developer.android.com/guide/practices/screens_support.html)來給不同的屏幕尺寸和密度來添加可選的資源。

如果隻想給應用程序設置一個最小的屏幕尺寸,那麼就應該使用<supports-screens>元素。例如,如果要讓應用程序隻對大屏幕(large)或超大屏幕(xlarge)的設備有效,那麼<supports-screen>元素就要聲明應用程序不支持小屏幕(small)和普通屏幕(normal)的設備。外部服務(如Google Play)根據<supports-screen>的設置來過濾應用程序。還能夠使用<supports-screens>元素來聲明系統是否應該調整應用程序,以便適應不同的屏幕尺寸。

子元素(CHILD ELEMENTS):

<screen>

這個元素指定一個跟應用程序兼容的屏幕配置。

在<compatible-screens>元素內部,至少要有一個這個元素的實例。這個元素必須同時包含android:screenSize和android:screenDensity屬性,如果沒有同時聲明,那麼這個元素就會被忽略。

屬性(ATTRIBUTES):

android:screenSize

指定跟應用程序兼容的屏幕配置的屏幕尺寸。可以是以下的值:

·  small

·  normal

·  large

·  xlarge

android:screenDensity

指定跟應用程序兼容的屏幕配置的屏幕密度,可以是以下值:

·  ldpi

·  mdpi

·  hdpi

·  xhdpi

例子(EXAMPLE):

如果應用程序僅跟小屏和普通屏幕的設備兼容,而不管屏幕的密度,那麼必須要指定八個不同的<screen>元素,因為每個屏幕尺寸都有四種不同密度的配置。必須對這些配置逐一聲明;任何沒有指定的尺寸和密度的組合,都會被認為這個屏幕配置跟應用程序不兼容。如果應用程序隻跟小屏幕和普通屏幕兼容,那麼清單配置如下:

<manifest … >
    …
    <compatible-screens>
        <!– all small size screens –>
        <screenandroid:screenSize="small"android:screenDensity="ldpi"/>
        <screenandroid:screenSize="small"android:screenDensity="mdpi"/>
        <screenandroid:screenSize="small"android:screenDensity="hdpi"/>
        <screenandroid:screenSize="small"android:screenDensity="xhdpi"/>
        <!– all normal size screens –>
        <screenandroid:screenSize="normal"android:screenDensity="ldpi"/>
        <screenandroid:screenSize="normal"android:screenDensity="mdpi"/>
        <screenandroid:screenSize="normal"android:screenDensity="hdpi"/>
        <screenandroid:screenSize="normal"android:screenDensity="xhdpi"/>
    </compatible-screens>
    <application … >
        …
    <application>
</manifest>

引入(INTRODUCED IN):

API Level 9

 

摘自 FireOfStar的專欄

發佈留言