web-dev-qa-db-ja.com

Androidでベクター画像を使用する実際のデバイスに問題があります。 SVG-android

私が使う svg-Android.jarからhttps://github.com/pents90/svg-Android正常に機能しますが、Eclipseのエミュレーターデバイスでのみ機能します。 Agrrrr。実際のデバイスでは、画面上でimageViewが空になります。これが私のコードです:

SVG svg = SVGParser.getSVGFromResource(getResources(), R.raw.test);
Drawable drawable = svg.createPictureDrawable();
imgView.setImageDrawable(drawable);

なにか提案を?

26
Ivan Podhornyi

ハードウェアレンダリングがデフォルトでオンになっている新しいデバイスでは、ソフトウェアレンダリングを明示的にオンにする必要があります。

imgView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

これはおそらくあなたの問題だと思います。

46
Paul LeBeau

以下のコードのようにxmlでImageViewの代わりにAppCompatImageViewを使用します

<Android.support.v7.widget.AppCompatImageView
    Android:tint="#d74313"
    app:srcCompat="@drawable/circle_icon"
    Android:layout_width="30sp"
    Android:layout_height="30sp" />

あなたのbuild.gradleで

Android {
  defaultConfig {
    vectorDrawables {
      useSupportLibrary = true
    }
  }
}

上記がうまくいかない場合は、アプリケーションクラスでもこれを試してください

public class App extends Application {

  @Override public void onCreate() {
    super.onCreate();
    // Make sure we use vector drawables
    AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
  }
}
1
emilpmp