web-dev-qa-db-ja.com

アンドロイドでSVGを使用する最も簡単な方法は?

私はAndroidでsvgを使用するために無数のライブラリを発見しました。そして異なる解像度のイライラする作成と各解像度のためのファイルのドロップを避けます、これはアプリが多くのアイコンや画像を持っているとき非常に厄介になります。

誰もがAndroidでSVGを使用するための最も簡単なライブラリの使用方法を段階的に説明することができます。これは他の多くの人にも役立つでしょう。

また、私は自分のアイコンや画像を生成するためにAndroid StudioとIllustratorを使います。

101
CommonSenseCode

まず、簡単な手順でsvgファイルをインポートする必要があります。

  1. Drawableを右クリック
  2. 新規をクリック
  3. ベクトルアセットを選択

画像があなたのコンピュータで利用可能な場合は、ローカルのsvgファイルを選択します。その後、画像パスを選択し、必要に応じて画像のサイズを変更するオプションもダイアログの右側に表示されます。このようにしてsvg imageがあなたのプロジェクトにインポートされます。その後、この画像を使うために同じ手順を使います。

@drawable/yourimagename
200
Pallavi Jain

更新:しないでくださいこの古い答えを使用してください。これを使用してください。 https://stackoverflow.com/a/39266840/4031815 =

数時間の調査の後、わかりましたsvg-Androidは非常に使いやすいと思いました。

  1. からlibをダウンロードします。 https://code.google.com/p/svg-Android/downloads/list これを書いている時点での最新版は次のとおりです。svg-Android-1.1.jar

  2. Jarをlibディレクトリに入れます。

  3. * .svgファイルをres/drawabledirに保存します(Illustratorでは、[名前を付けて保存]を押してsvgを選択するのと同じくらい簡単です)。

  4. Svgライブラリを使用して、アクティビティ内に次のコードをコーディングします。

    ImageView imageView = (ImageView) findViewById(R.id.imgView);
    SVG svg = SVGParser.getSVGFromResource(getResources(), R.drawable.example);
    //The following is needed because of image accelaration in some devices such as samsung
    imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
    imageView.setImageDrawable(svg.createPictureDrawable());
    



このように定型コードを減らすことができます

非常に簡単過去のコードを含み、定型コードを減らすための単純なクラスを作成しました。

import Android.app.Activity;
import Android.view.View;
import Android.widget.ImageView;

import com.larvalabs.svgandroid.SVG;
import com.larvalabs.svgandroid.SVGParser;

public class SvgImage {

    private static ImageView imageView;
    private Activity activity;
    private SVG svg;
    private int xmlLayoutId;
    private int drawableId;


    public SvgImage(Activity activity, int layoutId, int drawableId) {
        imageView = (ImageView) activity.findViewById(layoutId);
        svg = SVGParser.getSVGFromResource(activity.getResources(), drawableId);
        //Needed because of image accelaration in some devices such as samsung
        imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        imageView.setImageDrawable(svg.createPictureDrawable());
    }
}

今、私は活動の中でこのように呼ぶことができます:

    SvgImage rainSVG = new SvgImage(MainActivity.this, R.id.rainImageView, R.drawable.rain);
    SvgImage thunderSVG = new SvgImage(MainActivity.this, R.id.thunderImageView, R.drawable.thunder);
    SvgImage oceanSVG = new SvgImage(MainActivity.this, R.id.oceanImageView, R.drawable.ocean);
    SvgImage fireSVG = new SvgImage(MainActivity.this, R.id.fireImageView, R.drawable.fire);
    SvgImage windSVG = new SvgImage(MainActivity.this, R.id.windImageView,R.drawable.wind);
    SvgImage universeSVG = new SvgImage(MainActivity.this, R.id.universeImageView,R.drawable.universe);
16
CommonSenseCode

Android Studioは、SVGをサポートしています 1.4以降

これが インポート方法 に関するビデオです。

11
Pradeep Mahdevu

あなたのapkサイズを増やすライブラリを追加するのではなく、 http://inloop.github.io/svg2Android/ を使用してSvgをdrawableに変換することをお勧めします。 gradleにvectorDrawables.useSupportLibrary = trueを追加します。

5
Sanny Nagveker

SVG2VectorDrawableプラグインを試してください。 Preferences - > Plugins - > Browse Pluginsの順に進み、SVG2VectorDrawableをインストールしてください。サグファイルをベクトルドロウアブルに変換するのに最適です。インストールが完了すると、ヘルプ(?)アイコンの右側にあるツールバーセクションにこのアイコンが表示されます。

4
Rahul Thakur
  1. あなたはAndroidプロジェクトで使用するためにXMLにSVGを変換する必要があります。

1.1あなたはこのサイトでこれを行うことができます: http://inloop.github.io/svg2Android/ しかしそれはのようなSVGのすべての機能をサポートしていませんいくつかの勾配.

1.2あなたはAndroid Studio経由で変換することができますが、それは古いデバイスであなたのアプリをクラッシュさせる原因となるAPI 24以上をサポートするだけのいくつかの機能を使うかもしれません。

gradleファイルにvectorDrawables.useSupportLibrary = trueを追加して次のように使用します。

<Android.support.v7.widget.AppCompatImageView
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                app:srcCompat="@drawable/ic_item1" />
  1. これらの機能をサポートするこのライブラリを使用してください https://github.com/MegatronKing/SVG-Androidhttps: //github.com/MegatronKing/SVG-Android/blob/master/support_doc.md

このコードをアプリケーションクラスに追加します。

public void onCreate() {
    SVGLoader.load(this)
}

そしてこのようにSVGを使う:

<ImageView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:src="@drawable/ic_Android_red"/>
1
sajad abbasi