출처 : http://www.androidpub.com/57847
안녕하세요.
대부분의 프로그램이 설정 관련 화면을 만들게 되는데요.
안드로이드에서 이 부분도 거의 정형화가 되어 있어서 기본적으로다 지원하더군요.
"알짜만 골라 배우는 안드로이드 프로그래밍" 책은 이 부분을 잘 설명하고 있는데요.
"프로페셔널 안드로이드 개발"은 그냥 보통의 activity를 만들어서 전부 코딩하는 것으로 알려주더군요.
두 방법다 장점이 있기는 하지만,
일관된 UI 와 작업을 효율성을 위해서는 "알짜..." 의 방법이 좋을 듯합니다.
아래 내용은 설정 화면을 만드는 쉬운 방법입니다.
1. 환경설정 xml 파일 만들기
이클립스의 File - New - Other 에 가면 아래와 같은 창이 나옵니다.
Android XML File을 선택합니다.
빨간색 사각형 한 곳만 알맞은 값으로 넣어 놓고 [Finish] 버튼을 누릅니다.
그럼, setting.xml 파일이 /res/xml 아래에 생성이 됩니다.
2. 화면 구성
/res/xml/setting.xml 파일을 선택하면,
PreferenceScreen 이라는 것이 보이는 데요. 이것을 선택하고, [Add] 버튼을 누르면 아래처럼 추가 가능한 것들이 나옵니다.
이것들이 설정화면에 사용가능한 것들인데요.
이름 그대로 CheckBox, List , Edit 등을 추가할 수 있구요.
Ringtone은 벨소리 종류 선택을 추가 할 수 있답니다.
RreferenceCategory 는 설정의 종류를 그룹 지을 때 사용하구요.
PreferenceScreen은 서브 화면으로 전환해서 사용하는 경우에 사용한답니다.
위 그림처럼 CheckBoxPreference 를 추가하면 오른쪽에 속성값을 넣을 수가 있는데요.
이중에 중요한 것이
Key 인데요, 설정에 저장된 값을 읽어 올때 사용한답니다.
Title 과 Summary 는 화면에 출력되는 값이구요.
ListPreference는 Key, Title, Summary 말고도,
Entries 와 Entry values 를 넣어주어야 하는데요.
리스트이기 때문에 출력할 내용을 배열로 넣어 주어야 합니다.
strings.xml 에 출력할 내용을 가지고 있는 배열을 만듭니다.
1개는 화면 출력용으로, 1개는 실제값을 가진 배열로 만듭니다.
그런 후에 setting.xml 에서 Entries 의 옆의 [Browse...] 버튼을 누르면 , 위 그림처럼 선택할 수 있는 것이 나온답니다.
위 그림처럼 선택해 주시면 됩니다.
이런식으로 화면 작업을 다 하신 후에 java class를 만들어 주시면 됩니다.
3. 환경설정 java class 만들기
이클립스의 File - New - class 를 선택합니다.
SuperClass를 옆의 [Browse...]버튼을 눌러서 선택해 줍니다.
그리고 [Finish]를 눌러서 소스를 생성합니다.
-------------------- 소스 -----------------------------
public class Setting extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
}
}
------------------------------------------------------
빨간색 부분만 추가해 주시면 된답니다.
4. AndroidManifast.xml 에서 activity 추가
환경설정화면도 activity 이기 때문에 매니패스트 파일에 추가해 주어야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bolero.texttest"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".TextTest"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Setting" android:label="@string/app_name"></activity>
</application>
<uses-sdk android:minSdkVersion="4" />
</manifest>
5. 호출 부분 작업
이제 메인 activity 에서 환경설정 activity를 호출해 주어야 하는데요.
private void setting()
{
Intent i = new Intent(this, Setting.class);
startActivity(i);
}
위와 같이 Intent를 만들어서 호출하는 함수하나 만들어서, 원하는 곳 아무곳에서나 호출하면 된답니다.
이렇게 해서 호출하면 아래와 같이 나온답니다.
6. 환결 설정화면에서 선택한 값 가져오기
위와 같이 작업한 환경설정값을 안드로이드가 알아서 저장하고 불러오고 한답니다.
그래서 코드의 어디에서도 저장하거나 로드하는 코드는 없구요.
이렇게 만들어준 환경설정 값은 getDefaultSharedPreferences 를 통해서 읽어 올 수 있답니다.
환경 설정도 하나의 activity 이기 때문에 메인에서 환경설정으로 가면, 메인의 화면을 가리게 되어서 OnPause 가 호출되고,
환경설정에서 돌아오면 때 (환경설정이 닫히면 ), 메인의 OnResume 이 호출 된답니다.
그러므로, OnResume에서 환경설정에서 지정한 값을 읽어 오면 된답니다.
@Override
protected void onResume() {
super.onResume();
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
boolean check_value = pref.getBoolean("keycheck", false);
String list_value = pref.getString("keylist", "");
m_vt2.setText("List = " + list_value + ", check = " + check_value);
}
위의 파란 글씨 부분이 환경 설정값을 가져오는 부분이랍니다.
이렇게 구성한 환경 설정을 프로그램을 종료했다가 다시 실행 하여도 유지가 된답니다.
수고하세요 ^^
'공부 > Android' 카테고리의 다른 글
항상 최상위에 있는 액티비티, 팝업 만들기 (0) | 2013.07.17 |
---|---|
안드로이드 해상도(dpi, dip, px) , dip px 변환 (0) | 2013.07.17 |
안드로이드 블루투스 정리(android bluetooth) (0) | 2013.07.15 |
안드로이드 블루투스 (Android Bluetooth 초기세팅) (0) | 2013.07.15 |
안드로이드 PreferenceActivity (0) | 2013.07.12 |