web-dev-qa-db-ja.com

Android Studioとdrawableとdrawable-v21の2つのdrawableディレクトリのみの新しいバージョン

古いバージョンのAndroid Studioでは、すべてのドロアブルバケットフォルダがデフォルトで作成されました(つまり、drawable-mdpi、drawable-hdpiなど)。新しいバージョンのAndroid Studio、drawableとdrawable-v21のみを提供します。

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

念のため、手動で追加できることは知っていますが、これらのフォルダーを使用しない新しいベストプラクティスの理由がないことを確認したいと思います。

29
Bourne

助けようとしたすべての人に感謝します。あなたは私が最終的な答えに到達するのを手伝いましたが、誰も正解ではありません。 @ user3137702は、おそらく最も近いものでした。ISベクトル/ SVGへの移行全体に関連します。Googleからの直接のような明確な答えは見つかりませんでした。そこ)、しかし、私がたくさんの記事から集めたものから、おそらく彼らがこれをしている理由があります。

手始めに、これはAndroid Studio 1.4で始まったように見えます。私は現在1.5にいます。Androidはもはやドロアブル用に独自の密度フォルダー(mdpi、hdpiなど)を作成する必要があります(mipmapsは異なるため、私が話していることと混同しないでください)。Android = Studio 1.4、通常の描画可能フォルダー(v21フォルダーではない)に配置したSVGをPNGに変換し、ビルドシーケンス中に自動生成された密度フォルダーに配置します(Gradleがこれを行います)あなたにとっては、本質的に)API 21より古いすべてのバージョンに対してです。21以降では、SVGのサポートは異なりますが、これはまったく別のトピックですが、これによりSVGサポートは本質的にAPI 1との下位互換性があります!!!

しかし、大きなキャッチがあります。このSVG変換は、期待どおりに成功するとは限りません。 SVGファイルのサブセットのみをサポートしているため、保存方法(保存時に適用される設定など)によっては、適切にレンダリングされない場合があります。グラデーションやパターンの塗りつぶし、ローカルIRI参照、変換などの一般的に使用される設定もサポートされていません(まだ)。生成していないSVGファイルを使用している場合、それらのインポートで問題が発生する可能性があります。あなたまたはあなたと一緒に作業している人が直接それらを生成する場合、ファイルを保存する方法を実験する必要があるかもしれません。そして、あなたはそれが判明したことを確認するためにAndroid期待した。

SVGをAndroid Studio 1.4+にインポートするには、次の簡単な手順に従います。

  1. Res/drawableフォルダーを右クリックします
  2. 「新規」を選択します
  3. 「ベクター資産」を選択します
  4. この時点で、「素材アイコン」を選択できます。これは非常にうまく機能し、選択できる美しい「無料」アイコンがたくさんあります。アイコンのデザインをサポートしていないインディー開発者にとって、これは素晴らしいことです!
  5. または-「ローカルSVGファイル」を選択できます
  6. 次に、「選択」オプションを使用して、いずれかのオプションからSVGを選択します。警告:これは、インポートするSVGが適切に保存されていない場合に問題が発生する可能性がある場所です。
  7. 「次へ」を押す
  8. 適切な場所に保存されていることを確認し、「完了」をクリックします
  9. この時点で、Android:icon = "@ drawable/ic_imagename"で参照可能になります(もちろん、ic_imagenameの代わりに画像名を使用)

@CommonsWareの応答は適切なソリューションを導くのに非常に役立ちましたが、私が見たところから、異なるテンプレートおよびバージョンサポート設定から新しいプロジェクトのいくつかのバリエーションを生成したため、古い密度フォルダを実際に自動生成する方法はありませんでした。ここでは、単に異なるテンプレートバージョンの選択よりも多くのことが行われています。しかし、彼が言ったように、選択したテンプレート/バージョンによっては、これら2つの描画可能なフォルダータイプの異なるセットになることがあります。しかし、私の質問に固有のAndroid Studioは、独自の描画可能な密度フォルダーをまったく作成しないというこの新しいアプローチに重点を置いているようです。

それはかなりクールです、いもですが、まだいくつかの作業が必要です。実際には、このメカニズムがすべてのタイプのSVGレンダリングをもう少しサポートするまで、描画可能な密度フォルダーを追加して、作業するすべての画像をサポートする必要があります。

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

23
Bourne