안드로이드에서 설정(Setting) 정보를 변경하는 Activity 를 만들어 두어야 할 때 필요할 거 같아서 적어둔다.
준비사항
토글버튼 이미지 2개
toggle_drawable.zip
토글버튼 이미지 2개를 drawable 폴더에 복사하고, toggle_selector.xml 파일을 만든다.
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/toggle_on" android:state_checked="true"/> <item android:drawable="@drawable/toggle_off" android:state_checked="false"/>
</selector> |
activity_setting.xml 은 Layout을 정한다.
여러개의 환경설정 정보가 필요하다면 TableLayout 을 선택하는 것이 좋을 거 같다.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" >
<ToggleButton android:id="@+id/btn_toggle1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/toggle_selector" android:checked="true" android:text="" android:textOff="" android:textOn="" />
<TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/btn_toggle1" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:text="" android:textAppearance="?android:attr/textAppearanceMedium" />
</RelativeLayout> |
SettingActivity.java
토글버튼을 선택함에 따라 SharedPreferences 에 값이 변경되도록 하여 관리정보를 알 수 있도록 한다.
import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.Menu; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.TextView; import android.widget.ToggleButton;
public class SettingActivity extends Activity {
SharedPreferences pref; ToggleButton btn_choice; TextView text;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting);
btn_choice = (ToggleButton) findViewById(R.id.btn_toggle1); text = (TextView) findViewById(R.id.textView1); pref = getSharedPreferences("pref", Activity.MODE_PRIVATE); if(pref.getString("choice", "").equals("1")){ text.setText("ON"); } else { text.setText("OFF"); }
btn_choice.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override public void onCheckedChanged(CompoundButton arg0, boolean isChecked) { if(isChecked == true){ text.setText("ON"); SharedPreferences.Editor editor = pref.edit(); editor.putString("choice", "1"); editor.commit(); } else { text.setText("OFF"); System.out.println("토글버튼 해제"); SharedPreferences.Editor editor = pref.edit(); editor.putString("choice", "0"); editor.commit(); } } });
}
} |