スプラッシュで表示したいフルスクリーンPNGがあります。そこにはたった一つのエラーがあります、そして私はすべての描画可能なフォルダ(ldpi
、mdpi
、hdpi
、そしてxhdpi
)にどんなサイズを入れるべきかわかりません。私のアプリケーションは、すべての携帯電話とタブレットで美しく、美しく動作するはずです。スプラッシュがすべての画面でNiceと表示されるように作成するサイズ(ピクセル単位)を教えてください。
この答えは2013年のもので、古くなっています。 Android 3.2以降、画面密度は6グループになりました。この回答はできる限り早く更新されますが、ETAはありません。現時点でのすべての濃度については、 オフィシャルドキュメント を参照してください(ただし、特定のピクセルサイズに関する情報はいつも見つけるのは難しいです)。
スクリーン密度ごとに1つずつ、4つの画像を作成します。
Android開発者ガイドの 9パッチイメージの紹介 を読んでください。
これにより、Androidはデバイスの画像密度に適したファイルを選択し、9パッチ標準に従って画像を拡大します。
私は質問のデザイン関連の側面に関して答えています。私は開発者ではないので、提供されているソリューションの多くを実装するためのコードを提供することはできません。残念ながら、私の目的は、最初のAndroidアプリの開発を手伝ったときと同じくらい迷子になっているデザイナーを支援することです。
Androidを使用すると、企業は自分の携帯電話やほぼすべてのサイズのテーブルを、ほぼすべての解像度で開発することができます。そのため、スプラッシュスクリーンには「正しい画像サイズ」はありません。固定の画面解像度がないからです。それは、スプラッシュスクリーンを実装したい人々にとって問題となります。
(ちなみに、スプラッシュスクリーンはユーザビリティの間ではややお勧めできません。ユーザーは自分がタップしたアプリを既に知っています。スプラッシュスクリーンで画像をブランディングする必要はないと主張しています。ただし、ゲームなどを含む初期化時にかなりの読み込みが必要なアプリケーションでは、アプリがクラッシュしたかどうかにかかわらずユーザーが迷うことがないように、「広告」を使用する必要があります。
そのため、市場に出回っている携帯電話の非常に多くの異なる画面解像度を考えると、グーグルはいくつかの代替案とそれに役立つ気の利いたソリューションを実装しました。あなたが知る必要がある最初の事はアンドロイドが4つの異なるスクリーン密度にALLスクリーンを分けるということです:
あなたが(あなたがデザイナーであれば)知っておくべきことは、デバイスに応じて、Androidは基本的に表示する4つの画像から選択するということです。したがって、基本的には4つの異なる画像をデザインする必要があります(ただし、ワイドスクリーン、ポートレート/ランドスケープモードなど、さまざまなフォーマット用に開発することができます)。
それを念頭に置いてこれを知っている:あなたがAndroidで使用されているすべての単一の解像度のための画面を設計しない限り、あなたの画像は画面サイズに合わせて拡大されます。そして、あなたのイメージが基本的にグラデーションかぼかしでない限り、あなたはストレッチングでいくらかの望まれない歪みを得るでしょう。したがって、基本的に2つの選択肢があります。それぞれのスクリーンサイズ/密度の組み合わせに対してイメージを作成するか、4つの9パッチイメージを作成します。
最も難しい解決策は、解像度ごとに異なるスプラッシュスクリーンを設計することです。 このページ の最後にある表の中の解決方法に従うことから始めることができます(他にもあります。例:960 x 720はそこにリストされていません)。また、小さなテキストなど、画像に細部があると仮定すると、各解像度に対して複数の画面をデザインする必要があります。たとえば、中サイズの画面で表示されている480 x 800の画像は問題ないように見えますが、小さい画面(密度/ dpiが高い)ではロゴが小さくなりすぎたり、テキストが判読できなくなることがあります。
もう1つの解決策は、 9パッチのイメージを作成する です。これは基本的には画像の周囲1ピクセルの透明な境界線です。この境界線の上部と左側の領域に黒いピクセルを描画することで、画像のどの部分を拡大できるかを定義できます。 9パッチ画像のしくみについては詳しく説明しませんが、要するに上部と左側の領域のマーキングに揃うピクセルが、画像を伸ばすために繰り返されるピクセルです。
そのため、ロゴの両側(上の境界線)に1ドット、上下(左の境界線)に1ドットを配置することができます。これらのマークされた行と列だけが伸縮するピクセルになります。
これは9パッチの画像、102×102ピクセル(アプリの目的のために100×100の最終サイズ)です。
これは、同じ画像を200%ズームしたものです。
左上の1pxマークがどの行/列が展開されるかを言っているのに注目してください。
これは、この画像がアプリ内の100 x 100の場合の外観です。
そしてこれが460x140に拡張された場合の望みです。
考慮すべき最後のこと。これらの画像は、モニタ画面やほとんどの携帯電話ではきれいに見えることがありますが、デバイスの画像密度(dpi)が非常に高い場合、画像は小さすぎます。おそらくまだ判読可能ですが、1920 x 1200の解像度のタブレットでは、画像は中央に非常に小さな正方形として表示されます。だから解決策は何ですか?それぞれ異なる濃度セットに対して4つの異なる9パッチランチャー画像を設計します。縮小が発生しないようにするには、各密度カテゴリに対して最小の共通解像度で設計する必要があります。 9-patchはストレッチングのみを考慮しているため、縮小は望ましくありません。縮小プロセスでは、小さなテキストやその他の要素が読みにくくなる可能性があります。
これは、各密度カテゴリに対する最小の最も一般的な解像度のリストです。
したがって、上記の解像度で4つのスプラッシュスクリーンをデザインし、画像を拡大し、キャンバスの周囲に1pxの透明な境界線を配置し、どの行/列を伸縮可能にするかをマークします。これらの画像は、密度カテゴリのANYデバイスに使用されるため、ldpi画像(240 x 320)は、特大サイズのタブレットで1024 x 600に拡大される場合があります。小さい画像密度(〜120 dpi)。スプラッシュスクリーンに写真や複雑なグラフィックを使用したくない場合は、9パッチが最適のストレッチングソリューションです(デザインを作成する際のこれらの制限に留意してください)。
繰り返しますが、このストレッチが起こらないようにする唯一の方法は、解像度ごとに1つのスクリーンを設計すること(または、高/低密度デバイスで画像が小さくなりすぎたり大きすぎたりしないようにする場合)。伸縮しないようにして背景色が表示されるようにします(Androidエンジンでレンダリングされた特定の色は、カラープロファイルのため、フォトショップでレンダリングされた同じ特定の色とは異なる場合があります)。
これがなんらかの意味を持つことを願っています。がんばろう!
MDPIは320 x 480 dp = 320 x 480 px(1 x)
LDPIは0.75 x MDPI = 240 x 360 px
HDPIは1.5 x MDPI = 480 x 720 pxです
XHDPIは2 x MDPI = 640 x 960 pxです
XXHDPIは3 x MDPI = 960 x 1440 pxです
XXXHDPIは4 x MDPI = 1280 x 1920 pxです
MDPIは480 x 320 dp = 480 x 320 px(1 x)
LDPIは0.75 x MDPI = 360 x 240 px
HDPIは1.5 x MDPI = 720 x 480 pxです
XHDPIは2 x MDPI = 960 x 640 pxです
XXHDPIは3 x MDPI = 1440 x 960 pxです
XXXHDPIは4 x MDPI = 1920 x 1280 pxです
編集:
2019年にこれを読んでいるのであれば、スプラッシュスクリーンに Lottie を使用することをお勧めします。
肖像
LDPI:200×320ピクセル
MDPI:320×480ピクセル
HDPI:480×800ピクセル
XHDPI:720px1280px
LANDSCAPE
LDPI:320×200ピクセル
MDPI:480×320ピクセル
HDPI:800×480ピクセル
XHDPI:1280×720 px
私は9パッチのイメージを作るための最良で最も簡単な答えを探しました。今9パッチのイメージを作ることは最も簡単な仕事です。
から https://romannurik.github.io/AndroidAssetStudio/index.html XHDPI、HDPI、MDPI、LDPIなど、すべての解像度に対して9パッチの画像をワンクリックで作成できます。
PNGを使うのはそんなに良い考えではありません。実際には、パフォーマンスに関する限りコストがかかります。たとえば、 Facebookの背景 のように、描画可能なXMLファイルを使用できます。
これはあなたがあなたのパフォーマンスを滑らかにしてスピードを上げるのを助けます、そしてロゴのために.9パッチ画像を使うために。
Density buckets
LDPI 120dpi .75x
MDPI 160dpi 1x
HDPI 240dpi 1.5x
XHDPI 320dpi 2x
XXHDPI 480dpi 3x
XXXHDPI 640dpi 4x
px / dp = dpi / 160 dpi
私の場合は、style.xmlでlist drawableを使用しました。描画可能な画層リストを使用すると、すべての画面サイズに対して1つのPNGが必要になりました。
<resources xmlns:tools="http://schemas.Android.com/tools">
<!-- Base application theme. -->
<style name="AppTheme" parent="Android:Theme.Holo.Light.DarkActionBar">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowBackground">@drawable/flash_screen</item>
<item name="Android:windowTranslucentStatus" tools:ignore="NewApi">true</item>
</style>
そしてdraw_folderの中のflash_screen.xml。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item Android:drawable="@Android:color/white"></item>
<item>
<bitmap Android:src="@drawable/background_noizi" Android:gravity="center"></bitmap>
</item>
「background_noizi」はドロアブルフォルダにpngされています。私はそれが役立つことを願っています
しばらく前に私はサポートされている寸法でExcelファイルを作成しました
これが誰かに役立つことを願っています
正直言って私はアイデアを失ったが、それはサイズ(密度だけでなく)として別のスクリーン機能を参照しています
https://developer.Android.com/guide/practices/screens_support.html
間違いがあれば教えてください