web-dev-qa-db-ja.com

SVG対PNG Android

これは、Androidで画像を処理する最良の方法です。最近Android Lollipop SVG(Scalable Vector Graphics)コンセプトをサポートしました。これは、すべての解像度PNG(特定の描画可能リソースに画像を配置する)またはSVG (圧縮率の高い小さなファイルサイズ、明瞭さを失わずに任意のサイズにスケーリングします(非常に小さなサイズを除く))。

Lollipop(API 21)はSVGをサポートしていません。 VectorDrawable クラスを介してSVGパス描画機能のサブセットをサポートします。このクラスは現在appcompatではサポートされていないため、API 21でのみ使用可能です。

古いプラットフォームには引き続きPNG画像が必要なので、理想的なワークフローは、さまざまなDPIバケット用にPNGにエクスポートし、 svg2Android

22
alanv

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要素を追加します。

3
Abhishek Joshi

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を指します。

2
A-student