[android] Android의 레이아웃 XML에서 app : srcCompat와 android : src의 차이점
Android Studio의 Vector Assets를 사용하여 아이콘이 추가 된 ImageView를 만들 때마다 줄에 오류가 발생합니다 app:srcCompat="@drawable/ic_play"
나는 변경하는 경우 app:srcCompat
에 android:src
오류가 사라이지만 아이콘 모양은 픽셀 화.
주요 차이점은 무엇입니까
app:srcCompat="@drawable/ic_play"
과
android:src="@drawable/ic_play"
답변
벡터 드로어 블 을 앱 에 통합하는 가장 방대한 방법입니다. 벡터 드로어 블을 사용하면 여러 png 자산을 XML로 정의 된 단일 벡터 그래픽으로 바꿀 수 있습니다. 이전에는 Lollipop 이상 기기로 제한되었지만
노트
현재 안드로이드 지원 라이브러리 23.3.0 , 지원 벡터 드로어 블을 통해서만로드 할 수 있습니다 app:srcCompat
.
파일에 vectorDrawables.useSupportLibrary = true 를 추가 해야 build.gradle
합니다.
// Gradle Plugin 2.0+
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}
드로어 블을이 ImageView의 내용으로 설정합니다. 원본 크기로 표시됩니다. 자동 스케일링이 없습니다.
답변
build.gradle 파일에서 사용 android:src="@drawable/some_vector"
하지 않고 vectorDrawables.useSupportLibrary = true
앱에 벡터 이미지 (벡터 드로어 블)가있는 경우 apk 파일 을 빌드하는 동안 Android gradle plugin은 다른 화면 (hdpi, xhdpi …)에서 많은 * .png 파일을 생성합니다. 각각의 벡터 드로어 블 (API = <19에만 해당). 결과는 apk의 더 큰 크기입니다 .
안드로이드 app:srcCompat="@drawable/some_vector"
와 함께 사용할 때 vectorDrawables.useSupportLibrary = true
파일을 생성하지 않고 벡터 드로어 블 파일을 사용 *.png
합니다.
Android Studio APK 분석 도구를 사용하여이를 확인할 수 있습니다. 의 유무에 관계없이 APK를 빌드하십시오 vectorDrawables.useSupportLibrary = true
.
이것이 가장 큰 차이점이라고 생각합니다.
답변
사용하다:
app:srcCompat="@drawable/backImage"
srcCompat 속성은 실제로 AppCompat 라이브러리 내에 정의되어 있습니다. 중요 :이를 위해 적절한 네임 스페이스를 추가해야합니다.
xmlns:app="http://schemas.android.com/apk/res-auto"
노트
당신이 얻는 것은 무시할 수있는 린트 오류 일 것 같습니다. 나는 같은 오류를 시도하고 얻었지만 올바르게 작동합니다.
tools:ignore="MissingPrefix"
일시적으로이 오류가 표시되지 않도록 하는 데 사용할 수 있습니다 .
이게 도움이 되길 바란다.
답변
사용하는 경우 AppCompat
에 ImageView
(예 또는 서브 클래스 ImageButton
와 FloatingActionButton
), 새 사용할 수 있습니다 app:srcCompat
플랫폼의 이전 버전에 참조 벡터 드로어 블에 속성을 (뿐만 아니라 사용할 수있는 다른 당김 android:src
) .
android.support.v7.appcompat.R.attr.srcCompat :
srcCompat
드로어 블을이 ImageView의 내용으로 설정합니다. 이전 버전의 플랫폼에서 실행할 때 벡터 드로어 블을 사용할 수 있습니다.
양식
"@[+][package:]type/name"
또는 양식 의 테마 속성에서 다른 자원에 대한 참조 일 수 있습니다"?[package:]type/name"
.
xmlns:app="http://schemas.android.com/apk/res-auto"
사용할 때 추가하는 것을 잊지 마십시오 app:srcCompat
.
답변
벡터 및 애니메이션 벡터는 최신 버전의 프레임 워크에서만 지원되었습니다. 호환성 라이브러리와 함께 srcCompat를 사용하여 작동시킬 수 있지만 지원 라이브러리의 특정보기에서만 작동합니다. android : 대신 app :이 사용됩니다. 이는 프레임 워크의 일부가 아니라 앱에서 정의한 매개 변수를 의미합니다.
답변
app:srcCompat="some_resource"
지원 라이브러리에있는 AppCompatActivity src임을 나타냅니다.
android:src="some_resource"
간단한 활동을 말합니다.
답변
사용하는 경우 AppCompat
에 ImageView
(예 또는 서브 클래스 ImageButton
와 FloatingActionButton
), 새 사용할 수 있습니다 app:srcCompat
참조 벡터 드로어 블에 속성을 (뿐만 아니라 사용할 수있는 다른 당김 android:src
). 런타임에 드로어 블을 변경하는 경우 setImageResource()
이전 과 동일한 방법 을 사용할 수 있습니다 (변경 사항 없음).
사용 AppCompat
및 app:srcCompat
벡터 드로어 블을 앱에 통합하는 가장 확실한 방법입니다. Lollipopapp:srcCompat
이전 에는 벡터 드로어 블을 직접 참조하는 것이 실패 한다는 것을 알 수 있습니다 .