2015-12-17 6 views
9

旧バージョンのAndroidスタジオでは、すべての描画可能バケットフォルダがデフォルトで作成されています(drawable-mdpi、drawable-hdpiなど)。 Android Studioの新しいバージョンでは、drawableとdrawable-v21しか提供していません。何故ですか?アンドロイドスタジオの新しいバージョンとドロアブルディレクトリ2つ(drawableとdrawable-v21)

Androidは(無限の知恵で)別のバケットフォルダを提供しなくなる理由はありますか?

ただ手動で追加することができますが、これらのフォルダを使用しないという新しいベストプラクティスの理由がないことを確認したいと思います。 Androidのメーカーの新しいバージョンで

+1

ラスタイメージではなくドロワーブルにSVGを使用するという新しいベストプラクティスがあることを覚えています。したがって、きれいにサイズを変更できるイメージが1つだけ必要です。 – alzee

+0

ミップマップフォルダが導入されているので、それが不完全だと思います – user2511882

+0

ノートのおかげで。私が覚えているところでは、Androidの新しいバージョンだけがSVGしかサポートしていないので、私が作業しているほとんどのプロジェクトではうまくいかないかもしれませんが、その理由が考えられます。 SVGについても間違っているかもしれませんが、後方互換性がないので、それをチェックします! – Bourne

答えて

9

皆さん、助けてくれてありがとうございました。私の最終的な回答に手伝ってくれてありがとうございましたが、解決策はありませんでした。 @ user3137702はおそらくベクトル/ SVGへの移動全体に関連しているので、最も近いでしょう。私はGoogleからの何かのような最終的な答えを見つけることができませんでしたが(私はそれがそこにあるとは思いますが)、私が多数の記事から集めたものから、おそらく彼らがこれをやっている理由があります。

これはAndroidスタジオ1.4で始まったようです。私は今1.5時です。 Androidは、ドロアブル用の独自の密度フォルダ(つまり、mdpi、hdpiなど)を作成する必要がなくなりました(ミップマップが異なるので、私が話していることと混同しないでください) 。 Android Studio 1以降。4では、通常のドロウアブルフォルダ(v21フォルダではない)に入れたSVGを取り出し、pngに変換し、ビルドシーケンス中に自動生成された密度フォルダに置きます(Gradleはこれを行います基本的には、API 21より古いすべてのバージョンで使用できます.21以上の場合、SVGは別のトピックとしてサポートされています。しかし、これは本質的にSVGのサポートをAPI 1の下位互換性のあるすべての方法でサポートします。

いずれにしても、大きなキャッチがあります。このSVG変換は、望むほど成功するとは限りません。 SVGファイルのサブセットのみをサポートしていますので、保存方法(保存時に適用される設定)によっては正しく表示されないことがあります。グラデーションやパターンの塗りつぶし、ローカルIRI参照、変換など、よく使用される設定でさえ、サポートされていません(まだ)。生成しなかったSVGファイルを使って作業している場合、それらをインポートする際に問題が発生する可能性があります。あなたや他の人が直接ファイルを作成する場合、ファイルの保存方法を試してみる必要があります。古いバージョンのAndroidでビルドをテストして、期待通りの結果が得られることを確認する必要があります。

は、これらの簡単な手順に従って、Androidのメーカー1.4+にSVGsをインポートするには:

  1. /描画可能なフォルダ
  2. を選択し、 "新規"
  3. を選択し、 "ベクトル資産"
  4. 解像度を右クリックします
  5. この時点で、 が本当にうまく機能する「マテリアルアイコン」を選択することができ、美しい「フリー」アイコンがたくさんあります。 から選択してください。インディーズ開発者のために、アイコンデザインのサポートなしでは、 これはいいです!
  6. OR - 「ローカルSVGファイル」を選択できます
  7. 「選択」オプションでいずれかのオプションからSVGを選択します。警告:インポートしたSVGが正しく保存されていないと、これが間違ってしまう可能性があります。アンドロイド:
  8. ヒット「次へ」
  9. は、それが正しい場所に保存されていることを確認し、この時点で「完了」
  10. をクリックして、それが参照可能なとあるアイコン=「@の描画可能/ ic_imagename」(

@ CommonsWareの回答は、適切なソリューションにつながりましたが、私が見たところでは、さまざまなテンプレートとバージョンのサポート設定からいくつかの新しいプロジェクトが生成されています。実際に古い密度のフォルダを自動生成させる方法はありませんでした。ここでは、テンプレートのバージョン選択だけではなく、もっと多くのことが起こっています。しかし、あなたが言ったように、あなたが選択したテンプレート/バージョンによっては、それらの2つの描画可能なフォルダタイプの異なるセットで終わることがあります。しかし、私の質問に固有のAndroidスタジオは、独自の個々の描画可能な密度のフォルダを作成しないというこの新しいアプローチに重点を置いているようです。

非常にクールな、イモですが、まだまだ仕事が必要です。実際には、私が扱うすべての画像をサポートするために、描画可能な密度のフォルダを追加する必要があります。このメカニズムがすべてのタイプのSVGレンダリングを少しでも支持するまでは、

もう1つのおしゃべり - これはすべてGradle(実際の密度フォルダの生成)によって処理されるため、フレーバメカニズムを使用してビルド設定を追加して、生成する密度フォルダを制限できます。例えば、mdpiイメージがあなたの特定のユーザベースの有用性の終わりに達していると感じて、そのサイズ/密度をアプリから外して、アプリサイズから数MBを削る場合は、 Gradleビルドフレーバー。

+0

SVGファイルからXMLドロワブルを作成するには、「新規」→「ベクターアセット」をクリックする必要があります。 –

1

、それはあなたがする「のAndroidメーカーの新しいバージョンを」考えるものに完全に依存描画可能と描画可能-V21

提供し、あなたがするときに使用するものの設定しますプロジェクトを作成しました。たとえば、Android Studio 1.5.1では、新規プロジェクトウィザードを使用してスクラッププロジェクトのペアを作成しました。すべてのデフォルトを1つ受け入れ(結果:minSdkVersionは21)、2番目のプロジェクトのminSdkVersionを19に変更しました。いずれかのプロジェクトにdrawable-v21ディレクトリがあります。

作成されるディレクトリは、新しいプロジェクト用にAndroid Studioで使用されるテンプレートによって駆動されます。新しいプロジェクトを作成する場合は、新しいアクティビティを使用します。 IDEは時間とともに変化するだけでなく、それらのテンプレートも変化します。

なぜですか?

ランチャーアイコンがmipmapリソースに移動されました。

ベクターのドロワーブルは、-v21/ディレクトリにあり、ビルドツールは古いデバイス用の密度固有のPNGファイルを自動的に生成します。これらのPNGファイルは、ベクターのドロウアブル入力から生成されるため、build/のように、モジュール内のsrc/には表示されません。したがって、Javaソースファイルから生成されたJavaクラスファイルコードはプロジェクトソースの一部ではありません)。

これ以外にも、リソースツリーに空のディレクトリを作成しない方が良いと思われます。選択したテンプレートがビットマップ以外のミップマップアイコンを使用していない場合、IDEがそれらの描画可能ディレクトリを作成する理由はありません。 IDEは—私の2つのスクラッププロジェクトはそれぞれres/drawable/ディレクトリ—空を持ってこれについて完璧ではありませんが、彼らはそれについてよくなってきています。

関連する問題