Android 앱에 어두운 테마를 포함시키는 방법

개발자에게는 Android 앱을 만드는 것이 쉬운 과정입니다. 매력적인 UI를 디자인하는 것은 실제로 어려운 일입니다. 그렇기 때문에 간단하지만 매력적인 UI를 만드는 데 영감이 필요한 개발자를 위해 "흡입되지 않는 Android 앱 UI를 디자인하는 방법"가이드를 작성했습니다. 이 가이드에서는 앱에 어두운 / 야간 모드 테마를 추가하는 것에 대해 간략하게 언급했으며이 가이드에서는이를 안내합니다.

어두운 밤 모드 테마를 앱에 추가하는 것은 사용자에게 훌륭한 옵션이 될 수 있습니다. 배터리 수명을 절약하고 밤에는 눈이 훨씬 더 쉽습니다. 검은 색 텍스트의 흰색 배경 또는 UI의 '밝은'색상 조합은 특히 밤에 눈에 스트레스를줍니다. 따라서 밝은 텍스트가있는 어두운 배경은 스트레스를 덜 받고 눈에 해 롭기 때문에 YouTube와 Reddit은 어두운 테마를 포함하여 많은 인기있는 앱이 시작된 이유입니다 (Facebook은 아직 유망한 후에도 Facebook을 게시하지 않았음에도 불구하고) 할 수있다.

Android 앱에 전환 가능한 어두운 모드를 쉽게 추가하려면이 Appuals 안내서를 따르고 문제가 발생하면 의견을 말하십시오!

XML 속성 만들기

먼저 테마를 처리 할 XML 속성 파일을 작성해야합니다. 안드로이드 가이 XML을 통해 속성의 색상을 기본적으로 변경할 수 있기 때문에 APK에 두 가지 다른 테마의 두 가지 리소스 세트를 포함시켜 APK 크기를 부 풀리는 것보다 훨씬 낫습니다.

따라서 앱의 'resources'폴더에서 attrs.xml 이라는 파일을 만들고 다음 행을 추가하십시오 ( 이것은 스타일 지정 가능한 속성입니다).

Lollipop 이전에는 드로어 블의 속성을 지정할 수 없었기 때문에 드로어 블의 리소스 ID를 지정해야했지만 더 이상 그렇지 않습니다.

스타일 추가

이 작업을 수행하려면 동일한 기준을 공유 할 두 개의 별도 스타일을 만들어야합니다. 첫 번째는 분명히 기본 '빛'테마이고 두 번째는 '어두운'테마입니다.

 # F4F4F6 # 96F4F4F6 #FFFF # F2F2F3 @ drawable / i_light_plholder # 33343B / item> # 8033343B # 28292e # F2F2F3 @ drawable / i_dark_pholder 

주어진 활동에 대한 실제 스타일은 다음과 같습니다.

 # F4F4F6 # 33343B 

이러한 활동 중 하나를 앱 활동의 매니페스트 (이 경우 FeedActivity)로 지정해야합니다.

뷰 양식화

다음은보기 스타일을 지정하는 예입니다.이 예에서는 "페이지를 찾을 수 없음"리디렉션 오류에 대한 것입니다.

동적 테마 전환을 활성화하는 방법

동적 테마 전환을 활성화하는 가장 효율적인 방법은 Singleton 패턴을 사용하여 설정을 Application 인스턴스에 저장하는 데 사용되는 SharedPreference 값을로드하는 것입니다. 즉, 각 활동이 시작될 때 설정을 수행 할 필요가 없습니다.

 공개 클래스 응용 프로그램 확장 응용 프로그램 {public static final String TAG = "App"; 개인 부울 isNightModeEnabled = false; @Override public void onCreate () {super.onCreate (); // 야간 모드 상태를 여기에로드합니다. SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences (this); this.isNightModeEnabled = mPrefs.getBoolean (“NIGHT_MODE”, false); } 공개 부울 isNightModeEnabled () {return isNightModeEnabled; } public void setIsNightModeEnabled (boolean isNightModeEnabled) {this.isNightModeEnabled = isNightModeEnabled; }} 

이 인스턴스는 다른 것보다 먼저 시작되므로 앱을 연 후에는 앱에 속한 모든 활동에서 언제든지 isNightModeEnabled () 부울을 호출 할 수 있습니다.

 공개 최종 클래스 FeedActivity 확장 AppCompatActivity {개인 최종 정적 문자열 TAG = "FeedActivity"; @Override protected void onCreate (Bundle savedInstanceState) {if (MyApplication.getInstance (). isNightModeEnabled ()) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

그러나 매니페스트 파일에 지정된 것과 다른 테마를 적용하려면 부모 onCreate () 메서드를 호출 하기 전에 수행해야합니다 .

AppCompat를 사용하여 상태 설정

AppCompat은 다양한 분야에 실제로 유용하며, 이 경우 모드 상태를 설정하는 데 사용할 것입니다. 즉, 더 이상 앱 인스턴스를 사용하여 캐시 된 상태를 만들 필요가 없으므로 앱 캐시 부풀림을 줄일 수 있습니다 ( 매우 작은 마진 ).

 AppCompatDelegate .setDefaultNightMode (AppCompatDelegate.MODE_NIGHT_YES); 

다음 중 하나를 사용할 수 있습니다.

  • AppCompatDelegate.MODE_NIGHT_YES

    AppCompatDelegate.MODE_NIGHT_NO

    AppCompatDelegate.MODE_NIGHT_AUTO

주 검색

 AppCompatDelegate.getDefaultNightMode (); 공개 최종 클래스 FeedActivity 확장 AppCompatActivity {개인 최종 정적 문자열 TAG = "FeedActivity"; @Override protected void onCreate (Bundle savedInstanceState) {if (AppCompatDelegate.getDefaultNightMode () == AppCompatDelegate.MODE_NIGHT_YES) {setTheme (R.style.FeedActivityThemeDark); } super.onCreate (savedInstanceState); setContentView (R.layout.activity_feed); }} 

그래야합니다. 원하는대로 값을 계속 커스터마이징하고 조정할 수 있지만이 가이드는 Android 앱에 기본 어두운 테마를 포함시키는 데 도움이되는 훌륭한 소개입니다.

재미있는 기사