web-dev-qa-db-ja.com

androidで異なる画面サイズをサポートする方法

Androidでアプリを開発しています。さまざまな画面サイズと密度をすべてサポートする必要があります。したがって、レイアウト用に別のフォルダーを作成しました。layout-small layout-largeおよびlayout

次に、画像用に別のフォルダーを作成しました:ldpi, mdpiおよびhdpi。すべてのドロウアブルフォルダーで、画像は異なるサイズである必要がありますか?画面サイズが大きく、密度が中程度の携帯電話を使用しているため、表示される画像が小さくなり、適切なサイズになりません。

47
JackTurky

さまざまな画面サイズの場合、以下は、さまざまな画面サイズのさまざまなレイアウト設計と、小、中、高、および超高密度画面のさまざまなビットマップドロウアブルを提供するアプリケーションのリソースディレクトリのリストです。

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

マニフェストの次のコードは、すべてのdpiをサポートしています。

<supports-screens Android:smallScreens="true" 
          Android:normalScreens="true" 
          Android:largeScreens="true"
          Android:xlargeScreens="true"
          Android:anyDensity="true" />

そして、私の SOの答え もチェックしてください。

76
Uttam

Dpサイズ単位の代わりに sdp サイズ単位を使用できます。 sdp サイズの単位は画面サイズに関連するため、複数の画面サイズを対象とする場合によく使用されます。

慎重に使用してください!たとえば、ほとんどの場合、タブレット用に別のレイアウトを設計する必要があります。

9

複数の画面サイズをサポートすることになると、それは高尚に聞こえます。次の結果が優れています。

res/layout/layout-w120dp
res/layout/layout-w160dp
res/layout/layout-w240dp
res/layout/layout-w160dp
res/layout/layout-w320dp
res/layout/layout-w480dp
res/layout/layout-w600dp
res/layout/layout-w720dp

表示メトリックを使用してデバイスの幅と高さをチェックします

デバイスの結果の幅に適したレイアウトを配置/図化します。

let smallestScreenWidthDp="assume some value(Which will be derived from Display metrics)"

SetContentView()の前にすべてをチェックする必要があります。

     Configuration config = getResources().getConfiguration();

     Configuration config = getResources().getConfiguration();

        if (config.smallestScreenWidthDp >= 600) {
            setContentView(R.layout.layout-w600dp);
        } else {
            setContentView(R.layout.main_activity);
        }

上部には、複数の画面に収まるように非常に多くのレイアウトが作成されていますが、それはすべてあなた次第です。 。

サードパーティのライブラリを使用していた人はほとんどいませんでしたが、作業を減らすかもしれませんが、それはベストプラクティスではありません。慣れるAndroidベストプラクティス。

チェックアウト

5
Trinadh Koya

高解像度デバイスと他のデバイスに異なる画像を使用したい場合、Androidはそれ自体で調整し、異なるフォルダーに個別の画像を配置できます。それ以外の場合は、9パッチを作成できる一部の画像についてのみ、1つのドロアブルレイアウトフォルダーに配置します。

ここを読む

複数画面のマニフェストで許可が必要です サポートリンク

<supports-screens Android:resizeable=["true"| "false"]
                  Android:smallScreens=["true" | "false"]
                  Android:normalScreens=["true" | "false"]
                  Android:largeScreens=["true" | "false"]
                  Android:xlargeScreens=["true" | "false"]
                  Android:anyDensity=["true" | "false"]
                  Android:requiresSmallestWidthDp="integer"
                  Android:compatibleWidthLimitDp="integer"
                  Android:largestWidthLimitDp="integer"/>
3
ud_an

画面の大きさを動的に把握できます

Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int Height= mDisplay.getHeight();

レイアウトは、このメソッドを使用して取得した幅と高さを使用して設定できます。

2
Sathish

githubで提供されるsdpライブラリを使用します

2
DEEP ADHIYA

アプリケーションが実行する高解像度/サイズのビットマップを作成し、コード内でサイズを変更できます(実行時)

この記事を確認してください http://nuvornapps-en.blogspot.com.es/

0
Nuvorn Apps

@ud_anへの追加

レイアウト用に異なるフォルダを作成することはお勧めできません。すべての画面サイズでうまく機能するようにレイアウトを作成します。これを実現するには、レイアウト属性を試してください。 hdpi、mdpi、およびldpiタイプの異なるイメージのみが必要です。残りはAndroid OSによって管理されます。

0
Shafi