web-dev-qa-db-ja.com

Android-プロジェクトへの画像の追加

私はAndroidを初めて使い、Eclipse ADTを使用して簡単なアプリケーションを作成しています。このアプリケーションには、ユーザーのクリックに基づいて背景画像を変更するボタンがあります。

プロジェクトには、drawable-hdpi, drawable-ldpi, drawable-mdpi, and drawable-xhdpiという画像用の4つのフォルダーがあることに気付きました。

また、現在そこにある画像(ランチャーアイコン)がすべて異なるサイズであることに気付きました。

これは、画像編集ソフトウェアを使用して、各画像の解像度ごとに1つの画像を作成する必要があるということですか?または、(願わくば)画像をインポートし、これを自動的に行う方法がありますか?

ありがとう!

18
Jan Tacci

画像およびその他の視覚ファイルは、1つ以上の描画可能なディレクトリに保存されます。 1つのディレクトリにのみある場合、Androidは必要に応じて画像をスケーリングします。複数のディレクトリが使用される場合、Androidは適切なサイズの画像を選択します。

  • drawable-ldpi-低密度画像
  • drawable-mdpi-中密度画像
  • drawable-hdpi-高密度画像
  • drawable-xhdpi-超高密度画像(つまり、網膜のようなディスプレイ)
  • drawable-xxhdpi-超高密度画像(Nexus 10、Samsung Galaxy S4、HTC One、Sony Xperia Zなどのデバイス)
  • drawable-xxxhdpi-トリプル超高密度画像( Nexus 6および9

(補足:XMLファイルは、ドローアブルとして記述および保存することもできます。これらの種類のファイルは、ビューの状態、またはグラデーション、境界線などの他の視覚設定に基づいて、複数の画像をいつ使用するかを制御できます。)

それで、あなたは何をすべきか?

最良の結果を得るためにAndroid developer docs から):

これらの画像を生成するには、ベクトル形式の生リソースから開始し、次のサイズスケールを使用して各密度の画像を生成する必要があります。

  • xxxhdpi:4.0
  • xxhdpi:3.0
  • xhdpi:2.0
  • hdpi:1.5
  • tvdpi:1.33(テレビのみ)
  • mdpi:1.0(ベースライン)
  • ldpi:0.75

つまり、xhdpiデバイス用に200x200イメージを生成する場合、hdpi用に150x150、tvdpi用に133x133、mdpi用に100x100、ldpiデバイス用に75x75イメージで同じリソースを生成する必要があります。

1つの画像を使用したい場合は、Android scale for you:

Androidデバイスの75%以上は、Android開発者サイトの Dashboardによると、hdpi以上の解像度になりました。 。たとえば、hdpiで1つのイメージを作成すると、約3分の1のデバイスで完璧に表示され、一部のデバイスでスケールアップし、約25%のデバイスでスケールダウンします。 dスケールダウンよりもスケールダウンの方が適しています。

44
Ben Jakuben

これは、画像編集ソフトウェアを使用して、各画像の解像度ごとに1つの画像を作成する必要があるということですか?または、(願わくば)画像をインポートし、これを自動的に行う方法がありますか?

画像の高解像度ソース(またはベクターグラフィック形式)が既にある場合は、 Android Asset Studio を使用して、ごとに独自のソース画像からアイコン/画像を生成できます密度(マイナスxxhdpi)。デフォルトのAndroidクリップアート、Androidのさまざまなバージョンをテーマにしたクリップアートからアイコン/画像を作成することもできます。これにより、画像編集ツールでサイズ変更や保存の手間が省けます。

3
Steven Byle