Tag Archives: 안드로이드

[Java/Android] SharedPreferences 유틸리티 클래스 만들기

안드로이드상에서는 데이터를 저장하기 위해서 다양한 방법을 사용할 수 있습니다. 그중에서도 가장 손쉽게 데이터를 보관할 수 있는 방법으로는 SharedPreferences를 이용하는 방법이 있습니다.

원래는 어플리케이션의 설정을 저장하고 읽어오기 위해서 태어난것 같지만 이외에도 다양한 방법으로 사용될 수 있습니다. 하지만 퍼포먼스는 그다지 좋지 않은것 같습니다. 퍼포먼스를 따져봐야 하는 경우에는 SQLite를 추천합니다.
[code java]public class SharedPreference

{
/**
* <pre>
* String 데이터를 저장합니다.
* </pre>
*
* @param context 컨텍스트
* @param key 키
* @param value 값
*/
public static void putSharedPreference
(Context context, String key, String value)
{
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(context);

SharedPreferences.Editor editor = prefs.edit();

editor.putString(key, value);
editor.commit();
}

/**
* <pre>
* Boolean 데이터를 저장합니다.
* </pre>
*
* @param context 컨텍스트
* @param key 키
* @param value 값
*/
public static void putSharedPreference
(Context context, String key, boolean value)
{
SharedPreferences prefs =

PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();

editor.putBoolean(key, value);
editor.commit();
}

/**
* <pre>
* Integer 데이터를 저장합니다.
* </pre>
*
* @param context 컨텍스트
* @param key 키
* @param value 값
*/
public static void putSharedPreference
(Context context, String key, int value)
{
SharedPreferences prefs =

PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences.Editor editor = prefs.edit();

editor.putInt(key, value);
editor.commit();
}

/**
* <pre>
* String 데이터를 읽어옵니다.
* </pre>
*
* @param context 컨텍스트
* @param key 키
* @return 읽어온 값, 값이 없을 경우 null이 반환된다.
*/
public static String getSharedPreference
(Context context, String key)
{
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(context);

return prefs.getString(key, null);
}

/**
* <pre>
* Boolean 데이터를 읽어옵니다.
* </pre>
*
* @param context 컨텍스트
* @param key 키
* @return 읽어온 값, 값이 없을 경우 false가 반환된다.
*/
public static boolean getBooleanSharedPreference
(Context context, String key)
{
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(context);

return prefs.getBoolean(key, false);
}

/**
* <pre>
* Int 데이터를 읽어옵니다.
* </pre>
*
* @param context 컨텍스트
* @param key 키
* @return 읽어온 값, 값이 없을 경우 0이 반환된다.
*/
public static int getIntSharedPreference
(Context context, String key)
{
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(context);

return prefs.getInt(key, 0);
}
}[/code]

데이터를 저장하기 위해서는 putSharedPreference메서드를 사용하면 되고 값을 읽어올때는 get~~~SharedPreference를 이용하여 읽어오면 됩니다.

[Java/Android] 코드상에서 레이아웃 파라미터 설정하기

보통의 안드로이드는 MVC(Model-View-Controller)를 충실하게 이행하고 있습니다. 여기서 View에 해당하는 부분을 XML을 이용하여 표현하고 있죠. 이것은 어찌보면 편리하고 좋아 보이지만 동적인 화면 구성은 역시나 코드에 의존할 수 밖에 없습니다. 아이폰에서도 아무리 Interface Builder에 의존하더라도 이런 부분은 어쩔수 없는게 아닐까 싶기도 하고요.

그래도 조악한 안드로이드의 XML에디터를 보면 Interface Builder에 한표 더 주고 싶어지네요. 아무튼 코드에 의존한 레이아웃 동적 변화를 위해서는 LayoutParam이라는 클래스를 이용해야 합니다. 이 클래스는 거의 대부분의 화면 구성을 위한 ViewGroup을 상속받는 클래스들은 가지고 있습니다.

사용자 삽입 이미지

저기 스크린샷에 보이는 클래스들이 다양한 화면 구성을 위한 위젯들이 가지고 있는 레이아웃 파라미터 클래스입니다. 적용하려는 위젯에 따라 적절히 선택하여 사용을 하시면 됩니다. 어떤것을 사용하냐에 따라 추가로 설정할 수 있는 범위도 달라집니다.

예를 들면 LinearLayout.LayouutParams의 경우 여백의 값을 설정할 수 있습니다. 나머지 위젯의 LayoutParams들도 마찬가지로 위젯에 특화된 기능들이 한두가지씩 있습니다.
[code java]LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
    LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
params.setMargins(15, 20, 15, 20); //left, top, right, bottom[/code]
위에서 볼 수 있듯이 FILL_PARENT, WRAP_CONTENT 설정을 사용할수도 있습니다. 다음은 이렇게 사용한다는 예제입니다.
[code java]LinearLayout ll = new LinearLayout(this);      
LinearLayout.LayoutParams lparam = new LinearLayout.LayoutParams(
             LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
lparam.width = 200;

ll.setLayoutParams(lparam);
ll.setBackgroundColor(Color.parseColor(“#00ff00”));

setContentView(ll);[/code]