안드로이드 스튜디오 앱 개발 프로젝트를 진행하면서 다크모드는 생각도 못하고 있었는데

다크모드를 적용하고 앱을 실행하면 레이아웃의 많은 부분이 원치 않게 깨지는 현상을 발견했다.

 

res - values - themes 폴더에 일반/다크모드 전용 themes.xml 파일이 있어서

원하는 사람은 themes.xml (night) 파일을 수정하여 다크모드에 맞게 따로 디자인을 적용해도 좋을 것 같으나

나는 다크모드를 지원하지 않는 방법을 찾아보았다.

 

 

앱을 실행할 때 가장 먼저 실행되는 액티비티인 로딩 화면(스플래시 화면) java 파일 onCreate 메소드에

다음과 같이 코드를 작성했다.

public class ActivitySplash extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); //다크모드 지원 X
	//생략
    }
}

 

이렇게 작성하면 AppCompatActivity를 상속한 클래스는 다크모드를 킨 상태로 앱을 이용하더라도

다크모드 테마가 아닌 기본 테마가 적용이 된다.

 

하지만 일부 페이지는 위의 코드를 작성해도 다크모드가 적용되는 것을 발견했는데

AppCompatActivity가 아닌 Activity를 상속한 클래스들이었다.

따라서 해당 클래스들을 모두 AppCompatAcitivty를 상속하도록 수정했다.

 

이로써 다크모드 적용으로 인해 앱의 디자인이 원치 않게 깨지는 현상을 막을 수 있었다!

+ Recent posts