2017-03-25 11 views
0

app:srcCompatstackoverflowで、この属性の主な目的はベクトル描画可能なものであることを他のリソースから読みました。しかし、android:srcもベクトル描画可能でうまく動作していると混乱します。まだアンドロイドの間に違いはありますか?src vs app:srcCompat?

<vector xmlns:android="http://schemas.android.com/apk/res/android" 
    android:width="24dp" 
    android:height="24dp" 
    android:viewportWidth="24.0" 
    android:viewportHeight="24.0"> 
    <path 
     android:fillColor="#FF000000" 
     android:pathData="M10.18,9"/> 
    <path 
     android:fillColor="#FF000000" 
     android:pathData="M21,16v-2l-8,-5V3.5c0,-0.83 -0.67,-1.5 -1.5,-1.5S10,2.67 10,3.5V9l-8,5v2l8,-2.5V19l-2,1.5V22l3.5,-1 3.5,1v-1.5L13,19v-5.5l8,2.5z"/> 
</vector> 

私はその後、私はそれが正常に動作しているandroid:src

<ImageView 
     android:id="@+id/imageView" 
     android:layout_width="300dp" 
     android:layout_height="300dp" 
     android:src="@drawable/abc" /> 

でそれを使用し、描画可能ディレクトリ内abc.xmlファイルに上記のコードを保存しました。次に、app:srcCompatは役に立ちますか、それとも違いがありますか?それとも間違っているのですか?

+0

あなたの 'minSdkVersion'と' targetSdkVersion'とは何ですか?あなたのテストデバイスやエミュレータにAndroidのどのバージョンがありますか? –

+0

エミュレータのアンドロイドバージョンは7.0です – UnKnown

+0

これは違いが表示されない理由です。 Nougatでベクターのドロアブルが導入されました。 –

答えて

3

はい、違いがあります。それについての記事hereがあります。 基本的にapp:srcCompatは、ベクトルドロアブルをロードする際に古いAPIで動作します。 app:srcCompat以外のベクトル描画可能なものを直接参照することは、Lollipopより前に失敗することになります。おそらくLollipop以上でandroid:srcを実行している可能性があります。

+0

すごく感謝しています。私の他の質問に答えることができますか? http://stackoverflow.com/q/43014279/2769917私は本当にアンドロイドの目的を見つけるのに苦労している:ems。 – UnKnown

関連する問題