처음에 안드로이드 UI 관련 세팅을 해둘때 헤맸던 기억이 나, 누군가에게 도움이 되길 바라며 글을 남겨본다.
우선 colors 파일을 하나 더 생성해주어야된다.
기본으로 들어가있는 파일에 values > colors.xml 이 이미 생성 되어 있는 것을 확인할 수 있다. theme에 (night) 파일이 하나 더 생겨 있는 것을 볼 수 있다. 이렇게 colors.xml (night)를 만들어보자.
values에 새 파일을 생성해준다.
파일 이름은 똑같이 colors 라고 세팅 해준다.
Directory name을 values-night로 설정해준다. (한정자를 설정해주는 것이다.)
이렇게 colors 파일이 생성 된 것을 확인할 수 있다.
다크모드 말고도 더 많은 경우에 Directory name 변경으로 기능을 제공해줄 수 있다. 대표적으로 api 버전에 따라 다르게 설정하는등,,?
https://developer.android.com/guide/topics/resources/providing-resources
위에 공식문서를 참고해보면 대체 리소스 한정자를 어떻게 사용할지 알 수 있다.
대체 리소스 한정자 설정에는 규칙들이 있다. 이를 유념해서 사용해야된다. 아래는 위 링크에서 발췌한 부분이다.
한 가지 리소스 세트에 여러 개의 한정자를 사용할 수 있으며, 대시로 구분하면 됩니다. 예를 들어 drawable-en-rUS-land는 가로 방향의 US-English 기기에 적용합니다.
한정자는 표 2 에 나열된 순서를 따라야 합니다. 예를 들면 다음과 같습니다.
잘못된 배열: drawable-hdpi-port/
맞는 배열: drawable-port-hdpi/
대체 리소스 디렉토리는 중첩될 수 없습니다. 예를 들어 res/drawable/drawable-en/는 있을 수 없습니다.
값은 대소문자를 구분하지 않습니다. 리소스 컴파일러가 처리 전에 디렉토리 이름을 소문자로 바꿔 대소문자를 구분하지 않는 파일 시스템에서 문제를 일으키지 않도록 방지합니다. 이름에 대문자가 있는 것은 오로지 가독성을 향상하기 위해서입니다.
각 한정자 유형에 한 개의 값만 지원됩니다. 예를 들어 스페인과 프랑스에 같은 드로어블 파일을 사용하고자 하는 경우, 디렉토리 이름이 drawable-rES-rFR/이면 안 됩니다. 대신 drawable-rES/와 drawable-rFR/ 같이 적절한 파일이 포함된 두 개의 리소스 디렉토리가 필요합니다. 다만 양쪽 위치에 같은 파일을 실제로 복제할 필요는 없습니다. 그 대신 리소스에 별칭을 만들면 됩니다.