저는 최근 Android 프로그래밍 학습을 시작했습니다. 안드로이드가 안드로이드 API 21부터 Material Theme를 지원한다는 것을 알게되었습니다.API 레벨 19에서 중요한 테마가 중단되지 않는 이유는 무엇입니까?
어제, 저는 하나의 활동으로 작은 테스트 어플리케이션을 만들었습니다. 활동은 활동 클래스를 확장합니다. 최소 SDK는 19이고 대상 SDK는 27이고 컴파일 SDK는 27입니다.
이제 테마를 Material.Dialog로 변경하고 Android 27 장치에서 응용 프로그램을 실행합니다. 예상대로 완벽하게 작동했습니다.
하지만 Android 19 기기에서 실행하려고 시도했지만 실행되지 않을 것으로 예상했습니다. 그러나 그것은 오류없이 달렸다. 물론 Material.Dialog 테마를 제대로 렌더링하지 못했습니다. 그것은 일반 어두운 테마처럼 그것을 렌더링합니다. 응용 프로그램이 완벽하게 작동했습니다.
놀랐습니다. 21 세 미만의 API에서 Material Theme을 사용하는 응용 프로그램이 작동하지 않는 이유는 무엇입니까? API 레벨 21이 중요한 주제가 아닌가?
또한 Android는 이전 버전과 호환됩니다 (이전 API 용으로 설계된 프로그램은 최신 API에서 실행할 수 있음). 또한 앞으로 호환됩니까?
build.gradle 종속성 섹션
은 다음과 같습니다 이dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
API (19)의 안드로이드 에뮬레이터의 스크린 샷은 다음과 같습니다
하위 호환성은 라이브러리를 통해 추가됩니다. 그리고 그것은 하위 호환성을 어느 정도 생성하는지에 달려 있습니다. – Zoe
@Zoe 여러분의 의견이 제 질문에 답하지 않은 동안 또 다른 재미있는 질문이 생겼습니다 : 이전 버전과의 호환성을 지원하기 위해 다른 라이브러리가 필요한 이유는 무엇입니까? 높은 수준의 API에 이미 낮은 수준의 API의 모든 기능이 포함되어 있지 않습니까? – carawan
appcompat (/ 지원 라이브러리)가 라이브러리입니다. API 버전에 따라 새로운 API와 이전 API를 호출합니다. 이것이 작동하는 방식입니다. 그리고 물질적 인 디자인을 위해서는 더 복잡합니다. (그 방법이 어떻게 작동하는지 완전히 알지 못합니다) – Zoe