web-dev-qa-db-ja.com

マルチスクリーンサポートアプリの作成android

Androidで、複数の画面をサポートする必要があるアプリを作成しています。

この目的のために私は多くの答えを読みました、そして私が最も好きなものは私が次の名前によってresフォルダーに異なるフォルダーを作成できるという状態です、

小さな画面の場合layout-small

大画面の場合layout-large

特大画面の場合layout-xlarge

そして私は同じ名前で異なる画面のために異なるレイアウトを作成する必要があります。例:mylayout.xml

そして私はmanifest.xmlファイルに次のコードを入れなければなりません

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

そして最後に、アクティビティファイルに次の行を書き込む必要があります。

  setContentView(R.layout.mylayout);

このアプリをさまざまなサイズの画面で実行すると、画面の解像度に応じてさまざまなフォルダーからレイアウトを取得する必要があります。

しかし、私の場合、これは発生していません。layoutフォルダーで定義されたレイアウトのみが必要です。

誰かが私にこれが起こる理由と、私のアプリがすべてのサイズの画面で効果的に実行できるようにこの問題を解決する方法を説明してもらえますか?.

9
Jay Vyas

次のように試してください:

  • レイアウト-sw320dp
  • レイアウト-sw480dp
  • レイアウト-sw600dp
  • レイアウト-sw720dp

代わりに

  • レイアウト-小さい、
  • レイアウト-大など...
17
Arun Antoney

以下のリンクを参照してください。

http://developer.Android.com/guide/practices/screens_support.html さまざまな画面サイズの場合、以下は、さまざまな画面サイズにさまざまなレイアウトデザインを提供するアプリケーションのリソースディレクトリのリストです。小、中、高密度、および超高密度画面用のさまざまなビットマップドローアブル。 resフォルダー内のさまざまなサイズのレイアウトファイルを使用できます。また、密度に基づいて描画可能な画像を変えることもできます。

  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

enter image description here res/drawable-mdpi/my_icon.png //中密度のビットマップres/drawable-hdpi/my_icon.png //高密度のビットマップres/drawable-xhdpi/my_icon.png //超高密度のビットマップ

<compatible-screens>
    <screen
        Android:screenDensity="ldpi"
        Android:screenSize="small" />
    <screen
        Android:screenDensity="mdpi"
        Android:screenSize="normal" />
    <screen
        Android:screenDensity="xhdpi"
        Android:screenSize="large" />
    <screen
        Android:screenDensity="xhdpi"
        Android:screenSize="xlarge" />        
</compatible-screens>

そして、その後にこの行を使用します。

Android:configChanges = "orientation | screenSize | keyboardHidden"

8
Sethu

値では、layout-smallのようなフォルダの命名規則は、api version less than 3.1のあるデバイスでのみ機能します。 3.1より大きいAPIレベルの場合は、layout-sw600dpのような名前の値ファイルを作成する必要があります。これを読んでください http://developer.Android.com/guide/practices/screens_support.html3.1api

enter image description here このように、デバイスのタイプごとにlayout-sw600dp、layout-sw720dpを作成する必要があります。 layout-sw600dpは、layout-600dpフォルダーとlayout-sw720dpフォルダーがある場合、このレイアウトが最小幅600dpのデバイスで機能することを意味します。最初のレイアウトフォルダは、最小幅が600dp(7インチタブレット)から720dpのデバイスで機能し、2番目のレイアウトフォルダは、最小幅が720dp(10インチタブレット)を超えるデバイスで機能します。

最低限必要なバージョンが3.1を超える場合は、layout-small、layoutxLargeフォルダーは必要ありません。それ以外の場合は、両方のタイプのレイアウトfromatを考慮する必要があります。

4
Burusothman

アプリケーションがさまざまな画面に正しく表示されるようにする方法についての簡単なチェックリストは次のとおりです。

XMLレイアウトファイルで寸法を指定するときは、wrap_content, fill_parent,またはdp単位を使用します。アプリケーションコード(.Javaファイル)でハードコードされたpixel値を使用しないでください。 AbsoluteLayoutは使用しないでください(Android 1.5では非推奨です)。代わりに、相対配置を使用して子ビューをレイアウトするRelativeLayoutを使用する必要があります。さまざまな画面密度に対応する代替ビットマップドローアブルを提供します。

時間をかけてこれらを読んでください screens_support または、より良いアイデアを得るには How Android Finds the Best-matching Resource )を参照してください。リソースを配置します。

1
imaginae