Android StudioのVector Assetsを使用してアイコンを追加してImageViewを作成すると、app:srcCompat="@drawable/ic_play"
行にエラーが表示されます。
app:srcCompat
をAndroid:src
に変更すると、エラーはなくなりますが、アイコンはピクセル化されたように見えます。
主な違いは何ですか
app:srcCompat="@drawable/ic_play"
そして
Android:src="@drawable/ic_play"
あなたのアプリにベクトルドロアブルを統合する最も確実な方法です。ベクトルドロアブルはあなたが複数を置き換えることができますXMLで定義された単一のベクトルグラフィックを持つ資産をpngします。以前はLollipop以上のデバイスに限定されていましたが
注
Androidサポートライブラリ23.3.0、 )サポートベクタドロアブルはapp:srcCompat
でしかロードできません。
build.gradle
ファイルにvectorDrawables.useSupportLibrary = trueを追加する必要があります
// Gradle Plugin 2.0+
Android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
このImageViewのコンテンツとして描画可能オブジェクトを設定します。元のサイズで表示されます。自動スケーリングはありません。
Build.gradleファイルでAndroid:src="@drawable/some_vector"
なしでvectorDrawables.useSupportLibrary = true
を使用していて、アプリにベクター画像(ベクター描画可能)がある場合は、apkファイルのAndroid gradleプラグインを構築中描画可能な各ベクターから、さまざまな画面(hdpi、xhdpi ...)用の* .pngファイルを多数生成します(API = <19の場合のみ)。結果 - apkの大きいサイズ。
app:srcCompat="@drawable/some_vector"
をvectorDrawables.useSupportLibrary = true
と共に使用する場合、Androidは*.png
ファイルを生成せずにベクトル描画可能ファイルを使用します。
これはAndroid Studioのapkアナライザツールで確認できます。 vectorDrawables.useSupportLibrary = true
の有無にかかわらずapkを構築するだけです。
これが主な違いだと思います。
使用:
app:srcCompat="@drawable/backImage"
srcCompat属性は、実際にはAppCompatライブラリ内で定義されています。重要:これには適切なネームスペースを追加する必要があります。
xmlns:app="http://schemas.Android.com/apk/res-auto"
注
あなたが得ているのは、無視することができるほんのちょっとしたエラーのようです。私は試してみて同じエラーを得ましたが、それは正しく機能しています。
一時的にこのエラーが発生しないようにするためにtools:ignore="MissingPrefix"
を使用できます。
これが役に立つことを願っています。
ベクトルとアニメーションベクトルはフレームワークの最近のバージョンでのみサポートされていました。 srcCompatを互換性ライブラリと共に使用して機能させることはできますが、これはサポートライブラリの特定のビューでのみ機能します。 app:がAndroid:の代わりに使用されていることに注意してください。これはフレームワークの一部ではなく、アプリによって定義されたパラメータを意味します。
AppCompat
をImageView
(またはImageButton
やFloatingActionButton
などのサブクラス)と共に使用する場合、新しいバージョンのapp:srcCompat
属性を使用して、古いバージョンのプラットフォーム上のベクトルドロアブル(およびその他のドロアブル)を参照できます。 Android:src
)で利用可能です。
Android.support.v7.appcompat.R.attr.srcCompat :
srcCompat
このImageViewのコンテンツとしてドロウアブルを設定します。古いバージョンのプラットフォームで実行しているときは、ベクトルdrawableを使用できます。
"@[+][package:]type/name"
形式の別のリソースへの参照、または"?[package:]type/name"
形式のテーマ属性です。
xmlns:app="http://schemas.Android.com/apk/res-auto"
を使用するときにapp:srcCompat
を挿入することを忘れないでください。
app:srcCompat="some_resource"
サポートライブラリに入っているのはAppCompatActivity srcであることを参考にしながら
Android:src="some_resource"
単純な活動を指します。
AppCompat
をImageView
(またはImageButton
やFloatingActionButton
などのサブクラス)と一緒に使用する場合は、新しいapp:srcCompat
属性を使用してベクトルドロアブル(およびAndroid:src
で使用可能なその他のドロアブル)を参照できます。また、実行時にdrawableを変更している場合は、以前と同じsetImageResource()
メソッドを使用できます(変更はありません)。
AppCompat
とapp:srcCompat
を使用するのは、ベクトルドロアブルをアプリに統合するための最も確実な方法です。 app:srcCompat
の外側で直接ベクトルドロアブルを参照すると、Lollipopの前に失敗することがわかります。
Android 5.0(APIレベル21)以降では、ベクトルドロアブルをサポートしているため、旧バージョンのアプリでベクトルドロアブルをサポートすることができます。srcCompatが追加されました。