Androidでアプリを開発しています。さまざまな画面サイズと密度をすべてサポートする必要があります。したがって、レイアウト用に別のフォルダーを作成しました。layout-small layout-large
およびlayout
。
次に、画像用に別のフォルダーを作成しました:ldpi, mdpi
およびhdpi
。すべてのドロウアブルフォルダーで、画像は異なるサイズである必要がありますか?画面サイズが大きく、密度が中程度の携帯電話を使用しているため、表示される画像が小さくなり、適切なサイズになりません。
さまざまな画面サイズの場合、以下は、さまざまな画面サイズのさまざまなレイアウト設計と、小、中、高、および超高密度画面のさまざまなビットマップドロウアブルを提供するアプリケーションのリソースディレクトリのリストです。
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の答え もチェックしてください。
複数の画面サイズをサポートすることになると、それは高尚に聞こえます。次の結果が優れています。
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ベストプラクティス。
高解像度デバイスと他のデバイスに異なる画像を使用したい場合、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"/>
画面の大きさを動的に把握できます
Display mDisplay= activity.getWindowManager().getDefaultDisplay();
int width= mDisplay.getWidth();
int Height= mDisplay.getHeight();
レイアウトは、このメソッドを使用して取得した幅と高さを使用して設定できます。
githubで提供されるsdpライブラリを使用します
アプリケーションが実行する高解像度/サイズのビットマップを作成し、コード内でサイズを変更できます(実行時)
この記事を確認してください http://nuvornapps-en.blogspot.com.es/
@ud_anへの追加
レイアウト用に異なるフォルダを作成することはお勧めできません。すべての画面サイズでうまく機能するようにレイアウトを作成します。これを実現するには、レイアウト属性を試してください。 hdpi、mdpi、およびldpiタイプの異なるイメージのみが必要です。残りはAndroid OSによって管理されます。