1.설명
- 안드로이드 앱에서 환경설정은 필수요소이다
- 사용자가 구성 가능한 설정을 애플리케이션에 통합할 때 권장하는 방법은 AndroidX Preference 라이브러리를 사용하는 것이다.
- 이 라이브러리는 사용자 인터페이스를 관리하고 스토리지와 상호작용하여 사용자가 구성할 수 있는 개별 설정만 정의한다.
- 앱의 환경설정을 위해서는 액티비티에서 설정화면을 구성하고, 그 화면에서 발생하는 다양한 사용자 이벤트를 처리하여 설정한 데이터를 영속적으로 저장해야 한다. PreferenceFragment클래스 사용하면 위와 같은 부분을 쉽게 처리 할 수 있다.
<설명 정리>
(1단계).환경설정 화면 레이아웃 XML을 만든다.
(2단계).PreferenceFragment를 이용하여 환경설정 화면에서 발생하는 이벤트 처리 로직이 들어간다.
(3단계).환경설정 용 액티비티를 하나 만들고 레이아웃을 fragment로 바꾼다.
이제 이거 토대로 코딩 ㄱㄱㄱ
(1단계)
2.res->values-> arrays.xml 파일 만들기 (환경설정에서 사용할 문자열 배열 데이터를 저장한다)
3.res 폴더 하위에 xml 폴더를 만든다. -> 해당 폴더에 settings_preference.xml 파일을 만든다. settings_preference.xml 파일은 안드로이드 앱의 환결설정 화면의 레이아웃을 표현한다.
3-1. settings_preference.xml 파일 만든 후, 첫 상태
(루트태그로 PreferenceScreen을 갖는다)
-참고-
PreferenceScreen태그에 사용되는 태그
3-2. settings_preference.xml에 코드 입력
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="메시지 알림">
<SwitchPreference
android:key="message"
android:title="메시지 알림"/>
<PreferenceScreen
android:key="keyword_screen"
android:title="키워드 알림"
android:summary="사용안함">
<SwitchPreference
android:defaultValue="false"
android:key="keyword"
android:summary="등록된 키워드가 포함된 메시지는 채팅방 알림이 꺼져 있어도 푸시 알림을 받게 되어 키워드는 강조되어 보여 집니다."
android:title="키워드 알림"/>
<ListPreference
android:entries="@array/array_voice"
android:entryValues="@array/array_voice"
android:key="keyword_sound_list"
android:summary="카톡"
android:title="키워드 전용 알림음"
android:dependency="keyword"/>
</PreferenceScreen>
<SwitchPreference
android:key="sound"
android:title="소리"/>
<ListPreference
android:entries="@array/array_voice"
android:entryValues="@array/array_voice"
android:key="sound_list"
android:summary="카톡"
android:title="알림음음"/>
</PreferenceCategory>
</PreferenceScreen>
설명->
ListPreference를 보면 entries와 entryValues 속성값이 존재한다.
이 속성값은 배열 리소스로 등록해야 하기 때문에, 앞서 arrays.xml 파일을 만든 것이다.
3-3. settings_preference.xml 화면구성
(2단계)
4.환경설정 처리 로직 (java코드)
- PreferenceFragment를 extends 한다.
- SettingPreferenceFragment.java는 앞서 만든 settings_preference.xml와 연결되어 만들어둔 환경설정 화면과 그 이벤트 처리등을 담당하게 된다.
- onCreate부분에서는 이미 저장된 환경설정 내용을 가져와, 그 내용들을 환경설정의 summary부분에 셋팅해준다.
- 그리고 prefs.registerOnSharedPreferenceChangeListener(prefListener); 로 연결된 리스너 SharedPreferences.OnSharedPreferenceChangeListener()를 통해서 사용자가 환경설정 하는 순간의 이벤트 처리를 한다.
(3단계)
5.이번 3단계에서는 이미 만들어진 환경설정 내용을 화면에 보여주기위해 액티비티에 연결하는 부분이다. 간단하므로 SettingActivity 액티비티와 그 레이아웃 activity_setting.xml의 소스로 설명을 대신한다.
-SettingActivity.java-
-activity_setting.xml-
설명->
activity_setting.xml는 일반적인 액티비티의 레이아웃이 아니라 fragment라는 태그를 사용한다.
-결과-
자동으로 설정된 값들을 영속적으로 저장하고 있기때문에, 앱을 종료후 다시 접속해도 그 환경설정 데이터가 지워지지 않고 유지된다.
'■ Android > Tip' 카테고리의 다른 글
[Android] 현재 디바이스의 너비/높이 얻어오기 (0) | 2020.01.24 |
---|---|
[Android] 현재 사용 할 수 있는 외부라이브러리 확인 방법 + 추가 방법 (0) | 2020.01.24 |
[Android] SwipeRefreshLayout(스와이프하여 새로고침) (0) | 2020.01.23 |
[Android] 전체 화면 모드 사용 설정 (0) | 2020.01.22 |
[Android] 탐색 메뉴(맨밑 버튼) - 숨기기 (0) | 2020.01.22 |