6

VectorDrawableCompat最終的に SDK 23 のサポート ライブラリに組み込まれました。

drawable/mypic.xml:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="64dp"
android:width="64dp"
android:viewportHeight="600"
android:viewportWidth="600" >
<group
    android:name="rotationGroup"
    android:pivotX="300.0"
    android:pivotY="300.0"
    android:rotation="45.0" >
    <path
        android:name="v"
        android:fillColor="#000000"
        android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" />
</group>
</vector>

fragment_bla.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/mypic"
    android:scaleType="centerCrop" />

</FrameLayout>

このコードは Lollipop では機能しますが、KitKat では機能しません。私は何が欠けていますか?


例外:

09-06 14:26:53.637  31820-31820/com.bla E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.bla, PID: 31560
android.view.InflateException: Binary XML file line #7: Error inflating class android.widget.ImageView
        at android.view.LayoutInflater.createView(LayoutInflater.java:623)
        at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
        at android.view.LayoutInflater.onCreateView(LayoutInflater.java:672)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:758)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:400)
        at com.hohero.fragment.Intro1Fragment.onCreateView(Intro1Fragment.java:14)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
4

2 に答える 2

2

さて、私はコードを読んで、それが機能するようになりました。いくつかの注意事項があります。

  1. xml ファイルは raw ディレクトリにある必要があり、描画可能ではありません
  2. xml は非常に単純でなければなりません。単一の <path> 要素をサポートしているようです

私にとっては、常に赤い背景があり、スケーリングが正しく機能していないようです。Studio Collection の Vector Asset Action -> (lock) を使用しました。

    final Drawable drawable = VectorDrawableCompat.createFromResource(getResources(), R.raw.ic_lock_outline_24dp);
    imageView.setImageDrawable(drawable);

それは良いスタートであり、遊ぶのが楽しいものです!

不明なブランチの Google ソースへのリンク: https://android.googlesource.com/platform/frameworks/support/+/d573775216408a88e796cd74abf8ab018488c2a3/v7/vectordrawable/src/android/support/v7/graphics/drawable

于 2015-12-06T01:04:57.740 に答える