2017-12-22 1 views
0

저는 최근 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)의 안드로이드 에뮬레이터의 스크린 샷은 다음과 같습니다 enter image description here

+0

하위 호환성은 라이브러리를 통해 추가됩니다. 그리고 그것은 하위 호환성을 어느 정도 생성하는지에 달려 있습니다. – Zoe

+0

@Zoe 여러분의 의견이 제 질문에 답하지 않은 동안 또 다른 재미있는 질문이 생겼습니다 : 이전 버전과의 호환성을 지원하기 위해 다른 라이브러리가 필요한 이유는 무엇입니까? 높은 수준의 API에 이미 낮은 수준의 API의 모든 기능이 포함되어 있지 않습니까? – carawan

+0

appcompat (/ 지원 라이브러리)가 라이브러리입니다. API 버전에 따라 새로운 API와 이전 API를 호출합니다. 이것이 작동하는 방식입니다. 그리고 물질적 인 디자인을 위해서는 더 복잡합니다. (그 방법이 어떻게 작동하는지 완전히 알지 못합니다) – Zoe

답변

0

을 다행히, 내 동료 중 하나에 이야기 그는 내 질문에 대답했다. 다음은 짧은 대화 기록입니다.

동료 : 내 테마는 앱의 모양과 느낌에 영향을줍니다. 따라서 API 19 기기에서 앱을로드하는 경우 앱이 계속 작동하지만 제대로 표시되지 않을 것으로 예상됩니다.

나 : 고맙습니다. Android 호환성을 더 잘 이해할 수 있도록 지원 라이브러리를 사용하지 않았습니다. 답변에 따라 기술적으로 내 애플리케이션은 API 10에서도 제대로 작동 할 것입니다. 맞습니까? (그러나 제대로 렌더링되지.)

내 동료 다음 https://developer.android.com/training/material/theme.html 말한다 동안 네,이

그래서, "재료 테마는 안드로이드 5.0 (API 레벨 21) 및에서만 사용할 수 있습니다. "앱이 중요한 주제를 사용한다면 21 이하의 API 수준에서는 작동하지 않고 중단됩니다"라고 해석해서는 안됩니다. "21 아래의 API 수준에서 올바르게 렌더링되지는 않지만 올바르게 작동 할 수 있습니다."로 해석되어야합니다.

관련 문제