<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DkQCSHo6fSp7ImA9WhZWFEQ.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382</id><updated>2011-05-15T14:19:29.415-07:00</updated><title>프쟁이</title><subtitle type="html">프로그래밍 관련 정보제공 블로그 입니다.
많은 이용 바랍니다. ^^</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://pgm-progger.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>85</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/yNhQx" /><feedburner:info uri="blogspot/ynhqx" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DkQCSHo4fip7ImA9WhZWFEQ.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-7303317649860553</id><published>2011-05-15T14:19:00.001-07:00</published><updated>2011-05-15T14:19:29.436-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-15T14:19:29.436-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] 프리퍼런스 액티비티 레이아웃을 코드에서 구성하기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
이 샘플소스는 안드로이드 설치폴더에 android-sdk-windows\samples\android-8\ApiDemos 위치에 원본소스가 있습니다.&lt;br /&gt;
&lt;br /&gt;
지금까지는 프리퍼런스 액티비티의 항목들을 /res/xml/레이아웃.xml 파일에&lt;br /&gt;
&lt;br /&gt;
정의를 하여, 액티비티 클래스 파일에서 addPreferencesFromResource(..)&lt;br /&gt;
&lt;br /&gt;
메소드로 가져와서 레이아웃을 적용시켰습니다.&lt;br /&gt;
&lt;br /&gt;
여기서는 xml 파일에 프리퍼런스 항목들을 정의하지 않고, 코드에서 각 항목들을&lt;br /&gt;
&lt;br /&gt;
객체로 생성하여 동적으로 레이아웃을 구성하도록 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;먼저 원하는 패키지 경로에 프리퍼런스 액티비티 클래스 파일을 추가합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
PreferencesFromCode.java 파일명으로 하나 추가합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;package 패키지경로&lt;/span&gt;&lt;span style="color: #9a9a9a;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.content.Intent;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.content.res.TypedArray;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.net.Uri;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.os.Bundle;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.CheckBoxPreference;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.EditTextPreference;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.ListPreference;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.PreferenceActivity;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.PreferenceCategory;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.PreferenceScreen;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import korsoft.net.Test006.R;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;public class PreferencesFromCode extends PreferenceActivity {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 밑에 정의한 메소드로, 프리퍼런스 항목들을 객체로 생성하여&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * PreferenceScreen 객체에 추가하여, 최종적으로 PreferenceScreen&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 객체를 반환합니다. 전에 xml로 구성할 때, 루트태그인 &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &amp;lt;PreferenceScreen&amp;gt;..&amp;lt;/PreferenceScreen&amp;gt; 에 해당합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 이 태그 안에 현재 액티비티 안에 표시될 모든 프리퍼런스 항목 태그들을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 정의 했었습니다. 마찬가지로 단지 여기서는 객체형태로 각 항목들을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 생성하여, 이 PreferenceScreen 객체에 추가하여, 같은 방식으로&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 화면을 구성하게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setPreferenceScreen(createPreferenceHierarchy());&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private PreferenceScreen createPreferenceHierarchy() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Root&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// xml 로 구성했을때, &amp;lt;PreferenceScreen&amp;gt;..&amp;lt;/PreferenceScreen&amp;gt; 태그에 해당하는&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 액티비티 화면의 루트 객체입니다. 이 객체에 모든 프리퍼런스 카테고리와 프리퍼런스 &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 항목객체들이 추가됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Inline preferences&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 첫번째 프리퍼런스 카테고리 입니다. 카테고리는 프리퍼런스 액티비티에서&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 제목을 가지고, 여러 프리퍼런스 항목들을 그룹짓는 역할을 하는 객체입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 루트 PreferenceScreen 객체에 추가되고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceCategory inlinePrefCat = new PreferenceCategory(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inlinePrefCat.setTitle(R.string.inline_preferences);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root.addPreference(inlinePrefCat);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Toggle preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 체크박스 프리퍼런스 항목객체를 만들고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 키/제목/요약 속성값들을 정의한 후, 위에서 만든 카테고리 객체에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 현재 항목을 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckBoxPreference togglePref = new CheckBoxPreference(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; togglePref.setKey("toggle_preference");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; togglePref.setTitle(R.string.title_toggle_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; togglePref.setSummary(R.string.summary_toggle_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inlinePrefCat.addPreference(togglePref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Dialog based preferences&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 새로운 카테고리 객체를 만들어서, 루트 PreferenceCategory 객체에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceCategory dialogBasedPrefCat = new PreferenceCategory(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBasedPrefCat.setTitle(R.string.dialog_based_preferences);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root.addPreference(dialogBasedPrefCat);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Edit text preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 새로만든 다이얼로그 카테고리 객체에 에디트 프리퍼런스 항목을 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 현재 항목을 누르면, 입력 다이얼로그가 떠서 값을 입력하여 저장할 수 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 다이얼로그의 제목을 setDialogTitle 메소드로 설정하였습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EditTextPreference editTextPref = new EditTextPreference(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editTextPref.setDialogTitle(R.string.dialog_title_edittext_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editTextPref.setKey("edittext_preference");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editTextPref.setTitle(R.string.title_edittext_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editTextPref.setSummary(R.string.summary_edittext_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBasedPrefCat.addPreference(editTextPref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // List preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 다이얼로그 카테고리 객체에 리스트 프리퍼런스 항목을 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 위의 에디트 항목밑에 추가가 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 현재 항목을 클릭하면 리스트에서 선택할 수 있는 다이얼로그가 뜹니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 이때 나올 리스트 항목들을 /res/values/arrays.xml 정의한 배열항목들을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 키배열과 값배열 두개 배열을 각각 setEntries,setEntryValues 메소드로&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 설정하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListPreference listPref = new ListPreference(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listPref.setEntries(R.array.entries_list_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listPref.setEntryValues(R.array.entryvalues_list_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listPref.setDialogTitle(R.string.dialog_title_list_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listPref.setKey("list_preference");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listPref.setTitle(R.string.title_list_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listPref.setSummary(R.string.summary_list_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dialogBasedPrefCat.addPreference(listPref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Launch preferences&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 새 카테고리 객체를 생성하여, 루트 PreferenceScreen 객체에 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceCategory launchPrefCat = new PreferenceCategory(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; launchPrefCat.setTitle(R.string.launch_preferences);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root.addPreference(launchPrefCat);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * The Preferences screenPref serves as a screen break (similar to page&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * break in word processing). Like for other preference types, we assign&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * a key here so that it is able to save and restore its instance state.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Screen preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 새로 생성된 호출 카테고리 객체에, PreferenceScreen 프리퍼런스 항목객체를 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PreferenceScreen 는 하나의 독립된 프리퍼런스 액티비티 화면입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 그래서 현재 프리퍼런스 항목을 클릭하면, 독립된 프리퍼런스 액티비티 화면이 뜨게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 이 프리퍼런스 액티비티 화면에 표시될 프리퍼런스 항목을 밑에서 추가를 하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceScreen screenPref = getPreferenceManager().createPreferenceScreen(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; screenPref.setKey("screen_preference");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; screenPref.setTitle(R.string.title_screen_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; screenPref.setSummary(R.string.summary_screen_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; launchPrefCat.addPreference(screenPref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * You can add more preferences to screenPref that will be shown on the&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * next screen.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Example of next screen toggle preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 체크박스 프리퍼런스 항목객체를 하나 생성해서, 위에서 만든 프리퍼런스 액티비티 객체에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 추가하고 있습니다. 즉 위에서 추가한 프리퍼런스 액티비티 항목을 클릭하면,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 독립된 액티비티가 뜨고, 그 안에는 현재의 체크박스 항목이 나오게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 다른 항목들을 PreferenceScreen 객체에 더 추가하게 되면, 추가한 대로 &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 독립된 프리퍼런스 액티비티 화면에 나오게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckBoxPreference nextScreenCheckBoxPref = new CheckBoxPreference(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nextScreenCheckBoxPref.setKey("next_screen_toggle_preference");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nextScreenCheckBoxPref.setTitle(R.string.title_next_screen_toggle_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nextScreenCheckBoxPref.setSummary(R.string.summary_next_screen_toggle_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; screenPref.addPreference(nextScreenCheckBoxPref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Intent preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 독립된 프리퍼런스 액티비티 항목객체를 하나 생성하여, 호출카테고리에 추가하여,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 현재 항목을 누르면, 인텐트를 방송하여&amp;nbsp; Intent.ACTION_VIEW 액션을 수행하는&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 내부프로그램에 전달하여, 특정 데이터를 설정하여 실행이 되도록 합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 독립된 액티비티가 뜨면서, 웹뷰가 &lt;/span&gt;&lt;a href="http://www.android.com/"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.android.com&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt; 경로를 띄우도록 실행이 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceScreen intentPref = getPreferenceManager().createPreferenceScreen(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intentPref.setIntent(new Intent().setAction(Intent.ACTION_VIEW)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .setData(Uri.parse("&lt;/span&gt;&lt;a href="http://www.android.com/"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.android.com&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt;")));&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intentPref.setTitle(R.string.title_intent_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intentPref.setSummary(R.string.summary_intent_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; launchPrefCat.addPreference(intentPref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Preference attributes&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 프리퍼런스 카테고리 항목객체를 하나 생성하여 루트에 추가합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceCategory prefAttrsCat = new PreferenceCategory(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefAttrsCat.setTitle(R.string.preference_attributes);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; root.addPreference(prefAttrsCat);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Visual parent toggle preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 체크박스 항목을 위의 카테고리에 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckBoxPreference parentCheckBoxPref = new CheckBoxPreference(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parentCheckBoxPref.setTitle(R.string.title_parent_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parentCheckBoxPref.setSummary(R.string.summary_parent_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefAttrsCat.addPreference(parentCheckBoxPref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Visual child toggle preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // See res/values/attrs.xml for the &amp;lt;declare-styleable&amp;gt; that defines&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TogglePrefAttrs.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 체크박스 프리퍼런스 항목을 생성하여 위의 속성 카테고리에 추가하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // /res/values/attrs.xml 파일에 정의된 &amp;lt;declare-styleable&amp;gt; 태그안에 정의된&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &amp;lt;attr name="android:preferenceLayoutChild" /&amp;gt; 속성을 읽어와서,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 체크박스의 레이아웃을 설정하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TypedArray a = obtainStyledAttributes(R.styleable.TogglePrefAttrs);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CheckBoxPreference childCheckBoxPref = new CheckBoxPreference(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; childCheckBoxPref.setTitle(R.string.title_child_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; childCheckBoxPref.setSummary(R.string.summary_child_preference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; childCheckBoxPref.setLayoutResource(&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.getResourceId(R.styleable.TogglePrefAttrs_android_preferenceLayoutChild,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0));&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; prefAttrsCat.addPreference(childCheckBoxPref);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.recycle();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return root;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;문자열 리소스들을 /res/values/strings.xml 파일에 추가합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="hello"&amp;gt;Hello World, Test006!&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="app_name"&amp;gt;Test006&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="inline_preferences"&amp;gt;In-line preferences&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_based_preferences"&amp;gt;Dialog-based preferences&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="launch_preferences"&amp;gt;Launch preferences&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="preference_attributes"&amp;gt;Preference attributes&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_toggle_preference"&amp;gt;Toggle preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_toggle_preference"&amp;gt;This is a toggle button&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_edittext_preference"&amp;gt;Edit text preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_edittext_preference"&amp;gt;An example that uses an edit text dialog&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_title_edittext_preference"&amp;gt;Enter your favorite animal&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_list_preference"&amp;gt;List preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_list_preference"&amp;gt;An example that uses a list dialog&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_title_list_preference"&amp;gt;Choose one&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_screen_preference"&amp;gt;Screen preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_screen_preference"&amp;gt;Shows another screen of preferences&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_next_screen_toggle_preference"&amp;gt;Toggle preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_next_screen_toggle_preference"&amp;gt;Preference that is on the next screen but same hierarchy&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_intent_preference"&amp;gt;Intent preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_intent_preference"&amp;gt;Launches an Activity from an Intent&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_parent_preference"&amp;gt;Parent toggle&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_parent_preference"&amp;gt;This is visually a parent&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_child_preference"&amp;gt;Child toggle&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_child_preference"&amp;gt;This is visually a child&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;lt;string name="preferences_from_code"&amp;gt;App/Preferences/5. Preferences from code&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #951015;"&gt;&lt;strong&gt;&lt;span style="color: #3c3f45;"&gt;배열항목들을 /res/values/arrays.xml 파일에 추가해줍니다.&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Used in app/menu examples --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string-array name="entries_list_preference"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Alpha Option 01&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Beta Option 02&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Charlie Option 03&amp;lt;/item&amp;gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/string-array&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Used in app/menu examples --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string-array name="entryvalues_list_preference"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;alpha&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;beta&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;charlie&amp;lt;/item&amp;gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/string-array&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #3c3f45;"&gt;&lt;strong&gt;속성항목들을 /res/values/attrs.xml 파일에 추가해줍니다.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- These are the attributes that we want to retrieve from the theme&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; in app/PreferencesFromCode.java --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;declare-styleable name="TogglePrefAttrs"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attr name="android:preferenceLayoutChild" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/declare-styleable&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;마지막으로 AndroidManifest.xml 파일에 다음과같이 설정해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;manifest xmlns:android="&lt;/span&gt;&lt;a href="http://schemas.android.com/apk/res/android"&gt;&lt;span style="color: #9a9a9a;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt;"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package="korsoft.net.Test006"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode="1"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName="1.0"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".PreferencesFromCode" android:label="@string/preferences_from_code"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요 ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-7303317649860553?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hF99UBajrK9p4Fh-7d_o5jXDbhI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hF99UBajrK9p4Fh-7d_o5jXDbhI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/hF99UBajrK9p4Fh-7d_o5jXDbhI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hF99UBajrK9p4Fh-7d_o5jXDbhI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/mZ8Icvk9R8w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/7303317649860553/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=7303317649860553" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7303317649860553?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7303317649860553?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/mZ8Icvk9R8w/android_15.html" title="[android] 프리퍼런스 액티비티 레이아웃을 코드에서 구성하기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android_15.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UCRnw9fCp7ImA9WhZWFEw.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-7234990311122104264</id><published>2011-05-14T15:14:00.000-07:00</published><updated>2011-05-14T15:14:27.264-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-14T15:14:27.264-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] 프리퍼런스 액티비티 항목에 기본값 설정하기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
이 샘플소스는 안드로이드 설치폴더에 android-sdk-windows\samples\android-8\ApiDemos 위치에 원본소스가 있습니다.&lt;br /&gt;
&lt;br /&gt;
프리퍼런스 액티비티를 처음 실행했을때, 설정하고 싶은 기본값들이 있을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
/res/xml/프리퍼런스레이아웃.xml 파일에 프리퍼런스 항목들을 설정할 때, &lt;br /&gt;
&lt;br /&gt;
android:defaultValue="" 속성에다 원하시는 기본값을 설정하시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;먼저 프리퍼런스 액티비티 파일을 원하시는 패키지 경로에 추가합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
여기에서는 DefaultValues.java 파일로 추가 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;package korsoft.net.Test005;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import korsoft.net.Test005.R;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.app.Application;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.content.SharedPreferences;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.os.Bundle;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.PreferenceActivity;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;import android.preference.PreferenceManager;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;/**&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* This activity is an example of a simple settings screen that has default&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* values.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* &amp;lt;p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* In order for the default values to be populated into the&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* &lt;/span&gt;&lt;a href="mailto:%7B@link"&gt;&lt;span style="color: #9a9a9a;"&gt;{@link&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt; SharedPreferences} (from the preferences XML file), the client must&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* call&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* &lt;/span&gt;&lt;a href="mailto:%7B@link"&gt;&lt;span style="color: #9a9a9a;"&gt;{@link&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt; PreferenceManager#setDefaultValues(android.content.Context, int, boolean)}.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* &amp;lt;p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* This should be called early, typically when the application is first created.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* This ensures any of the application's activities, services, etc. will have&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* the default values present, even if the user has not wandered into the&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* application's settings. For ApiDemos, this is &lt;/span&gt;&lt;a href="mailto:%7B@link"&gt;&lt;span style="color: #9a9a9a;"&gt;{@link&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt; ApiDemosApplication},&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* and you can find the call to&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* &lt;/span&gt;&lt;a href="mailto:%7B@link"&gt;&lt;span style="color: #9a9a9a;"&gt;{@link&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt; PreferenceManager#setDefaultValues(android.content.Context, int, boolean)}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;* in its &lt;/span&gt;&lt;a href="mailto:%7B@link"&gt;&lt;span style="color: #9a9a9a;"&gt;{@link&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt; ApiDemosApplication#onCreate() onCreate}.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;public class DefaultValues extends PreferenceActivity {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * This populates the default values from the preferences XML file. See&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * &lt;/span&gt;&lt;a href="mailto:%7B@link"&gt;&lt;span style="color: #9a9a9a;"&gt;{@link&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt; DefaultValues} for more details.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 반드시 처음 시작하는 메인 액티비티에서 setDefaultValues 메소드가 실행되어야 합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 프리퍼런스 레이아웃 xml 파일에서 읽어와서 현재 프리퍼런스 액티비티의 항목들에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 기본값을 셋팅합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PreferenceManager.setDefaultValues(this, R.xml.default_values, false);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * /res/xml/default_values.xml 프리퍼런스 액티비티 레이아웃 파일을 읽어와&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 현재 프리퍼런스 액티비티에 레이아웃을 적용시킵니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 보통 액티비티는 /res/layout/~~.xml 파일을 setContentView(..) 함수로&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 적용시킬 테지만, 프리퍼런스 액티비티는 xml 레이아웃 파일을 레이아웃으로&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 정의하고, addPreferencesFromResource 함수로 이를 불러와 적용시킵니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addPreferencesFromResource(R.xml.default_values);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;위의 프리퍼런스 액티비티의 레이아웃을 정의하는 xml 파일을 추가합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
/res/xml/default_values.xml 파일을 추가해줍니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;!-- Copyright (C) 2008 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;!-- This is a primitive example showing how to set default values for preferences.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See DefaultValues.java for more information. &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; defaultValue 속성값에 해당 프리퍼런스 액티비티가 시작되었을때 각 항목에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 설정될 초기값을 설정해 줍니다. 속성값의 데이터형은 해당 항목의 종류에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 따라서 달라집니다. 체크박스항목이면 true/false 를 설정해 주고,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 에디트텍스트 항목이면, 문자열 형식이 될 것입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;PreferenceScreen&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:android="&lt;/span&gt;&lt;a href="http://schemas.android.com/apk/res/android"&gt;&lt;span style="color: #9a9a9a;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt;"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CheckBoxPreference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="default_toggle"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:defaultValue="true"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_checkbox_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_checkbox_preference" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditTextPreference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="default_edittext"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:defaultValue="@string/default_value_edittext_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_edittext_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_edittext_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:dialogTitle="@string/dialog_title_edittext_preference" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ListPreference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="default_list"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:defaultValue="@string/default_value_list_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_list_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_list_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:entries="@array/entries_list_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:entryValues="@array/entryvalues_list_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:dialogTitle="@string/dialog_title_list_preference" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/PreferenceScreen&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;문자열 리소스들을 /res/values/strings.xml 파일에 추가해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="hello"&amp;gt;Hello World, Test005!&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="app_name"&amp;gt;Test005&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_checkbox_preference"&amp;gt;Checkbox preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_checkbox_preference"&amp;gt;This is a checkbox&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="default_value_list_preference"&amp;gt;beta&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="default_value_edittext_preference"&amp;gt;Default value&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_edittext_preference"&amp;gt;Edit text preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_edittext_preference"&amp;gt;An example that uses an edit text dialog&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_title_edittext_preference"&amp;gt;Enter your favorite animal&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_list_preference"&amp;gt;List preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_list_preference"&amp;gt;An example that uses a list dialog&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_title_list_preference"&amp;gt;Choose one&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="default_values"&amp;gt;App/Preferences/4. Default values&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;프리퍼런스 액티비티 항목중 리스트 항목에 사용될 배열항목을 /res/values/arrays.xml 파일에 추가해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #9a9a9a;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Used in app/menu examples --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string-array name="entries_list_preference"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Alpha Option 01&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Beta Option 02&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Charlie Option 03&amp;lt;/item&amp;gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/string-array&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Used in app/menu examples --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string-array name="entryvalues_list_preference"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;alpha&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;beta&amp;lt;/item&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;charlie&amp;lt;/item&amp;gt;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/string-array&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;마지막으로 AndroidManifest.xml 파일을 다음과 같이 설정합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;manifest xmlns:android="&lt;/span&gt;&lt;a href="http://schemas.android.com/apk/res/android"&gt;&lt;span style="color: #9a9a9a;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #9a9a9a;"&gt;"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package="korsoft.net.Test005"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode="1"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName="1.0"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".DefaultValues" android:label="@string/default_values"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #9a9a9a;"&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
그럼 모두들즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-7234990311122104264?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HUw379couGW3IGsaqWoDZ5EQz-A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HUw379couGW3IGsaqWoDZ5EQz-A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HUw379couGW3IGsaqWoDZ5EQz-A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HUw379couGW3IGsaqWoDZ5EQz-A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/AL5WII7Cz1Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/7234990311122104264/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=7234990311122104264" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7234990311122104264?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7234990311122104264?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/AL5WII7Cz1Y/android_3494.html" title="[android] 프리퍼런스 액티비티 항목에 기본값 설정하기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android_3494.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4NQXgzeip7ImA9WhZWFE0.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-8897961884695218837</id><published>2011-05-14T14:19:00.000-07:00</published><updated>2011-05-14T14:19:50.682-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-14T14:19:50.682-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] 프리퍼런스 - 의존관계의 프리퍼런스 항목</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
이 샘플소스는 안드로이드 설치폴더에 android-sdk-windows\samples\android-8\ApiDemos 위치에 원본소스가 있습니다.&lt;br /&gt;
&lt;br /&gt;
프리퍼런스 액티비티의 항목사이에 서로 의존적인 관계가 필요한 경우가 있을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
예를들어, 폰트를 설정하는데, 먼저 폰트를 설정할 것인지 아닌지 체크항목이 있고,&lt;br /&gt;
&lt;br /&gt;
그리고 폰트종류가 나오면서 폰트종류를 설정하는 항목 두개가 있다고 하면,&lt;br /&gt;
&lt;br /&gt;
먼저 폰트종류 선택항목은 폰트설정여부 항목이 체크되어있을때만 활성화가 되고,&lt;br /&gt;
&lt;br /&gt;
폰트설정항목이 체크가 되어있지 않으면, 폰트종류 선택항목은 비활성화 되어야 합니다.&lt;br /&gt;
&lt;br /&gt;
이런 관계가 바로 항목들끼리 의존관계가 되는 것입니다.&lt;br /&gt;
&lt;br /&gt;
현재 프로그램에서는 프리퍼런스 항목이 두개가 있습니다.&lt;br /&gt;
&lt;br /&gt;
하나는 체크박스 항목과, 다른 하나는 이 체크박스가 체크되었을때 활성화 되어&lt;br /&gt;
&lt;br /&gt;
내용을 입력받을 수 있는 에디트 항목입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;먼저 프리퍼런스 액티비티 클래스 파일을 원하시는 패키지경로에 추가합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
PreferenceDependencies.java 파일명으로 추가하면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;span class="style1"&gt;/*&lt;br /&gt;
* Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
*&lt;br /&gt;
* Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
* you may not use this file except in compliance with the License.&lt;br /&gt;
* You may obtain a copy of the License at&lt;br /&gt;
*&lt;br /&gt;
* http://www.apache.org/licenses/LICENSE-2.0&lt;br /&gt;
*&lt;br /&gt;
* Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
* distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
* See the License for the specific language governing permissions and&lt;br /&gt;
* limitations under the License.&lt;br /&gt;
*/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;package 원하시는패키지경로;&lt;/span&gt;&lt;/div&gt;&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;import 원하시는패키지경로.R;&lt;/span&gt;&lt;/div&gt;&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;import android.os.Bundle;&lt;br /&gt;
import android.preference.PreferenceActivity;&lt;/span&gt;&lt;/div&gt;&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;public class PreferenceDependencies extends PreferenceActivity {&lt;/span&gt;&lt;/div&gt;&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;@Override&lt;br /&gt;
protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
super.onCreate(savedInstanceState);&lt;br /&gt;
&lt;br /&gt;
// /res/xml/preference_dependencies.xml 파일에서 현재 액티비티의&lt;br /&gt;
// 레이아웃 정의를 가져와 적용을 합니다.&lt;br /&gt;
addPreferencesFromResource(R.xml.preference_dependencies);&lt;br /&gt;
}&lt;/span&gt;&lt;/div&gt;&lt;span style="color: #999999;"&gt;&lt;span class="style1"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;이제 위의 프리퍼런스 액티비티에서 레이아웃을 정의하는 파일을&lt;br /&gt;
/res/xml/preference_dependencies.xml 경로로 추가해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;span class="style1"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2008 The Android Open Source Project&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
you may not use this file except in compliance with the License.&lt;br /&gt;
You may obtain a copy of the License at&lt;/span&gt;&lt;/div&gt;&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/div&gt;&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
See the License for the specific language governing permissions and&lt;br /&gt;
limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;&amp;lt;!-- This is a primitive example showing how some preferences can depend on other preferences. --&amp;gt;&lt;br /&gt;
&amp;lt;PreferenceScreen&lt;br /&gt;
xmlns:android="http://schemas.android.com/apk/res/android"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: #999999;"&gt;&lt;span class="style1"&gt;&amp;lt;PreferenceCategory&lt;br /&gt;
android:title="@string/example_preference_dependency"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;CheckBoxPreference&lt;br /&gt;
android:key="wifi"&lt;br /&gt;
android:title="@string/title_wifi" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;EditTextPreference&lt;br /&gt;
android:layout="?android:attr/preferenceLayoutChild"&lt;br /&gt;
android:title="@string/title_wifi_settings"&lt;br /&gt;
android:dependency="wifi" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PreferenceCategory&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PreferenceScreen&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;문자열 리소스를 /res/values/strings.xml 파일에 추가해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;span class="style1"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&amp;lt;string name="hello"&amp;gt;Hello World, Test004!&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="app_name"&amp;gt;Test004&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="example_preference_dependency"&amp;gt;Example preference dependency&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="title_wifi"&amp;gt;WiFi&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="title_wifi_settings"&amp;gt;WiFi settings&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="preference_dependencies"&amp;gt;App/Preferences/3. Preference dependencies&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;마지막으로 AndroidManifest.xml 파일에 다음과 같이 입력합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;span class="style1"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"&lt;br /&gt;
package="프로그램패키지경로명"&lt;br /&gt;
android:versionCode="1"&lt;br /&gt;
android:versionName="1.0"&amp;gt;&lt;br /&gt;
&amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="style1"&gt;&lt;span style="color: #999999;"&gt;&amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;activity android:name=".PreferenceDependencies" android:label="@string/preference_dependencies"&amp;gt;&lt;br /&gt;
&amp;lt;intent-filter&amp;gt;&lt;br /&gt;
&amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;
&amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;
&amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="color: #999999;"&gt;&lt;span class="style1"&gt;&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
그럼 모두들 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-8897961884695218837?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/aS1WuSdpWyiE_8PpZZC3BHQeL_E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aS1WuSdpWyiE_8PpZZC3BHQeL_E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/aS1WuSdpWyiE_8PpZZC3BHQeL_E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/aS1WuSdpWyiE_8PpZZC3BHQeL_E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/COQupYKaWtk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/8897961884695218837/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=8897961884695218837" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/8897961884695218837?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/8897961884695218837?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/COQupYKaWtk/android_14.html" title="[android] 프리퍼런스 - 의존관계의 프리퍼런스 항목" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android_14.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQNQn84fCp7ImA9WhZWE0w.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-2527641260017108762</id><published>2011-05-13T12:19:00.001-07:00</published><updated>2011-05-13T12:19:53.134-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-13T12:19:53.134-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] 프리퍼런스 - 여러가지 기법들</title><content type="html">안녕하세요 ^^&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
이 샘플소스는 안드로이드 설치폴더에 android-sdk-windows\samples\android-8\ApiDemos 위치에 원본소스가 있습니다.&lt;br /&gt;
&lt;br /&gt;
프리퍼런스의 내용을 하나씩 값/쌍 형태로 불러오지 않고,&lt;br /&gt;
&lt;br /&gt;
공유 프리퍼런스 객체를 모두 가져와서 처리를 하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
데이터를 가져올때 프리퍼런스 액티비티를 띄워서 처리를 하지 않고,&lt;br /&gt;
&lt;br /&gt;
그 레이아웃 xml 파일을 인자로 넘겨서, 그 프리퍼런스 액티비티의 &lt;br /&gt;
&lt;br /&gt;
모든 공유 프리퍼런스의 값들을 가져와서 처리를 하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;먼저 메인 액티비티 클래스 파일을 원하시는 패키지 경로로 하나 추가합니다.&lt;br /&gt;
&lt;/strong&gt;여기서는 LaunchingPreferences.java 파일이 메인 액티비티 클래스 파일입니다.&lt;br /&gt;
&lt;br /&gt;
이 액티비티는 레이아웃xml 파일에서 레이아웃을 표시하지 않고,&lt;br /&gt;
&lt;br /&gt;
onCrate 메소드에서 동적으로 코드상에서 레이아웃을 정의하여 표시하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
프리퍼런스 액티비티를 띄우는 버튼 하나와, 그 밑에 프리퍼런스 액티비티의 &lt;br /&gt;
&lt;br /&gt;
공유 프리퍼런스 값을 가져와서 그 값을 표시하는 처리를 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="style2" style="color: #acacac;"&gt;/*&lt;br /&gt;
* Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
*&lt;br /&gt;
* Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
* you may not use this file except in compliance with the License.&lt;br /&gt;
* You may obtain a copy of the License at&lt;br /&gt;
*&lt;br /&gt;
* &lt;a class="con_link" href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
*&lt;br /&gt;
* Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
* distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
* See the License for the specific language governing permissions and&lt;br /&gt;
* limitations under the License.&lt;br /&gt;
*/&lt;/span&gt;&lt;br /&gt;
&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;package 원하시는패키지경로;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;import 원하시는패키지경로.R;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;import android.content.Context;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.content.res.TypedArray;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.os.Parcel;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.os.Parcelable;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.preference.Preference;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.util.AttributeSet;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.view.View;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.widget.TextView;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/**&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* This is an example of a custom preference type. The preference counts the&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* number of clicks it has received and stores/retrieves it from the storage.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 이 클래스는 프리퍼런스 항목클래스 입니다. Preference 클래스를 상속받아서 구현합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 프리퍼런스 항목은 프리퍼런스 액티비티의 리스트에 하나의 항목으로 배치가 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 기본적으로 체크박스, 에디트박스, 등의 프리퍼런스 항목이 있고,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 지금의 클래스처럼, 사용자가 직접 레이아웃등을 정의하고, 이렇게 그 동작등을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 정의하는 사용자 정의 프리퍼런스 항목을 만들 수 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public class MyPreference extends Preference {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 프리퍼런스 항목을 클릭할때마다 증가할 값을 저장할 정수변수입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;private int mClickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// This is the constructor called by the inflater&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 생성자로서, 이 내용은 프리퍼런스 액티비티에서 레이아웃을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 적용할때, 이 클래스로 정의된 프리퍼런스 객체들이 각각 이 생성자를&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 실행하게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public MyPreference(Context context, AttributeSet attrs) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super(context, attrs);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 레이아웃 xml 을 읽어와서, 이 프리퍼런스 항목의 레이아웃을 적용합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// /res/layout/preference_widget_mypreference.xml 파일을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 적용하고 있습니다. 텍스트뷰 하나가 정의되어 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 여기서 레이아웃은, 프리퍼런스 액티비티 안에는 리스트 형태로 각 프리퍼런스&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 항목들이 있구요, 이 프리퍼런스 항목은 제목과 내용이 기본적으로 표시되고,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 레이아웃이 적용되는 부분은, 제목과 내용 우측에 조그만 사각영역안에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 레이아웃이 표시됩니다. 전체 프리퍼런스 항목이 표시되는 것이 아닙니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 체크박스 프리퍼런스 항목을 봐도, 우측에 체크박스 하나가 있고, 좌측에는&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 다른 프리퍼런스 항목들과 동일하게 제목 내용 등의 동일한 형태로 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 즉 우측의 영역에서만 이 레이아웃이 적용됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;setWidgetLayoutResource(R.layout.preference_widget_mypreference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onBindView(android.view.View)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 현재 프리퍼런스 항목이 레이아웃이 프리퍼런스 액티비티에 표시가 완료되는 시점에, &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 내부의 객체들을 참조하기 위한 뷰객체를 파라미터로 넘겨주게 됩니다. &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onBindView(View view) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onBindView(view);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Set our custom views inside the layout&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// preference_widget_mypreference.xml 레이아웃 파일의 텍스트 뷰객체를 가져와서,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 증가한 값을 뷰에 표시하고 있습니다. 이 프리퍼런스 항목의 제목과 내용의 우측에 보시면,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 숫자가 계속해서 증가할 것입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;final TextView myTextView = (TextView) view.findViewById(R.id.mypreference_widget);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (myTextView != null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;myTextView.setText(String.valueOf(mClickCounter));&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onClick()&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 현재 프리퍼런스 항목을 클릭했을때, 호출되는 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 내부 정수변수의 값을 1증가합니다. 그리고 변경된 사실을 시스템에 알려서,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 값이 변경되었음을 알립니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onClick() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;int newValue = mClickCounter + 1;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Give the client a chance to ignore this change if they deem it&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// invalid&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// callChangeListener 메소드는 등록된 OnPreferenceChangeListener 메소드를&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 통해 값의 변했다고, 외부에 알리는 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 프리퍼런스 클래스 안에서는 등록된 OnPreferenceChangeListener 메소드가&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 없으므로, 이 메소드는 동작을 안합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (!callChangeListener(newValue)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// They don't want the value to be set&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Increment counter&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = newValue;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Save to persistent storage (this method will make sure this&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// preference should be persistent, along with other useful checks)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// persistInt 메소드에 정수값을 넘겨서 공유된 프리퍼런스 영역에 영구저장하게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;persistInt(mClickCounter);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Data has changed, notify so UI can be refreshed!&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// notifyChanged 메소드는 UI를 갱신하기 위한 메소드로, 현재 프리퍼런스 항목클래스의&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// onBindView 메소드를 호출하게 됩니다. 즉 변경된 값이 텍스트 뷰에 표시되게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;notifyChanged();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onGetDefaultValue(android.content.res.TypedArray, int)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* /res/layout/preference_widget_mypreference.xml 파일에 정의된 프리퍼런스 항목의 레이아웃 항목의&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* defaultValue 속성값을 가져와서 디폴트값을 반환해 줍니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 설정한 값의 데이터 종류에 따라서 정수형 등의 원하는 형태로 디폴트값을 반환해 주면 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected Object onGetDefaultValue(TypedArray a, int index) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// This preference type's value type is Integer, so we read the default&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// value from the attributes as an Integer.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return a.getInteger(index, 0);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onSetInitialValue(boolean, java.lang.Object)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 프리퍼런스 항목의 초기값을 설정하기 위한 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* restoreValue 가 true 이면 레이아웃 xml 로부터 현재 프리퍼런스 항목이 표시될때 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 그리고 false 이면 반대로 레이아웃이 사라질때 호출됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 그래서 true 일때 초기값을 설정하고, false 일때는 공유 프리퍼런스 영역에 값을 영구 저장합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (restoreValue) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Restore state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = getPersistedInt(mClickCounter);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;} else {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Set state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;int value = (Integer) defaultValue;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = value;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;persistInt(value);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onSaveInstanceState()&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 아래 두 함수는, 스마트폰의 화면이 세로로 보다가 가로로 바뀌면, &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 현재 값을 잃어버리기 때문에, 그런 예기치 못한 상황에서 현재값을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 저장했다가, 다시 복구하는 두개의 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected Parcelable onSaveInstanceState() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* Suppose a client uses this preference type without persisting. We&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* must save the instance state so it is able to, for example, survive&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* orientation changes.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;final Parcelable superState = super.onSaveInstanceState();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (isPersistent()) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// No need to save instance state since it's persistent&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return superState;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;// Save the instance state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;final SavedState myState = new SavedState(superState);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;myState.clickCounter = mClickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return myState;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onRestoreInstanceState(Parcelable state) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (!state.getClass().equals(SavedState.class)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Didn't save state for us in onSaveInstanceState&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onRestoreInstanceState(state);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Restore the instance state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;SavedState myState = (SavedState) state;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onRestoreInstanceState(myState.getSuperState());&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = myState.clickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;notifyChanged();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;/**&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* SavedState, a subclass of {@link BaseSavedState}, will store the state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* of MyPreference, a subclass of Preference.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* &amp;lt;p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* It is important to always call through to super methods.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;private static class SavedState extends BaseSavedState {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;int clickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public SavedState(Parcel source) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super(source);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Restore the click counter&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;clickCounter = source.readInt();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public void writeToParcel(Parcel dest, int flags) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.writeToParcel(dest, flags);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Save the click counter&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;dest.writeInt(clickCounter);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;public SavedState(Parcelable superState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super(superState);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;public static final Parcelable.Creator&amp;lt;SavedState&amp;gt; CREATOR =&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;new Parcelable.Creator&amp;lt;SavedState&amp;gt;() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public SavedState createFromParcel(Parcel in) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return new SavedState(in);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;span class="style2"&gt;&lt;span style="color: #acacac;"&gt;public SavedState[] newArray(int size) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return new SavedState[size];&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;};&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;strong&gt;AdvancedPreferences.java 클래스 파일을 원하시는 패키지 경로에 추가해주십니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
이 클래스는, 위의 메인 액티비티에서 버튼을 클릭했을때 뜨는 프리퍼런스 액티비티 클래스 입니다.&lt;br /&gt;
&lt;br /&gt;
프리퍼런스 액티비티 클래스는 PreferenceActivity 클래스를 상속받아서 구현된 클래스 입니다.&lt;br /&gt;
&lt;br /&gt;
이 클래스도 액티비티이기 때문에, 일반 액티비티처럼 뜨지만, 일단 리스트 형태로 뜨고,&lt;br /&gt;
&lt;br /&gt;
각 리스트의 항목들은 모두 Preference 클래스를 상속받은 프리퍼런스 항목들입니다.&lt;br /&gt;
&lt;br /&gt;
이 프리퍼런스 항목의 종류는 체크박스, 에디트, 등등 기본적인 형이 있구요,&lt;br /&gt;
&lt;br /&gt;
그외에 사용자가 원하는 형태로 직접 Preference 클래스를 상속받아서 직접 구현을 하셔서&lt;br /&gt;
&lt;br /&gt;
사용하실 수 있습니다. 그리고 이 프리퍼런스 항목은 프리퍼런스 액티비티에 표시될때,&lt;br /&gt;
&lt;br /&gt;
형태가 정해져 있습니다. 리스트의 항목형태로 표시되고, 항목에 제목 내용이 표시되고,&lt;br /&gt;
&lt;br /&gt;
그리고 그 우측에 체크박스나, 사용자 레이아웃등을 적용시킬 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
코드는 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="style2" style="color: #acacac;"&gt;/*&lt;br /&gt;
* Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
*&lt;br /&gt;
* Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
* you may not use this file except in compliance with the License.&lt;br /&gt;
* You may obtain a copy of the License at&lt;br /&gt;
*&lt;br /&gt;
* &lt;a class="con_link" href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
*&lt;br /&gt;
* Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
* distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
* See the License for the specific language governing permissions and&lt;br /&gt;
* limitations under the License.&lt;br /&gt;
*/&lt;/span&gt;&lt;br /&gt;
&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;package korsoft.net.Test003;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;import korsoft.net.Test003.R;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;import android.content.SharedPreferences;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.content.SharedPreferences.OnSharedPreferenceChangeListener;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.os.Bundle;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.os.Handler;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.preference.PreferenceActivity;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.preference.CheckBoxPreference;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.widget.Toast;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/**&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* Example that shows finding a preference from the hierarchy and a custom preference type.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 메인 액티비티에서 프리퍼런스 액티비티를 띄우는 버튼을 눌렀을때 뜨는 프리퍼런스 액티비티 클래스 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 사용자 정의 프리퍼런스 클래스를 만들려면, Preference 클래스를 상속받아서 클래스를 정의하면 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 여기서는 MyPrefeence.java 파일에 이 사용자 정의 프리퍼런스 클래스를 정의하고 있습니다. &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 공유프리퍼런스객체의 값의 변화를 감지하여 처리하기 위하여, OnSharedPreferenceChangeListener 인터페이스를&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 구현하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public class AdvancedPreferences extends PreferenceActivity implements OnSharedPreferenceChangeListener {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* /res/xml/advanced_preferences.xml 파일에 정의되어 있는 사용자정의 프리퍼런스 클래스인&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* MyPreference 타입의 Preference 클래스 객체와 기본 프리퍼런스 클래스중의 하나인 &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* CheckBoxPreference 타입의 Preference 클래스 객체의 키값들을 각각 지정하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* MyPreference 클래스는 사용자가 직접 정의한 프리퍼런스 클래스로, 현재 프리퍼런스 항목을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 클릭할때마다, 정수값을 1씩 증가시키는 처리를 하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 현재 액티비티는 프리퍼런스 액티비티이고, 이 액티비티 안에 배치되는 항목들은 프리퍼런스&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 항목들입니다. 즉 Preference 클래스를 상속받아 구현된 클래스들 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 기본적으로 체크박스, 에디트박스, .. 등의 기본적인 프리퍼런스 항목들이 있구요..&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 사용자가 직접 Preference 클래스를 상속받아서 만든 항목을 사용할 수 도 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public static final String KEY_MY_PREFERENCE = "my_preference";&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public static final String KEY_ADVANCED_CHECKBOX_PREFERENCE = "advanced_checkbox_preference";&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 프리퍼런스 액티비티에서 나오는 체크박스를 자동 토글처리를 하기 위해서, 체크박스 프리퍼런스 객체를&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 담을 변수입니다. 그리고 밑에 핸들러 클래스 객체는 토글처리가 쓰레드 형태로 실행이 되는데,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 이 실행을 제어하는 제어클래스 객체입니다. 실행을 지연시켜서 주기적으로 실행시키는 등..&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;private CheckBoxPreference mCheckBoxPreference;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;private Handler mHandler = new Handler();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;/**&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* This is a simple example of controlling a preference from code.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 체크박스가 자동으로 토글되도록 처리를 하는 쓰레드 클래스 객체입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;private Runnable mForceCheckBoxRunnable = new Runnable() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public void run() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (mCheckBoxPreference != null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;//체크박스 체크상태를 토글시킵니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mCheckBoxPreference.setChecked(!mCheckBoxPreference.isChecked());&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Force toggle again in a second&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 1초후에 다시 이 run 함수를 호출하게 합니다. 1초동안 지연시킵니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mHandler.postDelayed(this, 1000);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;};&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onCreate(savedInstanceState);&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;// Load the XML preferences file&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 일반 액티비티의 setContentView(..) 처럼, 프리퍼런스 액티비티에서, &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// xml 리소스에서 정의된 액티비티내의 항목들을 가져와서,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 현재 프리퍼런스 액티비티에 표시를 합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;addPreferencesFromResource(R.xml.advanced_preferences);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Get a reference to the checkbox preference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// /res/xml/advanced_preferences.xml 파일에 정의된 체크박스 태그의 key 속성값을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이용하여, 체크박스객체의 참조값을 가져옵니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mCheckBoxPreference = (CheckBoxPreference)getPreferenceScreen().findPreference(&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;KEY_ADVANCED_CHECKBOX_PREFERENCE);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onResume() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onResume();&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;// Start the force toggle&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 위에서 체크박스가 토글되도록 정의한 Runnable 쓰레드 객체의 실행을 시작합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mForceCheckBoxRunnable.run();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Set up a listener whenever a key changes&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 현재 프리퍼런스의 공유 프리퍼런스가 변경될때마다 아래에 정의된 onSharedPreferenceChanged&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 메소드를 호출하도록, 공유 프리퍼런스 객체의 registerOnSharedPreferenceChangeListener&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 메소드를 호출합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 그러면 현재 액티비티 내의 항목들의 값이 바뀔때마다, 변경리스너가 감시하여, onSharedPreferenceChanged &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 메소드가 호출하여, 그 메소드 안에서 토스트 메시지를 띄우게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onPause() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onPause();&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;// Unregister the listener whenever a key changes&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 현재 프리퍼런스 액티비티의 내의 공유 프리퍼런스의 값의 변경을 감시하는 리스너를 해제합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 즉 공유 프리퍼런스의 값의 변경을 더이상 감지하지 않습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 체크박스 토글 쓰레드의 실행을 해제합니다. 여기서 해제하지 않으면, 이 액티비티가 종료되어도&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 계속해서 실행되어, 오류가 발생하게 됩니다. &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mHandler.removeCallbacks(mForceCheckBoxRunnable);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;span class="style2" style="color: #acacac;"&gt;/*&lt;br /&gt;
* (non-Javadoc)&lt;br /&gt;
* @see android.content.SharedPreferences.OnSharedPreferenceChangeListener#onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String)&lt;br /&gt;
* 위에서 공유 프리퍼런스의 값의 변경을 감지하는 리스너를 등록하여, 값이 변경될때마다 이 메소드가&lt;br /&gt;
* 호출될 것입니다. 이 안에서 변경된 값을 가져와서 처리를 합니다.&lt;br /&gt;
* 여기서는 토스트 메시지를 띄우고 있습니다.&lt;br /&gt;
*/&lt;br /&gt;
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {&lt;br /&gt;
// Let's do something when my counter preference value changes&lt;br /&gt;
if (key.equals(KEY_MY_PREFERENCE)) {&lt;br /&gt;
Toast.makeText(this, "Thanks! You increased my count to "&lt;br /&gt;
+ sharedPreferences.getInt(key, 0), Toast.LENGTH_SHORT).show();&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;위의 프리퍼런스 액티비티의 레이아웃 파일을 /res/xml/advanced_preferences.xml 파일을 추가합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
원래 일반 액티비티의 레이아웃 파일은 /res/layout/레이아웃파일.xml 형태로 정의해서, onCreate 메소드에서&lt;br /&gt;
&lt;br /&gt;
setViewContent(..)식으로 레이아웃을 적용시키지만, 프리퍼런스 액티비티의 레이아웃 파일은 그냥 xml 리소스 파일로&lt;br /&gt;
&lt;br /&gt;
정의를 합니다. 내용은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2008 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;You may obtain a copy of the License at&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;a class="con_link" href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;!-- This is an advanced example showing the custom preference types and manually handling&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;preference clicks.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;프리퍼런스 액티비티에 출력될 프리퍼런스 항목들을 정의하는 xml 리소스 파일입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;일반 액티비티의 레이아웃 xml 과 같은 역할을 하는 xml 파일입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;여기서는 사용자 정의 프리퍼런스 항목과, 그 밑에 체크박스 프리퍼런스 항목 두개를 정의 하고 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;key 속성값을 이용하여, 이후에 이 항목들의 참조값을 얻어서 원하는 처리를 하실 수 있게됩니다. &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;PreferenceScreen&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;xmlns:android="&lt;/span&gt;&lt;a class="con_link" href="http://schemas.android.com/apk/res/android" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #acacac;"&gt;"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;!-- My custom preference type. This just replaces the actual widget&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;portion of the preference, if the whole preference wanted to be&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;replaced we would use the layout attribute instead of the widgetLayout&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;attribute. --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;사용자정의프리퍼런스객체패키지경로.MyPreference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:key="my_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:title="@string/title_my_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:summary="@string/summary_my_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:defaultValue="100" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;CheckBoxPreference&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:key="advanced_checkbox_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:title="@string/title_advanced_toggle_preference"&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:summaryOn="@string/summary_on_advanced_toggle_preference" &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;android:summaryOff="@string/summary_off_advanced_toggle_preference" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;/PreferenceScreen&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;이제 위의 프리퍼런스 액티비티에 표시될 사용자 정의 프리퍼런스 항목의 클래스를 원하시는 패키지 경로에 파일을 MyPreference.java 이름으로 추가해 주세요.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
이 프리퍼런스 항목 클래스는, 위의 프리퍼런스 액티비티의 리스트에서 첫번째 항목에 표시되는&lt;br /&gt;
&lt;br /&gt;
항목입니다. Preference 객체를 상속받아서 클래스를 구현하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
항목을 클릭시마다 정수값을 1씩 증가하는 처리를 하는 사용자 정의 프리퍼런스 항목을 구현하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span class="style2"&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* &lt;/span&gt;&lt;a class="con_link" href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;package 원하시는패키지명;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;import 원하시는패키지명.R;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;import android.content.Context;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.content.res.TypedArray;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.os.Parcel;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.os.Parcelable;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.preference.Preference;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.util.AttributeSet;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.view.View;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;import android.widget.TextView;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/**&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* This is an example of a custom preference type. The preference counts the&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* number of clicks it has received and stores/retrieves it from the storage.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 이 클래스는 프리퍼런스 항목클래스 입니다. Preference 클래스를 상속받아서 구현합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 프리퍼런스 항목은 프리퍼런스 액티비티의 리스트에 하나의 항목으로 배치가 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 기본적으로 체크박스, 에디트박스, 등의 프리퍼런스 항목이 있고,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 지금의 클래스처럼, 사용자가 직접 레이아웃등을 정의하고, 이렇게 그 동작등을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 정의하는 사용자 정의 프리퍼런스 항목을 만들 수 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public class MyPreference extends Preference {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 프리퍼런스 항목을 클릭할때마다 증가할 값을 저장할 정수변수입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;private int mClickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// This is the constructor called by the inflater&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 생성자로서, 이 내용은 프리퍼런스 액티비티에서 레이아웃을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 적용할때, 이 클래스로 정의된 프리퍼런스 객체들이 각각 이 생성자를&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 실행하게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public MyPreference(Context context, AttributeSet attrs) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super(context, attrs);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 레이아웃 xml 을 읽어와서, 이 프리퍼런스 항목의 레이아웃을 적용합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// /res/layout/preference_widget_mypreference.xml 파일을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 적용하고 있습니다. 텍스트뷰 하나가 정의되어 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 여기서 레이아웃은, 프리퍼런스 액티비티 안에는 리스트 형태로 각 프리퍼런스&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 항목들이 있구요, 이 프리퍼런스 항목은 제목과 내용이 기본적으로 표시되고,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 레이아웃이 적용되는 부분은, 제목과 내용 우측에 조그만 사각영역안에&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 레이아웃이 표시됩니다. 전체 프리퍼런스 항목이 표시되는 것이 아닙니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 체크박스 프리퍼런스 항목을 봐도, 우측에 체크박스 하나가 있고, 좌측에는&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 다른 프리퍼런스 항목들과 동일하게 제목 내용 등의 동일한 형태로 있습니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 즉 우측의 영역에서만 이 레이아웃이 적용됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;setWidgetLayoutResource(R.layout.preference_widget_mypreference);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onBindView(android.view.View)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 현재 프리퍼런스 항목이 레이아웃이 프리퍼런스 액티비티에 표시가 완료되는 시점에, &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 내부의 객체들을 참조하기 위한 뷰객체를 파라미터로 넘겨주게 됩니다. &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onBindView(View view) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onBindView(view);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Set our custom views inside the layout&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// preference_widget_mypreference.xml 레이아웃 파일의 텍스트 뷰객체를 가져와서,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 증가한 값을 뷰에 표시하고 있습니다. 이 프리퍼런스 항목의 제목과 내용의 우측에 보시면,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 숫자가 계속해서 증가할 것입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;final TextView myTextView = (TextView) view.findViewById(R.id.mypreference_widget);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (myTextView != null) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;myTextView.setText(String.valueOf(mClickCounter));&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onClick()&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 현재 프리퍼런스 항목을 클릭했을때, 호출되는 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 내부 정수변수의 값을 1증가합니다. 그리고 변경된 사실을 시스템에 알려서,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 값이 변경되었음을 알립니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onClick() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;int newValue = mClickCounter + 1;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Give the client a chance to ignore this change if they deem it&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// invalid&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// callChangeListener 메소드는 등록된 OnPreferenceChangeListener 메소드를&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 통해 값의 변했다고, 외부에 알리는 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 이 프리퍼런스 클래스 안에서는 등록된 OnPreferenceChangeListener 메소드가&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// 없으므로, 이 메소드는 동작을 안합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (!callChangeListener(newValue)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// They don't want the value to be set&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Increment counter&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = newValue;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Save to persistent storage (this method will make sure this&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// preference should be persistent, along with other useful checks)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// persistInt 메소드에 정수값을 넘겨서 공유된 프리퍼런스 영역에 영구저장하게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;persistInt(mClickCounter);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Data has changed, notify so UI can be refreshed!&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// notifyChanged 메소드는 UI를 갱신하기 위한 메소드로, 현재 프리퍼런스 항목클래스의&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// onBindView 메소드를 호출하게 됩니다. 즉 변경된 값이 텍스트 뷰에 표시되게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;notifyChanged();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onGetDefaultValue(android.content.res.TypedArray, int)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* /res/layout/preference_widget_mypreference.xml 파일에 정의된 프리퍼런스 항목의 레이아웃 항목의&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* defaultValue 속성값을 가져와서 디폴트값을 반환해 줍니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 설정한 값의 데이터 종류에 따라서 정수형 등의 원하는 형태로 디폴트값을 반환해 주면 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected Object onGetDefaultValue(TypedArray a, int index) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// This preference type's value type is Integer, so we read the default&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// value from the attributes as an Integer.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return a.getInteger(index, 0);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onSetInitialValue(boolean, java.lang.Object)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 프리퍼런스 항목의 초기값을 설정하기 위한 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* restoreValue 가 true 이면 레이아웃 xml 로부터 현재 프리퍼런스 항목이 표시될때 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 그리고 false 이면 반대로 레이아웃이 사라질때 호출됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 그래서 true 일때 초기값을 설정하고, false 일때는 공유 프리퍼런스 영역에 값을 영구 저장합니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onSetInitialValue(boolean restoreValue, Object defaultValue) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (restoreValue) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Restore state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = getPersistedInt(mClickCounter);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;} else {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Set state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;int value = (Integer) defaultValue;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = value;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;persistInt(value);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* (non-Javadoc)&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* @see android.preference.Preference#onSaveInstanceState()&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 아래 두 함수는, 스마트폰의 화면이 세로로 보다가 가로로 바뀌면, &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 현재 값을 잃어버리기 때문에, 그런 예기치 못한 상황에서 현재값을&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* 저장했다가, 다시 복구하는 두개의 메소드 입니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected Parcelable onSaveInstanceState() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;/*&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* Suppose a client uses this preference type without persisting. We&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* must save the instance state so it is able to, for example, survive&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* orientation changes.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;final Parcelable superState = super.onSaveInstanceState();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (isPersistent()) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// No need to save instance state since it's persistent&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return superState;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;// Save the instance state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;final SavedState myState = new SavedState(superState);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;myState.clickCounter = mClickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return myState;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;protected void onRestoreInstanceState(Parcelable state) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;if (!state.getClass().equals(SavedState.class)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Didn't save state for us in onSaveInstanceState&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onRestoreInstanceState(state);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Restore the instance state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;SavedState myState = (SavedState) state;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.onRestoreInstanceState(myState.getSuperState());&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;mClickCounter = myState.clickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;notifyChanged();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;/**&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* SavedState, a subclass of {@link BaseSavedState}, will store the state&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* of MyPreference, a subclass of Preference.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* &amp;lt;p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;* It is important to always call through to super methods.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;private static class SavedState extends BaseSavedState {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;int clickCounter;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public SavedState(Parcel source) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super(source);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Restore the click counter&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;clickCounter = source.readInt();&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;@Override&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public void writeToParcel(Parcel dest, int flags) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super.writeToParcel(dest, flags);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;// Save the click counter&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;dest.writeInt(clickCounter);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;public SavedState(Parcelable superState) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;super(superState);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;public static final Parcelable.Creator&amp;lt;SavedState&amp;gt; CREATOR =&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;new Parcelable.Creator&amp;lt;SavedState&amp;gt;() {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;public SavedState createFromParcel(Parcel in) {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;return new SavedState(in);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;span class="style2" style="color: #acacac;"&gt;public SavedState[] newArray(int size) {&lt;br /&gt;
return new SavedState[size];&lt;br /&gt;
}&lt;br /&gt;
};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;그리고 이 프리퍼런스 항목은 따로 레이아웃을 적용하고 있습니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
텍스트 뷰 하나를 정의하고 있습니다.&lt;br /&gt;
&lt;br /&gt;
/res/layout/preference_widget_mypreference.xml 파일을 추가하시고, 내용을 입력해주세요.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2006 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;Licensed under the Apache License, Version 2.0 (the "License");&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;you may not use this file except in compliance with the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a class="con_link" href="http://www.apache.org/licenses/LICENSE-2.0" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;Unless required by applicable law or agreed to in writing, software&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;distributed under the License is distributed on an "AS IS" BASIS,&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;See the License for the specific language governing permissions and&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;limitations under the License.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;--&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;!-- Custom preference type using a text view.&lt;br /&gt;
프리퍼런스 액티비티의 제일 위에 배치될 사용자 정의 프리퍼런스 항목인, MyPreference 클래스에서&lt;br /&gt;
사용할 레이아웃 xml 파일입니다. 이 레이아웃 내용이 프리퍼런스 액티비티에 하나의 프리퍼런스 &lt;br /&gt;
항목으로 출력이 됩니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;TextView xmlns:android="&lt;a class="con_link" href="http://schemas.android.com/apk/res/android" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;"&lt;br /&gt;
android:id="@+id/mypreference_widget" &lt;br /&gt;
android:layout_width="wrap_content"&lt;br /&gt;
android:layout_height="wrap_content"&lt;br /&gt;
android:layout_gravity="center_vertical"&lt;br /&gt;
android:layout_marginRight="6sp"&lt;br /&gt;
android:focusable="false"&lt;br /&gt;
android:clickable="false" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;/res/values/strings.xml 파일내용을 다음과 같이 설정해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&amp;lt;string name="hello"&amp;gt;Hello World, Test003!&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="app_name"&amp;gt;Test003&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;string name="title_my_preference"&amp;gt;My preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;string name="summary_my_preference"&amp;gt;This is a custom counter preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;string name="title_advanced_toggle_preference"&amp;gt;Haunted preference&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;string name="summary_on_advanced_toggle_preference"&amp;gt;I\'m on! :)&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;string name="summary_off_advanced_toggle_preference"&amp;gt;I\'m off! :(&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;string name="launch_preference_activity"&amp;gt;Launch PreferenceActivity&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;string name="counter_value_is"&amp;gt;The counter value is&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;string name="preferences_from_xml"&amp;gt;App/Preferences/1. Preferences from XML&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="launching_preferences"&amp;gt;App/Preferences/2. Launching preferences&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="preference_dependencies"&amp;gt;App/Preferences/3. Preference dependencies&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="default_values"&amp;gt;App/Preferences/4. Default values&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="preferences_from_code"&amp;gt;App/Preferences/5. Preferences from code&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;string name="advanced_preferences"&amp;gt;App/Preferences/6. Advanced preferences&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;AndroidManifest.xml 파일을 다음과 같이 설정해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android="&lt;a class="con_link" href="http://schemas.android.com/apk/res/android" target="_blank"&gt;&lt;span style="color: #acacac;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;"&lt;br /&gt;
package="korsoft.net.Test003"&lt;br /&gt;
android:versionCode="1"&lt;br /&gt;
android:versionName="1.0"&amp;gt;&lt;br /&gt;
&amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;!-- We will request access to the camera, saying we require a camera&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;of some sort but not one with autofocus capability. --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;uses-permission android:name="android.permission.CAMERA" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;uses-feature android:name="android.hardware.camera" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="style2"&gt;&lt;span style="color: #acacac;"&gt;&amp;lt;!-- 메인 액티비티 입니다. --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;activity android:name=".LaunchingPreferences" android:label="@string/launching_preferences"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;!-- 메인 액티비티에서 버튼을 클릭하면 뜨는 프리퍼런스 액티비티 입니다. --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;activity android:name=".AdvancedPreferences" android:label="@string/advanced_preferences"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;category android:name="android.intent.category.SAMPLE_CODE" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;/intent-filter&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #acacac;"&gt;&amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="style2" style="color: #acacac;"&gt;&amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
그럼 모두들 즐프하세요!! ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-2527641260017108762?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5L9eECLVdIE6kptKcIcGQUoW8TU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5L9eECLVdIE6kptKcIcGQUoW8TU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5L9eECLVdIE6kptKcIcGQUoW8TU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5L9eECLVdIE6kptKcIcGQUoW8TU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/QUFT7Ox1UEY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/2527641260017108762/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=2527641260017108762" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/2527641260017108762?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/2527641260017108762?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/QUFT7Ox1UEY/android_13.html" title="[android] 프리퍼런스 - 여러가지 기법들" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android_13.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YHQHs-fyp7ImA9WhZWEEg.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-746248598768866625</id><published>2011-05-10T11:12:00.000-07:00</published><updated>2011-05-10T11:12:11.557-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T11:12:11.557-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] xml로 정의한 프리퍼런스(저장소) 연동 레이아웃</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다. &lt;br /&gt;
이 샘플소스는 안드로이드 설치폴더에 android-sdk-windows\samples\android-8\ApiDemos 위치에 원본소스가 있습니다.&lt;br /&gt;
&lt;br /&gt;
안드로이드에서는 데이터를 저장하는 방식이, 디비/파일/프리퍼런스 이렇게&lt;br /&gt;
&lt;br /&gt;
세가지가 있습니다. 프리퍼런스는 저장방식을 편리하고 다양하고 여러방식들을&lt;br /&gt;
&lt;br /&gt;
제공하기 때문에, 상황에 따라서 프리퍼런스를 이용하여 저장하면, 편리하게&lt;br /&gt;
&lt;br /&gt;
데이터를 저장하고 불러오실 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
기존에는 화면 레이아웃을 모두 /res/layout/레이아웃파일명.xml 파일에다&lt;br /&gt;
&lt;br /&gt;
모두 설정을 해서 액티비티 클래스에서 가져다 적용을 했습니다.&lt;br /&gt;
&lt;br /&gt;
그러나 이번엔 좀 다른방식으로, 화면 레이아웃을 레이아웃xml 파일이 아닌&lt;br /&gt;
&lt;br /&gt;
Preference 저장소와 바로 연동되는 화면 레이아웃 xml 파일을 정의하여,&lt;br /&gt;
&lt;br /&gt;
액티비티를 띄운 이후부터, 모든 화면안의 항목의 선택이라든지, 기타 등등의&lt;br /&gt;
&lt;br /&gt;
선택액션들을 모두 자동으로 Preference 에 저장이 되는 방식의 액티비티를&lt;br /&gt;
&lt;br /&gt;
구현해 보겠습니다. 전에는 Preference 를 객체를 생성하여, 키/값 쌍으로&lt;br /&gt;
&lt;br /&gt;
저장했다가, 다시 객체를 생성하여 불러오는 식으로 일일이 수동으로 작업을&lt;br /&gt;
&lt;br /&gt;
했지만, 이번에는 일체 그런 코드작업 없이, 그냥 xml 파일 하나만 정의를&lt;br /&gt;
&lt;br /&gt;
해서 불러오기만 하면, 그 xml 파일에서 화면을 적용하고, 액티비티를 불러온&lt;br /&gt;
&lt;br /&gt;
후 모든 액션들이 자동으로 저장되었다가, 액티비티를 종료했다가 다시 띄워도,&lt;br /&gt;
&lt;br /&gt;
최종 상태를 계속 유지하는 방식의 액티비티를 구현하겠습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 그 Preference 화면 레이아웃 xml 파일을 정의하겠습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;/res/xml/preferences.xml 파일을 추가하고, 다음과 같이 입력합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
이 파일안에 화면 레이아웃정의도 모두 포함되어 있습니다.&lt;br /&gt;
&lt;br /&gt;
이전에 /res/layout/ 폴더안에 xml 파일을 만든것과는 달리, 이 파일은 일단&lt;br /&gt;
&lt;br /&gt;
/res/xml/ 폴더안에 xml 파일을 만듭니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2008 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;lt;!-- This is a primitive example showing the different types of preferences available. &lt;br /&gt;
루트태그는 &amp;lt;PreferenceScreen 입니다. 이 태그 안에 UI 항목들을 입력하시면 됩니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;PreferenceScreen&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:android="&lt;/span&gt;&lt;a href="http://schemas.android.com/apk/res/android"&gt;&lt;span style="color: #999999;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #999999;"&gt;"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
현재 레이아웃형태는 각 UI항목들을 나열하는 형태로 정의를 하고있는데요, &lt;br /&gt;
이 항목들은 리스트형태로 나오게 됩니다.&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
그런데 UI항목에 &amp;lt;PreferenceCategory 태그를 감싸게 되면, 그 항목의 윗쪽에 살짝 진한&lt;br /&gt;
색상으로 얇은 한줄이 생기고, 이 태그안에 있는 항목들과 다음 항목이 구분이 되게 됩니다. &lt;br /&gt;
말그대로 카테고리끼리 묶는 태그입니다.&lt;br /&gt;
이 태그의 title 속성문자열은, 그 얇은 구분 줄에 들어갈 문자열입니다.&lt;br /&gt;
즉 카테고리 제목이 입니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreferenceCategory&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/inline_preferences"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;!--&lt;br /&gt;
&amp;lt;CheckBoxPreference 태그는, 리스트 항목인데, 오른쪽에 체크박스 하나가 달려있습니다.&lt;br /&gt;
key속성은 이 항목을 구분짓는 고유키값입니다.&lt;br /&gt;
title속성은 이 항목의 제목에 나타날 문자열입니다.&lt;br /&gt;
summary속성은 이 항목의 제목 바로 밑에 작은 글자로 표시되는 요약내용 문자열입니다.&lt;br /&gt;
이후에 이 체크하고, 체크푸는 액션이 저장이 됩니다. 최종 체크상태가 저장됩니다.&lt;br /&gt;
다시 액티비티를 종료했다가 불러와도, 이 체크상태는 가장 최종상태로 복구됩니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CheckBoxPreference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="checkbox_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_toggle_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_toggle_preference" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/PreferenceCategory&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreferenceCategory&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/dialog_based_preferences"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;EditTextPreference 태그항목을 누르면, 에디트박스 하나가 있고, 밑에 확인/취소 버튼이&lt;br /&gt;
있는 다이얼로그가 뜹니다. 여기서 입력한 내용은, 최종상태가 자동으로 저장됩니다.&lt;br /&gt;
그리고 현재 액티비티가 종료됐다가 다시 시작하면, 그 최종 입력한 내용이 복구됩니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditTextPreference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="edittext_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_edittext_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_edittext_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:dialogTitle="@string/dialog_title_edittext_preference" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
이 리스트 항목을 클릭하면, 여러항목중에 단일선택할 수 있는 다이얼로그가 뜹니다.&lt;br /&gt;
entries 속성에는 @array 로 정의된 배열문자열이 리스트 선택항목들로 나오게 됩니다.&lt;br /&gt;
이 배열은 /res/values/arrays.xml 에 정의한 배열태그들중에 해당 name 값에 해당하는 배열입니다.&lt;br /&gt;
entries 속성의 배열은 리스트 항목의 타이틀 들입니다.&lt;br /&gt;
그리고 entryValues 의 배열은, 리스트 항목에서 선택했을때, 그 값이 Preference 에 자동저장될텐데,&lt;br /&gt;
그 때 저장될 실제 값은 타이틀 문자열이 아닌, entryValues 의 값이 저장되게 됩니다.&lt;br /&gt;
이후에 다른 액티비티에서, 이 액티비티에서 저장된 값들을 가져오게 될때, 이 entryValues 값으로&lt;br /&gt;
처리를 하셔야 합니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ListPreference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="list_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_list_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_list_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:entries="@array/entries_list_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:entryValues="@array/entryvalues_list_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:dialogTitle="@string/dialog_title_list_preference" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/PreferenceCategory&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreferenceCategory&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/launch_preferences"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- This PreferenceScreen tag serves as a screen break (similar to page break&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; in word processing). Like for other preference types, we assign a key&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; here so it is able to save and restore its instance state. --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
루트 &amp;lt;PreferenceScreen 태그 안에, 다시 &amp;lt;PreferenceScreen 서브태그로 들어간 형태입니다.&lt;br /&gt;
그리고 &amp;lt;PreferenceScreen 서브태그 안에 체크박스 항목이 있습니다.&lt;br /&gt;
이렇게 되면 &amp;lt;PreferenceScreen 서브태그의 title, summary 가 현재 리스트에서 하나의&lt;br /&gt;
항목으로 표시가 됩니다.그 안에 있는 체크박스가 현재 리스트에 체크박스항목으로 표시가&lt;br /&gt;
되는 것이 아닙니다. 그리고 현재 &amp;lt;PreferenceScreen 서브태그 항목을 클릭하게 되면,&lt;br /&gt;
현재 리스트화면이 사라지고, 이 &amp;lt;PreferenceScreen 서브태그 안에 있는 항목들의 리스트가&lt;br /&gt;
새로운 액티비티가 실행되듯이, 화면이 나오게 됩니다.&lt;br /&gt;
스마트폰 뒤로가기를 누르면, 다시 처음 리스트화면으로 돌아오게 됩니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreferenceScreen&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="screen_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_screen_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_screen_preference"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- You can place more preferences here that will be shown on the next screen. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
이 체크박스 항목이, 현재 리스트의 항목으로 나오지 않고, 새로운 화면으로 바뀌면서,&lt;br /&gt;
현재 &amp;lt;PreferenceScreen 서브태그 안의 모든 리스트가 나오게 됩니다.&lt;br /&gt;
부모 리스트의 자식 리스트 정도로 이해하시면 될 것 같습니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CheckBoxPreference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="next_screen_checkbox_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_next_screen_toggle_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_next_screen_toggle_preference" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/PreferenceScreen&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
위와 마찬가지로, 이 태그 안의 항목이 현재 리스트에 안나오고, &amp;lt;PreferenceScreen 태그의&lt;br /&gt;
title 속성과 summary 속성이 항목으로 나오고, 그 안에 있는 항목이 화면이 전환되면서,&lt;br /&gt;
실행이 됩니다. 이 태그 안에는 intent 라는 항목이 있습니다.&lt;br /&gt;
그러면 이 항목을 클릭하게 되면, 그 안에 intent 가 시스템으로 인텐트를 방송하게 됩니다.&lt;br /&gt;
그러면 해당하는 인텐트를 받아들이는 시스템 액티비티나 서비스가 이를 받아서 처리를 하게됩니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreferenceScreen&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_intent_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_intent_preference"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
이 인텐트가 방송되면, 웹뷰가 실행되면서, data속성의 주소값으로 웹사이트로 이동하는 동작을 합니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent android:action="android.intent.action.VIEW"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:data="&lt;/span&gt;&lt;a href="http://www.android.com/"&gt;&lt;span style="color: #999999;"&gt;http://www.android.com&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #999999;"&gt;" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/PreferenceScreen&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/PreferenceCategory&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PreferenceCategory&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/preference_attributes"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;!--&lt;br /&gt;
이 체크박스는, 밑에 있는 체크박스의 dependency 속성에, 현재 체크박스의 키값이&lt;br /&gt;
설정되어 있습니다. 이 속성으로 인하여, 현재 체크박스를 체크상태에 따라서 밑의 체크박스가&lt;br /&gt;
활성화/비활성화 됩니다.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CheckBoxPreference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="parent_checkbox_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_parent_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_parent_preference" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- The visual style of a child is defined by this styled theme attribute. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CheckBoxPreference&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:key="child_checkbox_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:dependency="parent_checkbox_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout="?android:attr/preferenceLayoutChild"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/title_child_preference"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:summary="@string/summary_child_preference" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/PreferenceCategory&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;/PreferenceScreen&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
이제 위와 같이 화면 레이아웃을 xml 파일로 정의를 하셨으면, 이제 액티비티 클래스 파일에서&lt;br /&gt;
&lt;br /&gt;
위의 xml 파일을 읽어들여서 적용을 해야합니다.&lt;br /&gt;
&lt;br /&gt;
그런데 지금까지와는 좀 방식이 다른점이 있습니다.&lt;br /&gt;
&lt;br /&gt;
지금까지는 액티비티 클래스를 Activity 클래스를 상속받아서, onCreate 등에서 setContentView(..)&lt;br /&gt;
&lt;br /&gt;
를 통해서, 화면 레이아웃을 적용시켰지만, 위의 xml 파일은 그런 방식이 아닌 PreferenceActivity&lt;br /&gt;
&lt;br /&gt;
클래스를 상속받아서 처리를 하게 됩니다. 그리고 setContentView(..) 대신에, addPreferencesFromResource&lt;br /&gt;
&lt;br /&gt;
메소드로 화면을 적용합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;public class 액티비티클래스명 extends PreferenceActivity {&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Load the preferences from an XML resource&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addPreferencesFromResource(R.xml.preferences);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;/res/values/strings.xml 파일에 다음과 같이 입력합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="hello"&amp;gt;Hello World, Test002!&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="app_name"&amp;gt;Test002&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="inline_preferences"&amp;gt;In-line preferences&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_based_preferences"&amp;gt;Dialog-based preferences&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="launch_preferences"&amp;gt;Launch preferences&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="preference_attributes"&amp;gt;Preference attributes&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_toggle_preference"&amp;gt;Toggle preference&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_toggle_preference"&amp;gt;This is a toggle button&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_edittext_preference"&amp;gt;Edit text preference&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_edittext_preference"&amp;gt;An example that uses an edit text dialog&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_title_edittext_preference"&amp;gt;Enter your favorite animal&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_list_preference"&amp;gt;List preference&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_list_preference"&amp;gt;An example that uses a list dialog&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="dialog_title_list_preference"&amp;gt;Choose one&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_screen_preference"&amp;gt;Screen preference&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_screen_preference"&amp;gt;Shows another screen of preferences&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_next_screen_toggle_preference"&amp;gt;Toggle preference&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_next_screen_toggle_preference"&amp;gt;Preference that is on the next screen but same hierarchy&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_intent_preference"&amp;gt;Intent preference&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_intent_preference"&amp;gt;Launches an Activity from an Intent&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_parent_preference"&amp;gt;Parent toggle&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_parent_preference"&amp;gt;This is visually a parent&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="title_child_preference"&amp;gt;Child toggle&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="summary_child_preference"&amp;gt;This is visually a child&amp;lt;/string&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="preferences_from_xml"&amp;gt;App/Preferences/1. Preferences from XML&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="launching_preferences"&amp;gt;App/Preferences/2. Launching preferences&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="preference_dependencies"&amp;gt;App/Preferences/3. Preference dependencies&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="default_values"&amp;gt;App/Preferences/4. Default values&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="preferences_from_code"&amp;gt;App/Preferences/5. Preferences from code&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="advanced_preferences"&amp;gt;App/Preferences/6. Advanced preferences&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;/res/values/arrays.xml 파일을 추가하시고, 다음과 같이 입력합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Used in app/menu examples --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string-array name="entryvalues_list_preference"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;alpha&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;beta&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;charlie&amp;lt;/item&amp;gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/string-array&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Used in app/menu examples --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string-array name="entries_list_preference"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Alpha Option 01&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Beta Option 02&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item&amp;gt;Charlie Option 03&amp;lt;/item&amp;gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/string-array&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;이제 마지막으로 AndroidManifest.xml 파일에 다음과 같이 입력합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android="&lt;/span&gt;&lt;a href="http://schemas.android.com/apk/res/android"&gt;&lt;span style="color: #999999;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #999999;"&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package="패키지명.."&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode="1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName="1.0"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".PreferencesFromXml" android:label="@string/preferences_from_xml"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
그럼 모두들 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-746248598768866625?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mcDXe9-WkREsSyXmJ5_StdaUNuk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mcDXe9-WkREsSyXmJ5_StdaUNuk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mcDXe9-WkREsSyXmJ5_StdaUNuk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mcDXe9-WkREsSyXmJ5_StdaUNuk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/B9ejBmMOfsc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/746248598768866625/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=746248598768866625" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/746248598768866625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/746248598768866625?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/B9ejBmMOfsc/android-xml_10.html" title="[android] xml로 정의한 프리퍼런스(저장소) 연동 레이아웃" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcEQHk9eCp7ImA9WhZWEEk.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-1976534920387884887</id><published>2011-05-10T08:21:00.000-07:00</published><updated>2011-05-10T08:40:01.760-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T08:40:01.760-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] 상태바 알림 표시</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다. ^^&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
안드로이드 설치폴더에 android-sdk-windows\samples\android-8\ApiDemos 위치에 원본소스가 있습니다.&lt;br /&gt;
&lt;br /&gt;
각종 알림을 옵션별로 실행하는 예제입니다.&lt;br /&gt;
&lt;br /&gt;
알림바에 아이콘만 나오게 하고, 제목도 같이 나오게 하고, 진동/빛/사운드를 같이 발생시키기도 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;먼저 가장먼저 시작되는 액티비티 클래스인, StatusBarNotifications.java 파일을&lt;br /&gt;
원하시는 위치에 만들어 주시고 다음과 같이 입력합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;strong&gt;&lt;span style="color: black;"&gt;StatusBarNotifications.java&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;/*&lt;br /&gt;
&amp;nbsp;* Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;* you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;* You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;* distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;* See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;* limitations under the License.&lt;br /&gt;
&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;package 패키지경로;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;import 패키지경로.R;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;import android.app.Activity;&lt;br /&gt;
import android.app.Notification;&lt;br /&gt;
import android.app.NotificationManager;&lt;br /&gt;
import android.app.PendingIntent;&lt;br /&gt;
import android.content.Intent;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
import android.widget.RemoteViews;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;/**&lt;br /&gt;
&amp;nbsp;* Demonstrates adding notifications to the status bar&lt;br /&gt;
&amp;nbsp;* 앱을 실행하면, 처음에 뜨는 액티비티 입니다.&lt;br /&gt;
&amp;nbsp;* 화면의 첫번째 줄에는, 아이콘만 화면상단의 알림바에 표시를 하는 버튼이 세개가 있습니다.&lt;br /&gt;
&amp;nbsp;* 화면의 두번째 줄에는, 아이콘과 텍스트를 알림바에 표시를 하는 버튼이 세가지가 있습니다.&lt;br /&gt;
&amp;nbsp;* 화면의 서번째 줄에는, 아이콘과 텍스트를 알림바에 표시하고, 알림바를 밑으로 드래그한&lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp; 알림 상세화면에서, 알림항목에 기본형태의 알림항목이 아닌, 사용자가 정의한 레이아웃을&lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp; 적용한 알림항목을 표시하게 됩니다. &lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp; 두번째 줄에서는, 메뉴항목이 기본적으로 아이콘/제목/내용 이 세가지가 표시되는 형식입니다.&lt;br /&gt;
&amp;nbsp;* 화면의 네번째 줄에는, 소리를 내면서 알림을 표시하는 버튼과, 진동을 하면서 알림을 표시하는&lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp; 버튼, 그리고 소리를 내면서 진동을 표시하는 버튼이 있습니다.&lt;br /&gt;
&amp;nbsp;* 그리고 마지막줄에 clear~~ 버튼을 누르면, 위에서 생성했던 알림을 알림바에서 삭제를 합니다.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class StatusBarNotifications extends Activity {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림매니저 객체변수입니다.&lt;br /&gt;
&amp;nbsp;private NotificationManager mNotificationManager;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use our layout id for a unique identifier&lt;br /&gt;
&amp;nbsp;//생성할 알림의 고유아이디값으로 status_bar_notifications 레이아웃의 리소스&lt;br /&gt;
&amp;nbsp;//아이디 값으로 설정합니다. 이후에 알림항목을 클릭했을때, 반투명 배경의 새로 뜨는 &lt;br /&gt;
&amp;nbsp;//NotificationDisplay 액티비티에서, 알람을 취소시키기 위해서, 이 아이디값을&lt;br /&gt;
&amp;nbsp;//사용하게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static int MOOD_NOTIFICATIONS = R.layout.status_bar_notifications;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.status_bar_notifications);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button button;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Get the notification manager serivce.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //시스템으로부터 알림매너저 객체를 가져옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //버튼객체를 클릭했을때, 알림을 발생시키는 함수인, setMood 함수를 호출합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //R.drawable.stat_happy 는 아이콘 리소스 아이디 입니다.(/res/drawable-hdpi/ 폴더에 위치)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //R.string.status_bar_notifications_happy_message 는 알림바에 표시될 제목문자열 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //마지막 true / false 인자는, 알림바에 제목을 표시할지 / 안할지 여부를 결정하는 값입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //여기서는 false 이므로 알림바에 제목문자열이 나오지 않고, 그냥 아이콘만 표시가 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.happy);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMood(R.drawable.stat_happy, R.string.status_bar_notifications_happy_message,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.neutral);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMood(R.drawable.stat_neutral, R.string.status_bar_notifications_ok_message,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.sad);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMood(R.drawable.stat_sad, R.string.status_bar_notifications_sad_message, false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //아래 세개의 버튼에서는, setMood 함수의 마지막 인자가 true를 넘기기 때문에,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림바에 아이콘과 제목을 같이 출력을 합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.happyMarquee);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMood(R.drawable.stat_happy, R.string.status_bar_notifications_happy_message,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.neutralMarquee);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMood(R.drawable.stat_neutral, R.string.status_bar_notifications_ok_message, true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.sadMarquee);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMood(R.drawable.stat_sad, R.string.status_bar_notifications_sad_message, true);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //아래 세개의 버튼클릭 메서드에서는, setMoodView 함수를 호출하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이 메소드는, 알림바에 아이콘과 제목을 표시하고, 알림바를 밑으로 드래그하여 확장시켜보면,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림항목이 일반적인 알림항목과 다르게, 사용자정의 레이아웃을 적용한 상태인 것을 알 수 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // /res/layout/status_bar_balloon.xml 레이아웃 파일을 적용이 되었습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.happyViews);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMoodView(R.drawable.stat_happy, R.string.status_bar_notifications_happy_message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.neutralViews);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMoodView(R.drawable.stat_neutral, R.string.status_bar_notifications_ok_message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.sadViews);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setMoodView(R.drawable.stat_sad, R.string.status_bar_notifications_sad_message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //클릭했을때 기본사운드와 함께 알림을 발생시키는 버튼입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.defaultSound);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setDefault(Notification.DEFAULT_SOUND);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //클릭했을때 기본진동과 함께 알림을 발생시키는 버튼입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.defaultVibrate);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setDefault(Notification.DEFAULT_VIBRATE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //클릭했을때 기본진동과 기본사운드를 함께 알림을 발생시키는 버튼입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.defaultAll);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setDefault(Notification.DEFAULT_ALL);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위 버튼들에서 발생시킨 알림을 고유식별자인 R.layout.status_bar_notifications&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //값을 넘겨서, 알림을 해제시킵니다. 알림바에서 사라집니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.clear);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(new Button.OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNotificationManager.cancel(R.layout.status_bar_notifications);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림을 발생시킬때 사용할 인텐트를 설정하고, 반환합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //moodId 인자는, 알림바에 표시할 아이콘 이미지의 리소스 아이디값입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private PendingIntent makeMoodIntent(int moodId) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The PendingIntent to launch our activity if the user selects this&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // notification.&amp;nbsp; Note the use of FLAG_UPDATE_CURRENT so that if there&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // is already an active matching pending intent, we will update its&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // extras to be the ones passed in here.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 인텐트에 추가값을 .putExtra("moodimg", moodId) 이렇게 심어서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 이후에 다른 액티비티에서 이 인텐트를 넘겨받아서, 저장한 값을&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 불러와서 처리를 하게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 그리고 인텐트를 셋팅하는데, NotificationDisplay 클래스를 설정하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 이 설정은, 알림바를 펼쳤을때, 알림항목을 클릭했을때, 뜨는 액티비티의&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 클래스를 설정하는 것입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PendingIntent contentIntent = PendingIntent.getActivity(this, 0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Intent(this, NotificationDisplay.class)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .putExtra("moodimg", moodId),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PendingIntent.FLAG_UPDATE_CURRENT);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return contentIntent;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 알림을 생성하여, 알림바에&amp;nbsp; 알림을 표시하게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * moodId 인자는 알림바에 표시될 아이콘 이미지의 리소스 아이디값(R.drawable.이미지명)입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * showTicker 는 true / false 값으로, 알림바에 제목문자열을 표시할지 안할지를 결정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void setMood(int moodId, int textId, boolean showTicker) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // In this sample, we'll use the same text for the ticker and the expanded notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 알림바를 펼쳤을때 나오는 알림항목의 내용부분에 들어갈 텍스트 문자열값입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 여기서는 제목과 동일하게 셋팅하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharSequence text = getText(textId);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // choose the ticker text&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림바에 표시할 제목 문자열을 showTicker 변수값에 따라서 선택적으로 셋팅하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String tickerText = showTicker ? getString(textId) : null;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the icon, scrolling text and timestamp&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림 객체를 생성합니다. 알림바에 표시될 아이콘과 제목문자열을 설정하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Notification notification = new Notification(moodId, tickerText,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.currentTimeMillis());&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the info for the views that show in the notification panel.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림항목에 표시될 제목문자열, 내용문자열, 클릭시 실행될 액티비티 정보가 담긴,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // PendingIntent 객체를 셋팅하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림항목을 클릭하면, NotificationDisplay 클래스 액티비티가 뜹니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 배경이 반투명하고, 정중앙에 이미지 버튼 하나 있는 액티비티 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification.setLatestEventInfo(this, getText(R.string.status_bar_notifications_mood_title),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text, makeMoodIntent(moodId));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send the notification.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // We use a layout id because it is a unique number.&amp;nbsp; We use it later to cancel.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림 매니저 객체의 notify 메소드에 알림 고유아이디 값인 status_bar_notifications 레이아웃의&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 리소스 아이디 정수값을 넘기고, 위에서 설정한 알림객체를 넘겨서, 실제로 알림을&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림바에 발생시킵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNotificationManager.notify(R.layout.status_bar_notifications, notification);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * setMood 와 같이 알림을 발생시킵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 차이점은, 이 메소드는, 알림바를 펼쳤을때 나오는 알림항목의 레이아웃이,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 기본적인 제목/내용/아이콘 식으로 출력되는 것이 아닌,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 사용자가 정의한 레이아웃을 적용한 알림항목이 출력됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 여기서는 status_bar_balloon.xml 레이아웃을 적용시키고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * 글자색이 흰색이고~~~...(자세한건 레이아웃 파일을 보시면~~ ㅎ)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void setMoodView(int moodId, int textId) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Instead of the normal constructor, we're going to use the one with no args and fill&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // in all of the data ourselves.&amp;nbsp; The normal one uses the default layout for notifications.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // You probably want that in most cases, but if you want to do something custom, you&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // can set the contentView field to your own RemoteViews object.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 알림객체를 생성 합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Notification notif = new Notification();&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This is who should be launched if the user selects our notification.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 아이콘 이미지 리소스 아이디인 moodId와 알림항목을 클릭시 실행될 액티비티 클래스가&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 셋팅된 PendingIntent 객체를 setMood 메소드와는 다른 방식인,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // contentIntent 속성값으로 셋팅하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notif.contentIntent = makeMoodIntent(moodId);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // In this sample, we'll use the same text for the ticker and the expanded notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림바에 표시될 제목을, 알림객체의 tickerText 속성값을 셋팅하는 방식으로 설정하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharSequence text = getText(textId);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notif.tickerText = text;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the icon for the status bar&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림바에 표시될 아이콘 이미지를, 이미지 리소스아이디값을 알림객체의 icon 속성값에 설정하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notif.icon = moodId;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // our custom view&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림바를 펼쳤을때 나오는 알림항목을 사용자정의 레이아웃으로 적용하기 위해,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // RemoteViews 객체를 생성하여, 생성자에서 status_bar_balloon 레이아웃 리소스 아이디를 넘기고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.status_bar_balloon);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //status_bar_balloon 레이아웃 안의 아이디가 text 인 TextView 객체에 알림제목을 설정하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentView.setTextViewText(R.id.text, text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //status_bar_balloon 레이아웃 안의 아이디가 icon 인 ImageView 객체에 아이콘 이미지 리소스 아이디 값을 설정&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentView.setImageViewResource(R.id.icon, moodId);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림객체의 contentView 속성에 이에서 설정한 RemoteViews 객체를 설정하여, 사용자 정의 레이아웃 적용시킵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notif.contentView = contentView;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // we use a string id because is a unique number.&amp;nbsp; we use it later to cancel the&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림매니저 객체의 notify 메소드에 알림고유아이디인 status_bar_notifications 레이아웃 리소스 아이디값을&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 넘기고(이후에 취소할때 이 값을 취소할 알림의 아이디값으로 넘김), 위에서 설정한 알림 객체를&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 넘겨서, 알림을 발생시키게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNotificationManager.notify(R.layout.status_bar_notifications, notif);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //기본형태의 알림을 발생시키는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림을 발생시킬때, defaults의 값에 따라서, 진동/빛/사운드를 같이 발생시키게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Notification.DEFAULT_ALL : 현재 하드웨어 지원하는 모든것&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Notification.DEFAULT_VIBRATE : 진동&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Notification.DEFAULT_SOUND : 사운드&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp; Notification.DEFAULT_LIGHTS : 빛&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //이 함수에서는, 위의 함수들과 달리, 알림항목을 클릭하면, NotificationDisplay 클래스&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //액티비티가 실행이 안되고, 현재 액티비티가 실행되어, 다시 돌아오게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void setDefault(int defaults) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This method sets the defaults on the notification before posting it.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This is who should be launched if the user selects our notification.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 현재 액티비티 클래스를 설정하는 인텐트를 설정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 알림 항목을 클릭하면 현재 액티비티로 되돌아오게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PendingIntent contentIntent = PendingIntent.getActivity(this, 0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Intent(this, StatusBarNotifications.class), 0);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // In this sample, we'll use the same text for the ticker and the expanded notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림바 제목, 알림항목 내용 문자열이 동일합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharSequence text = getText(R.string.status_bar_notifications_happy_message);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림객체를 생성합니다. 아이콘이미지, 제목, 발생시간을 설정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final Notification notification = new Notification(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.drawable.stat_happy,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the icon for the status bar&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the text to display in the ticker&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.currentTimeMillis()); // the timestamp for the notification&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림객체에 알림정보를 설정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //제목,내용, 위에서 설정한 알림항목 클릭시 실행할 액티비티정보를 설정한 PendingIntent를&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //넘기고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification.setLatestEventInfo(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the context to use&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getText(R.string.status_bar_notifications_mood_title),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the title for the notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the details to display in the notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; contentIntent);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the contentIntent (see above)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //인자로 넘어온, 진동/빛/모두/사운드 옵션을 설정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification.defaults = defaults;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: grey;"&gt;&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림 고유아이디로, status_bar_notifications 레이아웃 리소스 아이디 정수값을 넘기고,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 설정한 알림객체를 넘겨서 알림을 발생시킵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNotificationManager.notify(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.layout.status_bar_notifications, // we use a string id because it is a unique&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // number.&amp;nbsp; we use it later to cancel the&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;원하는 위치에, 알림항목을 클릭했을때, 뜨는 액티비티 클래스인 NotificationDisplay.java 파일을 원하는 위치에 생성해 줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;NotificationDisplay.java&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;/*&lt;br /&gt;
&amp;nbsp;* Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;* you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;* You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;* distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;* See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;* limitations under the License.&lt;br /&gt;
&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;package 패키지경로;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;// Need the following import to get access to the app resources, since this&lt;br /&gt;
// class is in a sub-package.&lt;br /&gt;
import korsoft.net.Test001.R;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;import android.app.Activity;&lt;br /&gt;
import android.app.NotificationManager;&lt;br /&gt;
import android.content.Intent;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.Gravity;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.WindowManager;&lt;br /&gt;
import android.widget.ImageButton;&lt;br /&gt;
import android.widget.LinearLayout;&lt;br /&gt;
import android.widget.RelativeLayout;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;/**&lt;br /&gt;
&amp;nbsp;* Activity used by StatusBarNotification to show the notification to the user.&lt;br /&gt;
&amp;nbsp;* 부모 액티비티에서 알림발생버튼을 누르면, 알림이 발생하고, 스마트폰 화면 상단의&lt;br /&gt;
&amp;nbsp;* 알림바를 밑으로 드래그 해서 열린 창에서, 알림항목을 누르면 현재 액티비티가 &lt;br /&gt;
&amp;nbsp;* 반투명 배경으로 해서, 중앙에 이미지 버튼이 한개인 상태로 뜨게 됩니다.&lt;br /&gt;
&amp;nbsp;* 이 액티비티는 xml 레이아웃 파일이 아닌, onCreate 메소드에서 동적으로&lt;br /&gt;
&amp;nbsp;* 레이아웃 객체를 생성하고, 세부내용들을 설정하여, 액티비티에 레이아웃을 적용시킵니다.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class NotificationDisplay extends Activity implements View.OnClickListener {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Initialization of the Activity after it is first created.&amp;nbsp; Must at least&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * call &lt;/span&gt;&lt;a href="mailto:%7B@link"&gt;&lt;span style="color: #999999;"&gt;{@link&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #999999;"&gt; android.app.Activity#setContentView setContentView()} to&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * describe what is to be displayed in the screen.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle icicle) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Be sure to call the super class.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(icicle);&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Have the system blur any windows behind this one.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //현재 액티비티를 반투명하게 설정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //즉 아래에서 레이아웃을 배치하면, 그 뒤에 배경이 단색이 아닌&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //반투명하게 밑에 깔린 프로그램 화면들이 보이게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WindowManager.LayoutParams.FLAG_BLUR_BEHIND);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //상대적 배치 레이아웃 컨테이너객체를 만듭니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //지금까지 xml 로 레이아웃을 정의하여, 액티비티에 적용을 했지만,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //여기서는 xml 이 아닌, 동적으로 코드로 만들어서 현재 액티비티에 적용합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RelativeLayout container = new RelativeLayout(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이미지 버튼객체를 생성하고, 부모 액티비티에서 인텐트를 통해 아이콘 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ImageButton button = new ImageButton(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //리소스 아이디값을 넘긴것을, 받아와서 이미지 버튼객체에 셋팅하고,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setImageResource(getIntent().getIntExtra("moodimg", 0));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //현재 액티비티에 셋팅된 클릭시 처리 핸들러 메소드를 현재 버튼을&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //눌렀을때 처리하는 클릭 핸들러 메소드로 셋팅해줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //현재 액티비티가 View.OnClickListener 를 구현(implements)하고 있기때문에&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //클릭처리핸들러로 셋팅할 수 있게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //가로, 세로 사이즈가 화면에 100%로 맞춤&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RelativeLayout.LayoutParams.WRAP_CONTENT,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RelativeLayout.LayoutParams.WRAP_CONTENT);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //내용들을 화면의 수평/수직상으로 중앙에 배치&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lp.addRule(RelativeLayout.CENTER_IN_PARENT);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위의 이미지버튼을 현재 컨테이너에 추가합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; container.addView(button, lp);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 xml이 아닌, 동적으로 정의한 레이아웃 컨테이너를&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //현재 액티비티에 적용합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(container);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The user has confirmed this notification, so remove it.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//알림매니저 객체를 시스템으로부터 가져와서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//status_bar_notifications 레이아웃 리소스 아이디 고유정수값&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//(알림생성시 사용했던 알림ID값)을 인자로 넘겨서, 해당 알림을&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;//해제하게 됩니다.(cancel메소드)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((NotificationManager) getSystemService(NOTIFICATION_SERVICE))&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .cancel(R.layout.status_bar_notifications);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Pressing on the button brings the user back to our mood ring,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // as part of the api demos app.&amp;nbsp; Note the use of NEW_TASK here,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // since the notification display activity is run as a separate task.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //그리고 다시 부모액티비티인 StatusBarNotifications 클래스 액티비티를&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //띄우고, 현재 액티비티를 닫습니다.(finish()메소드)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(this, StatusBarNotifications.class);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intent.setAction(Intent.ACTION_MAIN);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startActivity(intent);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // We're done.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finish();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;/res/drawable-hdpi/ 폴더안에 stat_happy.png, stat_neutral.png, stat_sad.png 파일을 안드로이드 sdk 샘플폴더에서 복사합니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;/res/layout/ 폴더안에 다음 두개의 xml 파일을 추가해줍니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;status_bar_balloon.xml&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;알림항목에 적용될 사용자 정의 레이아웃 xml 파일입니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;LinearLayout xmlns:android="&lt;/span&gt;&lt;a href="http://schemas.android.com/apk/res/android"&gt;&lt;span style="color: #999999;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #999999;"&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:baselineAligned="false"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:gravity="center_vertical"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;ImageView android:id="@+id/icon"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginRight="10dip" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView android:id="@+id/text"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:textColor="#ffffffff" /&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;status_bar_notifications.xml&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;메인 액티비티 레이아웃 파일입니다. 각 알림발생 버튼들을 설정하고 있습니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;ScrollView xmlns:android="&lt;/span&gt;&lt;a href="http://schemas.android.com/apk/res/android"&gt;&lt;span style="color: #999999;"&gt;http://schemas.android.com/apk/res/android&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #999999;"&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="match_parent"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="vertical"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_icons_only" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/happy"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/neutral"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_ok" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/sad"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_sad" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_icons_and_marquee" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/happyMarquee"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/neutralMarquee"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_ok" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/sadMarquee"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_sad" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_remote_views" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/happyViews"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/neutralViews"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_ok" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/sadViews"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_sad" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_defaults" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/defaultSound"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_default_sound" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/defaultVibrate"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_default_vibrate" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/defaultAll"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_default_all" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button android:id="@+id/clear"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_clear" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;/ScrollView&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;/res/values/ 폴더 밑에 다음 파일들을 설정해 줍니다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;strings.xml&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="hello"&amp;gt;Hello World, Test001!&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="app_name"&amp;gt;Test001&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_icons_only"&amp;gt;Icons only&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_icons_and_marquee"&amp;gt;Icons and marquee&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_remote_views"&amp;gt;Use remote views in balloon&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_defaults"&amp;gt;Use default values where applicable&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_happy"&amp;gt;:-)&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_ok"&amp;gt;:-|&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_sad"&amp;gt;:-(&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_happy_message"&amp;gt;I am happy&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_ok_message"&amp;gt;I am ok&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_sad_message"&amp;gt;I am sad&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_clear"&amp;gt;Clear notification&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_mood_title"&amp;gt;Mood ring&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_default_sound"&amp;gt;Sound&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_default_vibrate"&amp;gt;Vibrate&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_default_all"&amp;gt;All&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;colors.xml&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;lt;drawable name="screen_background_black"&amp;gt;#ff000000&amp;lt;/drawable&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;drawable name="translucent_background"&amp;gt;#e0000000&amp;lt;/drawable&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;drawable name="transparent_background"&amp;gt;#00000000&amp;lt;/drawable&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;styles.xml&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;액티비티의 배경을 투명하게 하기위한 설정값을 설정하고 있습니다.&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;&lt;span style="color: #999999;"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Base application theme is the default theme. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style name="Theme" parent="android:Theme"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- Variation on our application theme that has a transparent&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; background; this example completely removes the background,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; allowing the activity to decide how to composite.&amp;nbsp; Also here we&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; force the translucency ourself rather than making use of the built-in&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; translucent theme. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style name="Theme.Transparent"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name="android:windowIsTranslucent"&amp;gt;true&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name="android:windowAnimationStyle"&amp;gt;@android:style/Animation.Translucent&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name="android:windowBackground"&amp;gt;@drawable/transparent_background&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name="android:windowNoTitle"&amp;gt;true&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name="android:colorForeground"&amp;gt;#fff&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;/resources&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&lt;span style="color: black;"&gt;&lt;strong&gt;마지막으로 AndroidManifest.xml 파일을 다음과 같이 설정합니다.&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package="패키지 경로"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode="1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName="1.0"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 진동을 사용하기 위한 권한설정 --&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-permission android:name="android.permission.VIBRATE" /&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".NotificationDisplay"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:theme="@style/Theme.Transparent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:taskAffinity=""&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:excludeFromRecents="true"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:noHistory="true"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".StatusBarNotifications"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:label="App/Notification/Status Bar"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:launchMode="singleTop"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #999999;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
그럼 모두들 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-1976534920387884887?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OXgeoJS96scS_8smGXZzs4hQgZQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OXgeoJS96scS_8smGXZzs4hQgZQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OXgeoJS96scS_8smGXZzs4hQgZQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OXgeoJS96scS_8smGXZzs4hQgZQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/5r2o7GtD064" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/1976534920387884887/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=1976534920387884887" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/1976534920387884887?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/1976534920387884887?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/5r2o7GtD064/android_10.html" title="[android] 상태바 알림 표시" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEUGSHs5fCp7ImA9WhZXGEU.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-334717908197591649</id><published>2011-05-08T13:23:00.001-07:00</published><updated>2011-05-08T13:23:49.524-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-08T13:23:49.524-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] 주기적으로 알림을 발생하는 서비스</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다. ^^&lt;br /&gt;
&lt;br /&gt;
메인 액티비티가 실행되면, 버튼이 두개가 있습니다.&lt;br /&gt;
&lt;br /&gt;
하나는 서비스를 시작하는 버튼이고,&lt;br /&gt;
&lt;br /&gt;
다른 하나는 서비스를 종료하는 버튼입니다.&lt;br /&gt;
&lt;br /&gt;
서비스가 시작되면, 5초간격으로 알림바의 상태가 바뀌게&lt;br /&gt;
&lt;br /&gt;
됩니다. 상태는 세가지이고, 1분동안 세가지의 상태가&lt;br /&gt;
&lt;br /&gt;
총 네번 바뀌게 됩니다.&lt;br /&gt;
&lt;br /&gt;
먼저 메인 액티비티 클래스 파일인 NotifyingController.java&lt;br /&gt;
&lt;br /&gt;
파일을 src 폴더 밑에 원하는 패키지 경로 밑에 추가합니다.&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&amp;nbsp;* Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;* you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;* You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;* distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;* See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;* limitations under the License.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
&lt;br /&gt;
package 만드신패키지경로;&lt;br /&gt;
&lt;br /&gt;
// Need the following import to get access to the app resources, since this&lt;br /&gt;
// class is in a sub-package.&lt;br /&gt;
import 만드신패키지경로.R;&lt;br /&gt;
&lt;br /&gt;
import android.app.Activity;&lt;br /&gt;
import android.content.ComponentName;&lt;br /&gt;
import android.content.Intent;&lt;br /&gt;
import android.os.Bundle;&lt;br /&gt;
import android.view.View;&lt;br /&gt;
import android.view.View.OnClickListener;&lt;br /&gt;
import android.widget.Button;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* Controller to start and stop a service. The serivce will update a status bar&lt;br /&gt;
&amp;nbsp;* notification every 5 seconds for a minute.&lt;br /&gt;
&amp;nbsp;* 버튼 2개가 있고, 하나는 서비스를 시작하고&lt;br /&gt;
&amp;nbsp;* 하나는 서비스를 종료합니다.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class NotifyingController extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.notifying_controller);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //시작버튼입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button button = (Button) findViewById(R.id.notifyStart);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(mStartListener);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //종료버튼입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button) findViewById(R.id.notifyStop);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(mStopListener);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private OnClickListener mStartListener = new OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //NotifyingService 클래스가 서비스를 정의한 클래스입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //서비스를 시작하게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startService(new Intent(NotifyingController.this, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NotifyingService.class));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private OnClickListener mStopListener = new OnClickListener() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onClick(View v) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //시작된 서비스를 종료시키게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stopService(new Intent(NotifyingController.this, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NotifyingService.class));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
이제 알림을 주기적으로 발생시키는 서비스 클래스를 정의한 NotifyingService.java&lt;br /&gt;
&lt;br /&gt;
파일을 원하시는 패키지 경로에 추가해주시고, 다음과 같이 입력하시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&amp;nbsp;* Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;* you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;* You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;*&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br /&gt;
&amp;nbsp;*&lt;br /&gt;
&amp;nbsp;* Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;* distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;* See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;* limitations under the License.&lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
package 해당패키지경로;&lt;br /&gt;
// Need the following import to get access to the app resources, since this&lt;br /&gt;
// class is in a sub-package.&lt;br /&gt;
import 해당패키지경로.R;&lt;br /&gt;
import android.app.Notification;&lt;br /&gt;
import android.app.NotificationManager;&lt;br /&gt;
import android.app.PendingIntent;&lt;br /&gt;
import android.app.Service;&lt;br /&gt;
import android.content.Intent;&lt;br /&gt;
import android.os.Binder;&lt;br /&gt;
import android.os.ConditionVariable;&lt;br /&gt;
import android.os.IBinder;&lt;br /&gt;
import android.os.Parcel;&lt;br /&gt;
import android.os.RemoteException;&lt;br /&gt;
import android.widget.RemoteViews;&lt;br /&gt;
/**&lt;br /&gt;
&amp;nbsp;* This is an example of service that will update its status bar balloon &lt;br /&gt;
&amp;nbsp;* every 5 seconds for a minute.&lt;br /&gt;
&amp;nbsp;* &lt;br /&gt;
&amp;nbsp;*/&lt;br /&gt;
public class NotifyingService extends Service {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Use a layout id for a unique identifier&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // R.layout.status_bar_notifications 는 액티비티를 만들기 위한 뷰레이아웃이&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 아니고, 알림서비스를 생성하기위한 고유식별자(ID)용으로 사용하기 위한&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 정수값으로 사용되고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private static int MOOD_NOTIFICATIONS = R.layout.status_bar_notifications;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // variable which controls the notification thread &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 5초간격으로 알림을 발생시키기 위해서, Thread 의 실행을 컨트롤 하는&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 객체 변수입니다. Thread 의 실행을 5초간격으로 지연시키는 처리를&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 하게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private ConditionVariable mCondition;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onCreate() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림관리자 객체를 시스템으로부터 가져옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Start up the thread running the service.&amp;nbsp; Note that we create a&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // separate thread because the service normally runs in the process's&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // main thread, which we don't want to block.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // mTask 라는 Runnable 클래스변수를 설정한 Thread 를 생성합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 이 Thread의 실행내용은, mTask 의 run() 메소드에 정의된 내용이&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 실행이 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Thread notifyingThread = new Thread(null, mTask, "NotifyingService");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mCondition = new ConditionVariable(false); //Thread의 실행을 제어할 변수&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notifyingThread.start(); //Thread 시작&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public void onDestroy() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Cancel the persistent notification.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 식별자가 MOOD_NOTIFICATIONS(레이아웃 리소스 아이디값)인&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림을 취소시킵니다. 알림바에서 알림이 없어집니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNM.cancel(MOOD_NOTIFICATIONS);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Stop the thread from generating further notifications&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 이전에 실행됐던 Thread 들을 모두 중지시킵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mCondition.open();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //현재 서비스 시작시에 생성한 Thread 의 실행내용입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private Runnable mTask = new Runnable() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //루프 한번돌때, 웃는아이콘 표시하고 5초정지하고,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //보통아이콘 표시하고 5초 정지하고,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //슬픈아이콘 표시하고 5초 정지하고&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이렇게 루프 한번에 15초동안 세번의 알림상태가 갱신되고,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //루프가 4번 돌게 되므로, 총 1분동안&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //세번의 알림상태가 바뀌는것이 4번 반복됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 4; ++i) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림바에 알림을 표시합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //웃는 아이콘이 표시되고, 해당 문자열이 제목과 내용으로&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림창에 나오게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; showNotification(R.drawable.stat_happy,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.string.status_bar_notifications_happy_message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //5초간 Thread의 실행을 중지시킵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mCondition.block(5 * 1000)) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; showNotification(R.drawable.stat_neutral,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.string.status_bar_notifications_ok_message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mCondition.block(5 * 1000)) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; showNotification(R.drawable.stat_sad,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.string.status_bar_notifications_sad_message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mCondition.block(5 * 1000)) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Done with our work...&amp;nbsp; stop the service!&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 현재 서비스를 중지시켜, onDestroy() 서비스의 메소드가 호출되고,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림과 Thread 가 모두 종료됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NotifyingService.this.stopSelf();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public IBinder onBind(Intent intent) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return mBinder;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림을 처리하는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //moodId는 알림바에 표시될 아이콘 이미지의 리소스 아이디입니다.(drawable 폴더의 아이콘)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; //textId는 알림항목에 표시될 제목의 문자열 리소스 아이디값입니다.(R.string.문자열name)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private void showNotification(int moodId, int textId) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // In this sample, we'll use the same text for the ticker and the expanded notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림항목의 제목 문자열값을 가져옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharSequence text = getText(textId);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the icon, scrolling text and timestamp.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Note that in this example, we pass null for tickerText.&amp;nbsp; We update the icon enough that&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // it is distracting to show the ticker text every time it changes.&amp;nbsp; We strongly suggest&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // that you do this as well.&amp;nbsp; (Think of of the "New hardware found" or "Network connection&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // changed" messages that always pop up)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림객체를 생성합니다, moodId는 아이콘이미지의 리소스 아이디입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Notification notification = new Notification(moodId, null, System.currentTimeMillis());&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The PendingIntent to launch our activity if the user selects this notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림항목을 클릭했을때, NotifyingController 클래스에 정의된 액티비티가 실행이 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PendingIntent contentIntent = PendingIntent.getActivity(this, 0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new Intent(this, NotifyingController.class), 0);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the info for the views that show in the notification panel.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림항목에 표시될 제목문자열과 내용문자열, 그리고 위에서 만든 인텐트를 설정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notification.setLatestEventInfo(this, getText(R.string.status_bar_notifications_mood_title),&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; text, contentIntent);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Send the notification.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // We use a layout id because it is a unique number.&amp;nbsp; We use it later to cancel.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 알림 매니저에 위에서 설정한 알림객체를 넘겨서, 알림을 발생시키게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // MOOD_NOTIFICATIONS 는 레이아웃 리소스 아이디 정수값으로, 알림의 고유식별자 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mNM.notify(MOOD_NOTIFICATIONS, notification);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // This is the object that receives interactions from clients.&amp;nbsp; See&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // RemoteService for a more complete example.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final IBinder mBinder = new Binder() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected boolean onTransact(int code, Parcel data, Parcel reply,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int flags) throws RemoteException {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return super.onTransact(code, data, reply, flags);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private NotificationManager mNM;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
위의 메인액티비티의 레이아웃인 /res/layout/notifying_controller.xml 파일을 추가합니다.&lt;br /&gt;
&lt;br /&gt;
버튼 두개가 정의되어있습니다. 서비스를 시작하는 버튼과 종료하는 버튼 두개 입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Demonstrates starting and stopping a local service.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See corresponding Java code com.android.sdk.app.LocalSerice.java. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;LinearLayout xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;" android:orientation="vertical" android:padding="4dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:gravity="center_horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent" android:layout_height="match_parent"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent" android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_weight="0"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:paddingBottom="4dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/notifying_service_controller"/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 알림서비스를 시작하는 버튼 입니다. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button android:id="@+id/notifyStart"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content" android:layout_height="wrap_content" &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/start_service"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;requestFocus /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 알림서비스를 종료하는 버튼 입니다. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button android:id="@+id/notifyStop"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content" android:layout_height="wrap_content" &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/stop_service"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
알림서비스의 고유식별자로 쓰일 /res/layout/status_bar_notifications.xml 레이아웃 &lt;br /&gt;
&lt;br /&gt;
파일을 추가해 줍니다. 이 파일의 내용은 현재 프로그램에서는 사용하지 않습니다.&lt;br /&gt;
&lt;br /&gt;
단지 이 파일을 추가했을 때, 생성되는 이 레이아웃의 리소스 아이디 정수값을 &lt;br /&gt;
&lt;br /&gt;
알림객체의 고유식별자로 사용할 뿐입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ScrollView xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="match_parent"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="vertical"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_icons_only" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/happy"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/neutral"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_ok" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/sad"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_sad" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_icons_and_marquee" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/happyMarquee"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/neutralMarquee"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_ok" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/sadMarquee"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_sad" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_remote_views" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/happyViews"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/neutralViews"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_ok" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/sadViews"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_sad" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_defaults" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/defaultSound"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_default_sound" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/defaultVibrate"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_default_vibrate" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/defaultAll"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_default_all" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Button android:id="@+id/clear"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_marginTop="20dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text="@string/status_bar_notifications_clear" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ScrollView&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/res/values/strings.xml 파일안에 다음의 내용과 같이 셋팅해줍니다.&lt;br /&gt;
&lt;br /&gt;
현재 프로그램에서 사용하는 문자열 값들입니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;resources&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="hello"&amp;gt;Hello World, Test021!&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="app_name"&amp;gt;Test021&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="notifying_service_controller"&amp;gt;This service will update a status bar notification&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; every 5 seconds for a minute&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="start_service"&amp;gt;Start Service&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="stop_service"&amp;gt;Stop Service&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_icons_only"&amp;gt;Icons only&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_icons_and_marquee"&amp;gt;Icons and marquee&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_remote_views"&amp;gt;Use remote views in balloon&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_defaults"&amp;gt;Use default values where applicable&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_happy"&amp;gt;:-)&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_ok"&amp;gt;:-|&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_sad"&amp;gt;:-(&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_happy_message"&amp;gt;I am happy&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_ok_message"&amp;gt;I am ok&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_sad_message"&amp;gt;I am sad&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_clear"&amp;gt;Clear notification&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_mood_title"&amp;gt;Mood ring&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_default_sound"&amp;gt;Sound&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_default_vibrate"&amp;gt;Vibrate&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="status_bar_notifications_default_all"&amp;gt;All&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;/resources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/res/drawable-hdpi/ 폴더 안에 상태가 갱신될 세개의 아이콘을 추가하시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
현재 샘플들은 모두 안드로이드 SDK 안에 샘플의 내용이므로, 현재 사용자가 sdk를 설치한&lt;br /&gt;
&lt;br /&gt;
폴더에서, (sdk설치폴더)\android-sdk-windows\samples\android-8\ApiDemos&lt;br /&gt;
&lt;br /&gt;
폴더를 보시면 전체 샘플코드들이 있습니다.&lt;br /&gt;
&lt;br /&gt;
그리고 아이콘 이미지는 (sdk설치폴더)\android-sdk-windows\samples\android-8\ApiDemos\res\drawable-hdpi&lt;br /&gt;
&lt;br /&gt;
폴더안에서, stat_happy.png, stat_neutral.png, stat_sad.png 이 세 이미지 파일을&lt;br /&gt;
&lt;br /&gt;
만드신 프로젝트의 /res/drawable-hdpi 폴더로 복사해 오시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
그러면 이 세개의 아이콘이 5초간격으로 돌아가면서 바뀌게 됩니다.&lt;br /&gt;
&lt;br /&gt;
그리고 마지막으로 AndroidManifest.xml 파일을 여시고, 다음과 같이 설정해주시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package="패키지경로..."&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode="1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName="1.0"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 서비스 클래스를 등록해줍니다. 사용자의 서비스클래스의 패키지경로를 설정해줍니다. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;service android:name=".NotifyingService" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!-- 처음에 실행될 메인 액티비티입니다. 해당 패키지 경로를 설정해줍니다. --&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".NotifyingController" android:label="App/Notification/Notifying Service Controller"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
그럼 모두들 즐프하세요 ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-334717908197591649?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lyFuVj465IIu3sdGmHGfiMzSpNM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lyFuVj465IIu3sdGmHGfiMzSpNM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lyFuVj465IIu3sdGmHGfiMzSpNM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lyFuVj465IIu3sdGmHGfiMzSpNM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/td3mNsIS8rE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/334717908197591649/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=334717908197591649" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/334717908197591649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/334717908197591649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/td3mNsIS8rE/android.html" title="[android] 주기적으로 알림을 발생하는 서비스" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UDRXk7cCp7ImA9WhZXGE0.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-9009013435976302468</id><published>2011-05-07T14:54:00.001-07:00</published><updated>2011-05-07T14:54:34.708-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-07T14:54:34.708-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] toast 메시지를 사용자정의 레이아웃을 적용해서 띄우기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
지금까지는 토스트메시지를 기본적인 형태의 텍스트만 나오는&lt;br /&gt;
&lt;br /&gt;
형태로 띄웠는데요, 사용자가 직접 디자인한 레이아웃을 적용한 &lt;br /&gt;
&lt;br /&gt;
토스트 메시지를 띄울 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // /res/layout/incoming_message_panel.xml 레이아웃 파일을,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // View 객체로 생성해줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LayoutInflater vi = (LayoutInflater)getSystemService&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (Context.LAYOUT_INFLATER_SERVICE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; View view = vi.inflate(R.layout.incoming_message_panel,null);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 위의 레이아웃파일 안에 정의된 텍스트뷰에다가, 텍스트를&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 설정해 줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextView tv = (TextView)view.findViewById(R.id.message);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tv.setText("메시지");&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 토스트 메시지를 띄워줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // setView 메소드로, 위에서 생성된 뷰객체를 설정해줍니다&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 그럼 이 뷰객체모양대로 토스트 메시지가 뜨게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast toast = new Toast(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; toast.setView(view);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; toast.setDuration(Toast.LENGTH_LONG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; toast.show();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/res/layout/incoming_message_panel.xml 파일을 만들어서,&lt;br /&gt;
&lt;br /&gt;
다음과 같이 입력합니다. 이 레이아웃은 여러분이 직접 정의를 &lt;br /&gt;
&lt;br /&gt;
하시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Copyright (C) 2007 The Android Open Source Project&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Licensed under the Apache License, Version 2.0 (the "License");&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; you may not use this file except in compliance with the License.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; You may obtain a copy of the License at&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.apache.org/licenses/LICENSE-2.0"&gt;http://www.apache.org/licenses/LICENSE-2.0&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Unless required by applicable law or agreed to in writing, software&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distributed under the License is distributed on an "AS IS" BASIS,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the License for the specific language governing permissions and&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; limitations under the License.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;FrameLayout xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:background="@android:drawable/toast_frame"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--/res/drawable/ 폴더에 toast_frame 라는 이름의 이미지파일을 두시면됩니다.*/&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LinearLayout&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation="horizontal"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="match_parent"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ImageView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:src="@drawable/sample_thumb_2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:id="@+id/message"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_gravity="center_vertical"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height="wrap_content"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:paddingLeft="6dip"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/LinearLayout&amp;gt;&lt;br /&gt;
&amp;lt;/FrameLayout&amp;gt;&lt;br /&gt;
&lt;br /&gt;
그럼 모두들 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-9009013435976302468?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6O_cY7ooZ0NBZCp__fsEekYxNAU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6O_cY7ooZ0NBZCp__fsEekYxNAU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6O_cY7ooZ0NBZCp__fsEekYxNAU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6O_cY7ooZ0NBZCp__fsEekYxNAU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/QeQHkNxyAiE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/9009013435976302468/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=9009013435976302468" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/9009013435976302468?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/9009013435976302468?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/QeQHkNxyAiE/toast.html" title="[android] toast 메시지를 사용자정의 레이아웃을 적용해서 띄우기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/toast.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4NRH87cSp7ImA9WhZXGE0.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-4777448620404948503</id><published>2011-05-07T14:16:00.001-07:00</published><updated>2011-05-07T14:16:35.109-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-07T14:16:35.109-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] 알림(Notification) 사용하기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
안드로이드에서 알림은, 스마트폰에서 무언가 이벤트가 발생이 &lt;br /&gt;
&lt;br /&gt;
됐을때(예를들어 문자가 온다든지 등), 핸드폰의 진동이 울리고&lt;br /&gt;
&lt;br /&gt;
동시에 스마트폰 상단의 시간이 나오는 라인에 알림 텍스트가&lt;br /&gt;
&lt;br /&gt;
나오게 됩니다. 그리고 그 상단의 알림라인을 터치해서 밑으로&lt;br /&gt;
&lt;br /&gt;
드래그를 하시면 밑으로 주욱 펼쳐지면서, 알림내용이 나오게&lt;br /&gt;
&lt;br /&gt;
됩니다. 그리고 그 알림 상세내용을 누르면, 알림이 사라지면서&lt;br /&gt;
&lt;br /&gt;
액티비티가 뜬다든지, 아니면 특정 액션을 취하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
먼저 액티비티클래스를 다음과 같이 입력을 합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림관리자 객체를 생성합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NotificationManager nm = (NotificationManager)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getSystemService(NOTIFICATION_SERVICE);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The details of our fake message&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharSequence from = "제목 문자열";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharSequence message = "상세내용 문자열";&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림바를 확장했을때, 표시되는 알림항목을 클릭했을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //실행될 액티비티를 지정하는 인텐트를 만듭니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //IncomingMessageView 라는 이름의 액티비티 클래스로 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //지정하고 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PendingIntent contentIntent = PendingIntent.getActivity&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (this, 0, new Intent(this, IncomingMessageView.class), 0);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.string.imcoming_message_ticker_text 는 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /res/values/strings.xml 파일에 다음과 같이 정의되어 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;string name="imcoming_message_ticker_text"&amp;gt;New text message: &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xliff:g id="text"&amp;gt;%0$s&amp;lt;/xliff:g&amp;gt;&amp;lt;/string&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 그리고 &amp;lt;xliff:g.. 이와같은 표현이 xml 오류가 나지 않으려면,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strings.xml 파일의 루트 태그인 &amp;lt;resources 태그를 다음과 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 같이 정의합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 아래의 getString 함수는 strings.xml 의 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;xliff:g id="text"&amp;gt;%0$s&amp;lt;/xliff:g&amp;gt; 부분을 message 변수문자열로 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 대치하여 가져오게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String tickerText = getString&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (R.string.imcoming_message_ticker_text, message);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림객체를 생성합니다. &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //R.drawable.stat_sample : /res/drawable stat_sample 폴더안에 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이름의 이미지를 준비합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Notification notif = new Notification(R.drawable.stat_sample, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tickerText, System.currentTimeMillis());&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //발생시킬 이벤트 정보를 셋팅합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //현재 컨텍스트, 제목, 내용, 알림항목 클릭시 실행할 액티비티정보&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notif.setLatestEventInfo(this, from, message, contentIntent);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림을 발생시켰을때, 진동의 주기를 설정합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //100ms(밀리세컨드) 후에, 250ms 동안 진동하고,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //100ms 후에 다시 500ms 동안 진동합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //즉 총 두번 진동하게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; notif.vibrate = new long[] { 100, 250, 100, 500};&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //실제로 위에서 설정한 알림 내용대로, 알림을 발생시킵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림내용은 notif 알림객체에 위에서 모두 설정했습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //R.string.imcoming_message_ticker_text 는 알림ID값으로서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //고유값이면 됩니다.(정수숫자)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이후에 알림항목 클릭시 실행되는 액티비티에서 이 알림ID를&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이용하여 현재 알림에 대한 처리를 계속할 수 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nm.notify(R.string.imcoming_message_ticker_text, notif);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
이제 위의 메인액티비티에서 알람을 발생시켜서, 알람항목을 클릭했을때&lt;br /&gt;
&lt;br /&gt;
실행될 IncomingMessageView 액티비티 클래스를 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class IncomingMessageView extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onCreate(Bundle savedInstanceState) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onCreate(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(/*임의로 레이아웃을 정의하시면됩니다.*/&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; R.layout.정의한레이아웃파일명);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림관리자 객체를 시스템에서 가져옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NotificationManager nm = (NotificationManager) &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getSystemService(NOTIFICATION_SERVICE);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림항목을 클릭했으니, 사용자가 확인을 했으므로,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림항목을 알림창에서 삭제를 합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //알림ID는 위에 메인액티비티에서 알림을 생성할때&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //사용했던 알림ID 값을 넘기면 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; nm.cancel(R.string.imcoming_message_ticker_text);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
이제 AndroidManifest.xml 파일을 열어서, 위의 두개의 액티비티와&lt;br /&gt;
&lt;br /&gt;
진동을 사용하기 위해서, 진동권한을 부여해 줍니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;manifest xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package="..."&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionCode="1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:versionName="1.0"&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;uses-sdk android:minSdkVersion="8" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;lt;!--이 한줄을 넣어주면, 진동권한을 얻을 수 있습니다.--&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;uses-permission android:name="android.permission.VIBRATE" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;lt;application android:icon="@drawable/icon" android:label="@string/app_name"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".IncomingMessage" android:label="App/Notification/IncomingMessage"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.LAUNCHER" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=".IncomingMessageView" android:label="App/Notification/IncomingMessageView"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;action android:name="android.intent.action.MAIN" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;category android:name="android.intent.category.EMBED" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/activity&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/application&amp;gt;&lt;br /&gt;
&amp;lt;/manifest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
그럼 모두들 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-4777448620404948503?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3chXj39Fo7c5ePLKQlC1RESwixs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3chXj39Fo7c5ePLKQlC1RESwixs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3chXj39Fo7c5ePLKQlC1RESwixs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3chXj39Fo7c5ePLKQlC1RESwixs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/0HgbO5Hd1WI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/4777448620404948503/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=4777448620404948503" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/4777448620404948503?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/4777448620404948503?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/0HgbO5Hd1WI/android-notification.html" title="[android] 알림(Notification) 사용하기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-notification.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck8GQX4-cSp7ImA9WhZXFUQ.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-9174243325508972072</id><published>2011-05-05T03:20:00.001-07:00</published><updated>2011-05-05T03:20:20.059-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-05T03:20:20.059-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 메뉴항목 그룹별 정렬하기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
메뉴항목들을 그룹별로 묶어서, 각 그룹별로 그 안에서 정렬을 설정할&lt;br /&gt;
&lt;br /&gt;
수 있습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group android:id="@+id/most_used_items"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/last_most_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="10"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/last_most_often" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/middle_most_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="7"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/middle_most_often" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/first_most_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="4"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/first_most_often" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group android:id="@+id/least_used_items"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:menuCategory="secondary"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/last_least_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/last_least_often" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/middle_least_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/middle_least_often" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/first_least_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="0"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/first_least_often" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 여섯개가 있으므로, 스마트폰 메뉴버튼을 &lt;br /&gt;
&lt;br /&gt;
누르면, 하단에 메뉴가 네개가 나오게 됩니다.&lt;br /&gt;
&lt;br /&gt;
그런데 위의 item 메뉴항목들이 세개씩 두개의 group 태그로 묶여있습니다.&lt;br /&gt;
&lt;br /&gt;
그리고 모든 item 태그들이 android:orderInCategory="1" 속성이 설정되어있습니다.&lt;br /&gt;
&lt;br /&gt;
이렇게 되면, 각 그룹별로 그 안에서 item 항목들이 정렬을 하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
먼저 첫번째 그룹과 두번째 그룹이 나뉘어서, 첫번째 그룹의 메뉴항목들이 먼저&lt;br /&gt;
&lt;br /&gt;
나오고, 그리고 두번째 그룹의 메뉴항목들이 나오게 되고, 그리고 그 안에서&lt;br /&gt;
&lt;br /&gt;
위의 android:orderInCategory="1" 속성값 순서대로 그룹별로 정렬이 됩니다.&lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴를 생성할때, 생성한 메뉴를 저장했다가,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때 호출되는 메소드에서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴에서 가져와야할 정보들을 이 변수에서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가져와서 처리를 하게됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Menu mMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu = menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 체크박스 메뉴항목별로 선택했을때 처리..&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.last_most_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.middle_most_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.first_most_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.last_least_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.middle_least_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.first_least_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-9174243325508972072?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5hifoIzKFgNIBYOFWeq7EwL3wJM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5hifoIzKFgNIBYOFWeq7EwL3wJM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5hifoIzKFgNIBYOFWeq7EwL3wJM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5hifoIzKFgNIBYOFWeq7EwL3wJM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/PnXA-Hp8EMc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/9174243325508972072/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=9174243325508972072" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/9174243325508972072?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/9174243325508972072?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/PnXA-Hp8EMc/android-xml_05.html" title="[android] XML로 메뉴만들기 - 메뉴항목 그룹별 정렬하기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_05.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYFR38-eip7ImA9WhZXFUg.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-3616014314779644950</id><published>2011-05-04T16:35:00.000-07:00</published><updated>2011-05-04T16:35:16.152-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T16:35:16.152-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 메뉴항목 정렬하기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
메뉴 항목들을 나열된 순서대로만 출력할 수 있는것이 아니고,&lt;br /&gt;
&lt;br /&gt;
메뉴를 정렬하는 속성값이 있어서, 이 속성값을 설정하여 메뉴항목들을&lt;br /&gt;
&lt;br /&gt;
원하시는 순서대로 정렬을 처리하실 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/fourth_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Fourth" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/third_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Third" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/second_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Second" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/first_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orderInCategory="0"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="First" /&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 네개가 있으므로, 스마트폰 메뉴버튼을 &lt;br /&gt;
&lt;br /&gt;
누르면, 하단에 메뉴가 네개가 나오게 됩니다.&lt;br /&gt;
&lt;br /&gt;
그런데 위의 item 메뉴항목들이 나열된 순서대로 메뉴가 나타나는 것이 아니고,&lt;br /&gt;
&lt;br /&gt;
item태그의 android:orderInCategory="1" 속성값의 순서대로 정렬이 되어서,&lt;br /&gt;
&lt;br /&gt;
메뉴가 출력이 됩니다. &lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴를 생성할때, 생성한 메뉴를 저장했다가,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때 호출되는 메소드에서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴에서 가져와야할 정보들을 이 변수에서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가져와서 처리를 하게됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Menu mMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu = menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 체크박스 메뉴항목별로 선택했을때 처리..&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.fourth_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.third_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.second_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.first_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-3616014314779644950?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WdXv_F374nXM54Coi7UZt_ihO5o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WdXv_F374nXM54Coi7UZt_ihO5o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WdXv_F374nXM54Coi7UZt_ihO5o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WdXv_F374nXM54Coi7UZt_ihO5o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/KeDBNLlbeFk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/3616014314779644950/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=3616014314779644950" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/3616014314779644950?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/3616014314779644950?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/KeDBNLlbeFk/android-xml_4468.html" title="[android] XML로 메뉴만들기 - 메뉴항목 정렬하기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_4468.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcAQXg8eyp7ImA9WhZXFUg.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-7145603457933391325</id><published>2011-05-04T16:00:00.001-07:00</published><updated>2011-05-04T16:00:40.673-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T16:00:40.673-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 서브메뉴 형태의 메뉴</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
서브메뉴란 스마트폰 하단 좌측의 메뉴버튼을 누르면 나오는 화면하단의 &lt;br /&gt;
&lt;br /&gt;
메뉴를 클릭했을때, 화면중앙에 리스트가 나와서 다시 선택을 할 수&lt;br /&gt;
&lt;br /&gt;
있는데요, 그 리스트가 특정 메뉴의 서브메뉴가 됩니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:title="Normal 1" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/submenu"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Emotions"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;menu&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/happy"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Happy"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/stat_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/neutral"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Neutral"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/stat_neutral" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/sad"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Sad"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/stat_sad" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:title="Normal 2" /&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 세개가 있으므로, 스마트폰 메뉴버튼을 &lt;br /&gt;
&lt;br /&gt;
누르면, 하단에 메뉴가 세개가 나오게 됩니다.&lt;br /&gt;
&lt;br /&gt;
그런데 첫번째, 세번째 메뉴는 그냥 단순히 선택을 하면, 해당 처리를 하고&lt;br /&gt;
&lt;br /&gt;
끝나게 되는데요, 두번째 item 항목은 안에 또 menu 태그가 있고, 그 안에&lt;br /&gt;
&lt;br /&gt;
해당 메뉴의 item 항목들을 가지고 있습니다. 이 menu 태그가 바로 서브메뉴&lt;br /&gt;
&lt;br /&gt;
입니다. 그리고 이 menu 태그안의 item 항목들이 화면중앙에 서브메뉴 리스트로&lt;br /&gt;
&lt;br /&gt;
나오게 됩니다.&lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴를 생성할때, 생성한 메뉴를 저장했다가,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때 호출되는 메소드에서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴에서 가져와야할 정보들을 이 변수에서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가져와서 처리를 하게됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Menu mMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu = menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 체크박스 메뉴항목별로 선택했을때 처리..&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.happy: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.neutral: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.sad: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-7145603457933391325?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I_L_560zbqyfum2_6M0AQxCzCAQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I_L_560zbqyfum2_6M0AQxCzCAQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I_L_560zbqyfum2_6M0AQxCzCAQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I_L_560zbqyfum2_6M0AQxCzCAQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/unOMe-bL0dw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/7145603457933391325/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=7145603457933391325" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7145603457933391325?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7145603457933391325?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/unOMe-bL0dw/android-xml_7136.html" title="[android] XML로 메뉴만들기 - 서브메뉴 형태의 메뉴" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_7136.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkECRXY4eip7ImA9WhZXFUk.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-7208051469323634443</id><published>2011-05-04T15:37:00.001-07:00</published><updated>2011-05-04T15:37:44.832-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T15:37:44.832-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 메뉴항목을 보이고 안보이게 하기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
메뉴항목을 처음에 안보이게 했다가, 프로그램을 사용하면서, &lt;br /&gt;
&lt;br /&gt;
특정 조건이나, 조작을 했을때 다시 보이게 했다가, 다시 숨기는 등의&lt;br /&gt;
&lt;br /&gt;
처리를 하는 경우가 있을 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/visible_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Visible"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:alphabeticShortcut="a" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/hidden_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Hidden"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:visible="false"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:alphabeticShortcut="b" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group android:id="@+id/hidden_group"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:visible="false"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/hidden_by_group"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Hidden by group"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:alphabeticShortcut="c" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 세개가 있지만, &lt;br /&gt;
&lt;br /&gt;
두번째 item 태그의 속성이 android:visible="false"로 되어있고,&lt;br /&gt;
&lt;br /&gt;
세번째 item태그를 감싸는 group태그의 속성이 &lt;br /&gt;
&lt;br /&gt;
android:visible="false" 로 되어있어서, 첫번째 item 태그의&lt;br /&gt;
&lt;br /&gt;
메뉴항목만 메뉴를 표시했을때 보이게 됩니다.&lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴를 생성할때, 생성한 메뉴를 저장했다가,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때 호출되는 메소드에서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴에서 가져와야할 정보들을 이 변수에서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가져와서 처리를 하게됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Menu mMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu = menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 체크박스 메뉴항목별로 선택했을때 처리..&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.visible_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴객체의 findItem 메소드에 메뉴항목의 리소스아이디값을 넘겨서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목객체를 구하고(MenuItem), 그 메뉴항목의 isVisible() 메소드로&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 현재 보이는지 안보이는지 true/false 값을 가져와서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 그룹안의 모든 item 메뉴항목들을 보이고, 안보이게 해주는 메뉴객체의&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setGroupVisible(..) 메소드를 호출하여, 해당 그룹안의 모든 메뉴항목들을&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 보이고 안보이게 컨트롤 할 수 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final boolean is_visible = !mMenu.findItem(R.id.hidden_item).isVisible();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu.setGroupVisible(R.id.hidden_group, is_visible);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.hidden_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.hidden_by_group: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-7208051469323634443?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/SDKnHqeCnagZhgq7fdoX9fe147E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SDKnHqeCnagZhgq7fdoX9fe147E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/SDKnHqeCnagZhgq7fdoX9fe147E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/SDKnHqeCnagZhgq7fdoX9fe147E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/zTw4-1FY5Ok" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/7208051469323634443/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=7208051469323634443" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7208051469323634443?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7208051469323634443?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/zTw4-1FY5Ok/xml.html" title="[android] XML로 메뉴만들기 - 메뉴항목을 보이고 안보이게 하기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/xml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UMQXYzcCp7ImA9WhZXFU8.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-2400918719809567192</id><published>2011-05-04T10:14:00.001-07:00</published><updated>2011-05-04T10:14:40.888-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T10:14:40.888-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 메뉴항목을 비활성화 시키기</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
메뉴항목을 누르면 하단의 메뉴항목중에 비활성화가 되어 텍스트와 이미지가&lt;br /&gt;
&lt;br /&gt;
회색으로 표시되어, 클릭을 해도 아무런 반응이 없게 만들 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
처음에 그렇게 비활성화 시켯다가, 프로그램을 사용하면서, 특정 조건이나&lt;br /&gt;
&lt;br /&gt;
조작을 했을때, 다시 프로그램에서 활성화 시켜주는 식으로 처리를 할 수&lt;br /&gt;
&lt;br /&gt;
있습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/enabled_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Enabled"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/enabled_image" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/disabled_item"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Disabled"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:enabled="false"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/disabled_image" /&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 두개가 있으므로, 스마트폰 메뉴버튼을&lt;br /&gt;
&lt;br /&gt;
누르시면, 하단에 한개의 메뉴항목이 나오게 되고, 하나는 정상적으로&lt;br /&gt;
&lt;br /&gt;
활성화가 되어있고, 다른 하나의 메뉴항목은 클릭을 해도 반응하지 않는,&lt;br /&gt;
&lt;br /&gt;
비활성화 상태가 되어있습니다.&lt;br /&gt;
&lt;br /&gt;
item 태그를 보시면, android:enabled="false" 속성을 주면 비활성화가 되고,&lt;br /&gt;
&lt;br /&gt;
설정을 안해주시거나 android:enabled="true" 로 설정을 하시면 메뉴항목이&lt;br /&gt;
&lt;br /&gt;
활성화가 됩니다.&lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴를 생성할때, 생성한 메뉴를 저장했다가,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때 호출되는 메소드에서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴에서 가져와야할 정보들을 이 변수에서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가져와서 처리를 하게됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Menu mMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu = menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 체크박스 메뉴항목별로 선택했을때 처리..&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.enabled_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.disabled_item: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-2400918719809567192?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z4qJcheBK4izcTzo7NauyREQ224/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z4qJcheBK4izcTzo7NauyREQ224/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z4qJcheBK4izcTzo7NauyREQ224/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z4qJcheBK4izcTzo7NauyREQ224/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/kTM42Rlk2e8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/2400918719809567192/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=2400918719809567192" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/2400918719809567192?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/2400918719809567192?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/kTM42Rlk2e8/android-xml_7712.html" title="[android] XML로 메뉴만들기 - 메뉴항목을 비활성화 시키기" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_7712.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQAQ349cSp7ImA9WhZXFU8.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-8924247808057744115</id><published>2011-05-04T09:59:00.000-07:00</published><updated>2011-05-04T09:59:02.069-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T09:59:02.069-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 라디오버튼(단일선택) 형태의 메뉴</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
메뉴항목을 누르면 화면중앙에 리스트 선택항목이 떠서, 메뉴항목을&lt;br /&gt;
&lt;br /&gt;
라디오형태로 한나의 항목만 선택할 수 있는 메뉴를 만들어보겠습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:title="Single"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group android:id="@+id/single_group"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checkableBehavior="single"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/item_1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_1" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/item_2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_2" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/item_3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checked="true" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 한개가 있으므로, 스마트폰 메뉴버튼을&lt;br /&gt;
&lt;br /&gt;
누르시면, 하단에 한개의 메뉴항목이 나오게 되고, 그 메뉴항목을 클릭하시면&lt;br /&gt;
&lt;br /&gt;
위에서 한개의 item 태그안에 정의된 menu 태그의 항목들이 라디어버튼 형태의 &lt;br /&gt;
&lt;br /&gt;
단일선택 리스트가 화면중앙에 나오게 됩니다.&lt;br /&gt;
&lt;br /&gt;
menu 태그안에 라디오버튼 item 항목들이 group 태그로 묶여있고, &lt;br /&gt;
&lt;br /&gt;
group 태그의 android:checkableBehavior="single" 속성값을 설정함으로서,&lt;br /&gt;
&lt;br /&gt;
group 태그안의 item 메뉴항목들이 라디오버튼 형태가 됩니다.&lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴를 생성할때, 생성한 메뉴를 저장했다가,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때 호출되는 메소드에서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴에서 가져와야할 정보들을 이 변수에서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가져와서 처리를 하게됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Menu mMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu = menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 체크박스 메뉴항목별로 선택했을때 처리..&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.item_1: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.item_2: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.item_3: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-8924247808057744115?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/T3GWEElkPrllpHnIEZzx7ichgc0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T3GWEElkPrllpHnIEZzx7ichgc0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/T3GWEElkPrllpHnIEZzx7ichgc0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/T3GWEElkPrllpHnIEZzx7ichgc0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/xeRAY5ttoA0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/8924247808057744115/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=8924247808057744115" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/8924247808057744115?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/8924247808057744115?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/xeRAY5ttoA0/android-xml_5609.html" title="[android] XML로 메뉴만들기 - 라디오버튼(단일선택) 형태의 메뉴" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_5609.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYGRXc9eip7ImA9WhZXFU8.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-2467982991585650568</id><published>2011-05-04T09:22:00.000-07:00</published><updated>2011-05-04T09:22:04.962-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T09:22:04.962-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 체크박스(다중선택) 형태의 메뉴</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
메뉴항목을 누르면 화면중앙에 리스트 선택항목이 떠서, 메뉴항목을&lt;br /&gt;
&lt;br /&gt;
체크박스형태로 여러개 선택할 수 있는 메뉴를 만들어보겠습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:title="group checkbox"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group android:id="@+id/groupCheckbox"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checkableBehavior="all"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/chk_item_1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_1" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/chk_item_2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checked="true" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/chk_item_3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checked="true" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:title="item each checkbox"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/each_chk_item_1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checkable="true" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/each_chk_item_2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checkable="true"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checked="true" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/each_chk_item_3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checkable="true"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checked="true" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 두개가 있으므로, 스마트폰 메뉴버튼을&lt;br /&gt;
&lt;br /&gt;
누르시면, 하단에 두개의 메뉴항목이 나오게 되고, 그 메뉴항목을 클릭하시면&lt;br /&gt;
&lt;br /&gt;
위에서 두개의 각 item 태그안에 정의된 체크박스 형태의 선택리스트가 &lt;br /&gt;
&lt;br /&gt;
화면중앙에 나오게 됩니다.&lt;br /&gt;
&lt;br /&gt;
두 메뉴가 모두 체크박스 항목을 띄우게 되는데요, 두 메뉴의 차이점은,&lt;br /&gt;
&lt;br /&gt;
위에 있는 item 태그의 메뉴항목은 체크박스리스트를 group 태그로 묶어서&lt;br /&gt;
&lt;br /&gt;
그 안의 메뉴항목들을 체크박스로 만들고 있습니다.&lt;br /&gt;
&lt;br /&gt;
그리고 아래의 item 태그의 체크박스 리스트 메뉴는, group 태그를 사용하지&lt;br /&gt;
&lt;br /&gt;
않고, 안의 menu 태그안의 item 각 항목들 하나하나마다 &lt;br /&gt;
&lt;br /&gt;
android:checkable="true" 속성을 설정하여, 체크박스로 만들고 있습니다.&lt;br /&gt;
&lt;br /&gt;
결과적으로는 두 메뉴항목 모두 체크박스 리스트를 띄우게 됩니다.&lt;br /&gt;
&lt;br /&gt;
group 태그에서는 android:checkableBehavior="all" 속성을 설정하여,&lt;br /&gt;
&lt;br /&gt;
group 태그 안의 모든 item 태그들을 체크박스로 만들게 됩니다.&lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /* &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴를 생성할때, 생성한 메뉴를 저장했다가,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때 호출되는 메소드에서,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴에서 가져와야할 정보들을 이 변수에서&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 가져와서 처리를 하게됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Menu mMenu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mMenu = menu;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //그룹으로 묶여있는 체크박스메뉴항목을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //현재 선택한 체크박스 메뉴항목의 getGroupId() 메소드로&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //그룹의 리소스아이디와 비교하여, 일치하면&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //해당그룹의 메뉴항목을 의미하게 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //즉 여기서는 그룹으로 묶인 체크박스항목들을 클릭하면&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //모두 여기로 분기를 합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if(item.getGroupId()==R.id.groupCheckbox){&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String checkedItems = "";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //mMenu는 메뉴생성시에 생성된 메뉴객체를 저장했던 변수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //이 메뉴객체에서 이 메뉴객체안의 모든 메뉴항목들을 findItem()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메소드로 리소스아이디를 통해서 가져올 수 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //그룹안의 메뉴항목들을 객체변수로 가져옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuItem item1 = mMenu.findItem(R.id.checkable_item_1);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuItem item2 = mMenu.findItem(R.id.checkable_item_2);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuItem item3 = mMenu.findItem(R.id.checkable_item_3);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 메뉴항목별로 체크된 정보를 isChecked() 메소드로 체크하여&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //체크된 메뉴항목들에 대해서 임의의 처리를 하시면 됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(item1.isChecked()) checkedItems+=item1.getItemId()+",";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(item2.isChecked()) checkedItems+=item2.getItemId()+",";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(item3.isChecked()) checkedItems+=item3.getItemId()+",";&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.makeText(this, "checked items : "+checkedItems, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.LENGTH_SHORT).show();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //각 체크박스 메뉴항목별로 선택했을때 처리..&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.each_chk_item_1: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.each_chk_item_2: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.each_chk_item_3: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-2467982991585650568?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L-t8wj3-rEN_1ulIdDcqwU-S3to/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L-t8wj3-rEN_1ulIdDcqwU-S3to/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/L-t8wj3-rEN_1ulIdDcqwU-S3to/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L-t8wj3-rEN_1ulIdDcqwU-S3to/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/v44gXlOEk-4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/2467982991585650568/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=2467982991585650568" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/2467982991585650568?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/2467982991585650568?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/v44gXlOEk-4/android-xml_1026.html" title="[android] XML로 메뉴만들기 - 체크박스(다중선택) 형태의 메뉴" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_1026.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcBQHY9eip7ImA9WhZXFU8.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-5274429229671104014</id><published>2011-05-04T08:14:00.000-07:00</published><updated>2011-05-04T08:14:11.862-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T08:14:11.862-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 일반리스트 선택 형태의 메뉴</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
메뉴항목을 누르면 화면중앙에 리스트 선택항목이 떠서,&lt;br /&gt;
&lt;br /&gt;
메뉴항목을 선택할 수 있는 메뉴를 만들어보겠습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:title="select"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;group android:id="@+id/group1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:checkableBehavior="none"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/item_1"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_1" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/item_2"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_2" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/item_3"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/item_3" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/group&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/menu&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
먼저 menu 루트태그안에 item 태그가 하나만 있으므로, 스마트폰 메뉴버튼을&lt;br /&gt;
&lt;br /&gt;
누르시면, 하단에 하나의 메뉴항목이 나오게 되고, 그 메뉴항목을 클릭하시면&lt;br /&gt;
&lt;br /&gt;
위에서 item 태그안에 정의된 또 하나의 menu태그가 리스트 형태로 화면중앙에&lt;br /&gt;
&lt;br /&gt;
item 태그 세개가(item_1, item_2, item_3) 리스트형태로 선택할 수 있게 나옵니다.&lt;br /&gt;
&lt;br /&gt;
위에서 내부의 menu태그안에 group 태그로 item 태그 세개를 감싸고 있는데,&lt;br /&gt;
&lt;br /&gt;
group 태그는 감싸고 있는 item 태그 세개에 공통의 속성을 부여하기 위해서&lt;br /&gt;
&lt;br /&gt;
item 태그들을 감싸고 있습니다. 여기서는 android:checkableBehavior="none" 이라는&lt;br /&gt;
&lt;br /&gt;
속성을 부여하여, 메뉴항목을 클릭했을때 뜨는 리스트가 체크박스(다중선택)냐&lt;br /&gt;
&lt;br /&gt;
혹은 라디오버튼(단일선택)이냐, 혹은 단순리스트 형태인가를 설정하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
위에서 android:checkableBehavior="none" 는 단순리스트 형태입니다.&lt;br /&gt;
&lt;br /&gt;
android:checkableBehavior="single" 은 라디오버튼 형태로 단일선택형입니다.&lt;br /&gt;
&lt;br /&gt;
android:checkableBehavior="all" 은 체크박스 형태로 다중선택형입니다.&lt;br /&gt;
&lt;br /&gt;
이제 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.item_1: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.item_2: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.item_3: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-5274429229671104014?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1leUnnOe2htCSVVwwv-lUYy2h4Y/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1leUnnOe2htCSVVwwv-lUYy2h4Y/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1leUnnOe2htCSVVwwv-lUYy2h4Y/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1leUnnOe2htCSVVwwv-lUYy2h4Y/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/UNP0LyQGm1E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/5274429229671104014/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=5274429229671104014" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/5274429229671104014?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/5274429229671104014?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/UNP0LyQGm1E/android-xml_794.html" title="[android] XML로 메뉴만들기 - 일반리스트 선택 형태의 메뉴" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_794.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYARHg7eip7ImA9WhZXFU8.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-7915272608713116090</id><published>2011-05-04T07:42:00.000-07:00</published><updated>2011-05-04T07:42:25.602-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T07:42:25.602-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 텍스트 제목 + 아이콘 형태의 메뉴</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
텍스트와 아이콘이 나오는 메뉴를 만들어보겠습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/menuTemplate.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/happy"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Happy"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/stat_happy" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/neutral"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Neutral"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/stat_neutral" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/sad"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="Sad"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:icon="@drawable/stat_sad" /&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
item 태그가 세개이므로, 현재 메뉴가 떴을때 선택항목이 세개가 나오게 됩니다.&lt;br /&gt;
&lt;br /&gt;
id속성은 이후에 선택된 메뉴항목을 식별하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
title속성은 메뉴항목에 나오는 텍스트 입니다.&lt;br /&gt;
&lt;br /&gt;
그리고 icon 속성이 /res/drawable/ 폴더 밑에 위치하는 이미지 파일명을&lt;br /&gt;
&lt;br /&gt;
설정해 주시면, 해당 아이콘파일이 메뉴항목에 텍스트와 같이 표시됩니다.&lt;br /&gt;
&lt;br /&gt;
그리고 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.menuTemplate, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.happy: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.neutral: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.sad: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-7915272608713116090?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2cFWI-c4LlqtPC7TC-HuMPH4Vdw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2cFWI-c4LlqtPC7TC-HuMPH4Vdw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2cFWI-c4LlqtPC7TC-HuMPH4Vdw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2cFWI-c4LlqtPC7TC-HuMPH4Vdw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/j_sSOJi0-IU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/7915272608713116090/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=7915272608713116090" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7915272608713116090?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/7915272608713116090?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/j_sSOJi0-IU/android-xml_9774.html" title="[android] XML로 메뉴만들기 - 텍스트 제목 + 아이콘 형태의 메뉴" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_9774.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcBQX48fyp7ImA9WhZXFUw.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-4485289560075376553</id><published>2011-05-04T06:34:00.001-07:00</published><updated>2011-05-04T06:34:10.077-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T06:34:10.077-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 텍스트 제목의 메뉴</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
가장 기본형태의 텍스트만 나오는 메뉴를 만들어보겠습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 /res/menu/title.xml 파일을 만드시고, 아래와 같이 입력합니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/jump"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/jump" /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item android:id="@+id/dive"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/dive" /&amp;gt;&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
메뉴xml 파일이고, menu 를 루트태그로, 그 안에 item 태그를 필요한만큼&lt;br /&gt;
&lt;br /&gt;
입력하시고, id 속성과 title 속성을 입력하시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
id 속성값은 이후에 액티비티 자바파일에서 메뉴항목을 선택했을때,&lt;br /&gt;
&lt;br /&gt;
이 id속성값이 넘어와서, 어느 메뉴항목을 선택했는지를 알 수 있게 됩니다.&lt;br /&gt;
&lt;br /&gt;
title속성은 메뉴항목에 표시될 텍스트 값입니다.&lt;br /&gt;
&lt;br /&gt;
그리고 액티비티 자바파일을 만드시고, 다음과 같이 입력합니다.&lt;br /&gt;
public class 액티비티클래스명 extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 스마트폰 하단의 메뉴버튼을 눌렀을때 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 반환값을 false 로 하시면, 스마트폰 하단의 메뉴버튼을 눌렀을때,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴가 안나오게 됩니다. true 를 리턴하셔야 메뉴가 나옵니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onCreateOptionsMenu(Menu menu) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MenuInflater inflater = getMenuInflater();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //위에서 만들었던 xml 파일의 리소스아이디값을 넘겨줍니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inflater.inflate(R.menu.title, menu);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 메뉴항목을 선택했을때, 호출되는 함수입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public boolean onOptionsItemSelected(MenuItem item) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (item.getItemId()) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.jump: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case R.id.div: // 메뉴 xml 파일에서 정의한 id속성값 입니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //메뉴항목선택시 처리내용...&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
그럼 모두 즐프하세요. ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5561522292104092382-4485289560075376553?l=pgm-progger.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pNcuOW_pkjTrb9sGZVOEXg0SiHc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pNcuOW_pkjTrb9sGZVOEXg0SiHc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pNcuOW_pkjTrb9sGZVOEXg0SiHc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pNcuOW_pkjTrb9sGZVOEXg0SiHc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/yNhQx/~4/KxMlgHEnJP0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pgm-progger.blogspot.com/feeds/4485289560075376553/comments/default" title="댓글" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5561522292104092382&amp;postID=4485289560075376553" title="0개의 덧글" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/4485289560075376553?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5561522292104092382/posts/default/4485289560075376553?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/yNhQx/~3/KxMlgHEnJP0/android-xml_04.html" title="[android] XML로 메뉴만들기 - 텍스트 제목의 메뉴" /><author><name>progger</name><uri>http://www.blogger.com/profile/09336877583825144133</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="17939546810892762719" /></author><thr:total>0</thr:total><feedburner:origLink>http://pgm-progger.blogspot.com/2011/05/android-xml_04.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04FSHY4fyp7ImA9WhZXFEs.&quot;"><id>tag:blogger.com,1999:blog-5561522292104092382.post-9199034869329909101</id><published>2011-05-03T15:31:00.001-07:00</published><updated>2011-05-03T15:31:59.837-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-03T15:31:59.837-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="모바일" /><category scheme="http://www.blogger.com/atom/ns#" term="안드로이드" /><category scheme="http://www.blogger.com/atom/ns#" term="android" /><title>[android] XML로 메뉴만들기 - 기초</title><content type="html">안녕하세요?&lt;br /&gt;
프쟁이 입니다.&lt;br /&gt;
&lt;br /&gt;
xml 로 메뉴를 만들기 위해서는, 먼저 /res/menu/ 폴더밑에,&lt;br /&gt;
&lt;br /&gt;
만들고자 하는 메뉴를 정의하는 xml 파일을 임의의 이름으로 만듭니다.&lt;br /&gt;
&lt;br /&gt;
그리고 내용을 아래와 같이 채워줍니다.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;menu xmlns:android="&lt;a href="http://schemas.android.com/apk/res/android"&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;"&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;lt;item android:id="@+id/jump"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/jump" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;lt;item android:id="@+id/dive"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:title="@string/dive" /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/menu&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위와 같이 이 xml 파일은 루트태그가 menu 태그입니다.&lt;br /&gt;
&lt;br /&gt;
이렇게 
