これは、Androidで画像を処理する最良の方法です。最近Android Lollipop SVG(Scalable Vector Graphics)コンセプトをサポートしました。これは、すべての解像度PNG(特定の描画可能リソースに画像を配置する)またはSVG (圧縮率の高い小さなファイルサイズ、明瞭さを失わずに任意のサイズにスケーリングします(非常に小さなサイズを除く))。
Lollipop(API 21)はSVGをサポートしていません。 VectorDrawable クラスを介してSVGパス描画機能のサブセットをサポートします。このクラスは現在appcompatではサポートされていないため、API 21でのみ使用可能です。
古いプラットフォームには引き続きPNG画像が必要なので、理想的なワークフローは、さまざまなDPIバケット用にPNGにエクスポートし、 svg2Android 。
Android Support Library 23.2以降。SupportLibraryのVectorDrawableCompatクラスを使用すると、Android 2.1(APIレベル7)以降でVectorDrawableをサポートできます。このため、サポートライブラリの下位互換性で説明されているように、Vector Asset Studioを実行する前にbuild.gradleファイルを変更する必要があります。
//For Gradle Plugin 2.0+
Android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
//For Gradle Plugin 1.5 or below
Android {
defaultConfig {
// Stops the Gradle plugin’s automatic rasterization of vectors
generatedDensities = []
}
// Flag notifies aapt to keep the attribute IDs around
aaptOptions {
additionalParameters "--no-version-vectors"
}
}
Androidバージョン5.0(APIレベル21)より前のバージョンで実行されているデバイスでVector DrawableおよびAnimated Vector Drawableをサポートするために、VectorDrawableCompatおよびAnimatedVectorDrawableCompatは2つの新しいサポートライブラリを介して利用可能です:support-vector-drawableそれぞれアニメーション化されたベクトル描画可能。
Android Studio 1.4では、ビルド時にPNGファイルを生成することにより、ベクトルドロウアブルの限定的な互換性サポートが導入されました。ただし、ベクトル描画可能およびアニメーション化されたベクトル描画可能サポートライブラリは、柔軟性と幅広い互換性の両方を提供します。サポートライブラリであるため、AndroidプラットフォームバージョンAndroid 2.1(APIレベル7以降):ベクターサポートライブラリを使用するようにアプリを構成するには、appDrawモジュールのbuild.gradleファイルにvectorDrawables要素を追加します。
Lollipopは、サードパーティのライブラリがないとSVGファイルを処理できません。
私が見つけた最良の解決策は、 BetterVectorDrawable libと SVG to VectorDrawable Converter です。
BetterVectorDrawableは、Android 4.0+ for Android 5.0+。
SVG to VectorDrawable Converterは、SVG画像からAndroid VectorDrawable XMLリソースファイルへのバッチコンバーターです。 オンラインバージョン
リンクは、libとコンバーターの使用方法に関する十分な情報を提供するreadmeを指します。