<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7711235578611450260</id><updated>2024-09-08T08:08:09.967+09:00</updated><category term="Term"/><category term="Android-Activity"/><category term="Android-Dialog"/><category term="Android-Intent"/><category term="Android"/><category term="Android-MMS"/><category term="Android-SD"/><category term="Android-Alarm"/><category term="Android-Animation"/><category term="Android-Contact"/><category term="Android-Content Provider"/><category term="Android-EditText"/><category term="Android-Memory"/><category term="Android-SharedPreferences"/><category term="Android-Title"/><category term="Android-Wallpaper"/><category term="Java"/><category term="Temp"/><category term="etcetera"/><title type='text'>Android</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-6051465918969760707</id><published>2011-09-06T00:47:00.001+09:00</published><updated>2011-09-06T20:14:08.873+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Dialog"/><title type='text'>Dialog - setCancelMessage(), setDismissMessage()</title><content type='html'>안드로이드에서 Dialog 를 사용하다 보면&lt;br /&gt;
&lt;br /&gt;
Back Key 를 눌러서 Dialog 가 사라지는 시점을 필요로 할때가 있다.&lt;br /&gt;
아래와 같이 setCancelMessage() 를 사용하면 Handler 로 메시지를 전달해 준다.&lt;br /&gt;
&lt;br /&gt;
Message cancMess = Message.obtain(h); &lt;br /&gt;
cancMess.what = 1; &lt;br /&gt;
setCancelMessage(cancMess); &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
또한 Dialog 가 종료되는 시점이 필요할때는&lt;br /&gt;
아래와 같이 setDismissMessage() 를 사용하면 Handler 로 메시지를 전달해 준다.&lt;br /&gt;
&lt;br /&gt;
Message dismMess = Message.obtain(h); &lt;br /&gt;
dismMess.what = 0; &lt;br /&gt;
setDismissMessage(dismMess); &lt;br /&gt;
&lt;br /&gt;
링크 : &lt;br /&gt;&lt;a href=&quot;http://code.google.com/p/dsandr/source/browse/trunk/src/ru/jecklandin/duckshot/PauseDialog.java?r=27&quot;&gt;http://code.google.com/p/dsandr/source/browse/trunk/src/ru/jecklandin/duckshot/PauseDialog.java?r=27&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/6051465918969760707/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/09/dialog-setcancelmessage.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6051465918969760707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6051465918969760707'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/09/dialog-setcancelmessage.html' title='Dialog - setCancelMessage(), setDismissMessage()'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-1864894712946653978</id><published>2011-06-20T15:01:00.000+09:00</published><updated>2011-06-20T15:01:08.639+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-SD"/><title type='text'>SD 카드 파일 생성 / 삭제</title><content type='html'>일반적으로 외장카드 영역을 불러올때 /mnt/sdcard 이런 식으로 하드 코딩하시는 분들이 많은데&lt;br /&gt;
이런 경우 외장카드를 사용하지 않는 사용자인 경우 에러가 발생하게 됩니다.&lt;br /&gt;
&lt;br /&gt;
사용자 폰에 외장카드 존재유무를 확인하여 처리하는 모듈을 간단히 구현해 봤으니 참고하세요!!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: rgb(121,165,228) 1px dashed; border-left: rgb(121,165,228) 1px dashed; border-right: rgb(121,165,228) 1px dashed; border-top: rgb(121,165,228) 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String mSdPath;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; String ext = Environment.getExternalStorageState();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (ext.equals(Environment.MEDIA_MOUNTED)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mSdPath = Environment.getExternalStorageDirectory().getAbsolutePath()+&quot;/&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mSdPath = Environment.MEDIA_UNMOUNTED+&quot;/&quot;;&lt;br /&gt;
&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; File file = new File(mSdPath); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (!file.exists()) mSdPath = &quot;&quot;;&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; // 파일 생성&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedWriter out = new BufferedWriter(new FileWriter(mSdPath+&quot;androes.txt&quot;));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; out.write(&quot;test text messages&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; out.newLine();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; out.close();&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; File file = new File(mSDPath + &quot;/&quot; + &quot;androes.txt&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file.delete();&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/1864894712946653978/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/sd_20.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/1864894712946653978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/1864894712946653978'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/sd_20.html' title='SD 카드 파일 생성 / 삭제'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-6600742592800931485</id><published>2011-06-20T14:36:00.001+09:00</published><updated>2011-06-20T15:00:20.463+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-SD"/><title type='text'>SD 카드 생성 방법</title><content type='html'>안드로이드 에뮬레이터에서 사용자가 임의로 파일을 저장하려면 안드로이드 에뮬레이터에 가상의 SD카드가 마운트 되어 있어야 합니다. 오늘은 mksdcard를 이용한&amp;nbsp;가상의 SD카드 생성부터 시작해서 이클립스 내의 설정 변경, DDMS를 이용하여 가상의 SD카드에 파일 넣기까지 알아보겠습니다.&lt;br /&gt;
&lt;br /&gt;
일단, 에뮬레이터에 마운트시킬 가상의 SD카드를 생성해야합니다. 가상 SD카드를 생성하려면 안드로이드 SDK폴더\tools 폴더의 mksdcard.exe 을 이용하면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/1140670F49DA15AAD1376E&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;417&quot; src=&quot;http://cfile21.uf.tistory.com/image/1140670F49DA15AAD1376E&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
실행-cmd를 입력하여 명령 프롬프트 창을 열고, 안드로이드 sdk가 설치된 폴더\tools폴더에 간 후, mksdcard [용량] [파일명] 을 입력하여 가상의 SD카드를 만듭니다. 저는 128MB의 크기로 만들었습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/192DDE1049DA16298ADA8A&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;385&quot; src=&quot;http://cfile24.uf.tistory.com/image/192DDE1049DA16298ADA8A&quot; width=&quot;640&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;div class=&quot;cap1&quot;&gt;생성된 가상 SD카드 파일&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
가상 SD카드 파일도 만들었으니, 이제 에뮬레이터에 마운트를 시켜야겠지요?&lt;br /&gt;
에뮬레이터를 실행시킬 때 sd카드를 마운트시키는 옵션을 활성화시켜주어야 하는데요, 그 설정은 Run-Run Configurations-Target 탭의 Additional Enulator Command Line Options에 넣어주면 됩니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile5.uf.tistory.com/original/14410C0F49DA17FC358C17&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;575&quot; src=&quot;http://cfile5.uf.tistory.com/image/14410C0F49DA17FC358C17&quot; width=&quot;565&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
저같은 경우는 생성한 가상SD카드를 c:\ 드라이브에 넣어주어서 경로를 저렇게 설정하였습니다. 각자 경로에 맞게끔 넣어주시면 됩니다.&lt;br /&gt;
&lt;br /&gt;
이렇게 설정을 끝낸 후, 에뮬레이터를 실행시키면 가상 SD카드가 마운트 된 채로 에뮬레이터가 실행됩니다.&lt;br /&gt;
그럼, 이 SD카드에 파일을 넣어볼까요?&lt;br /&gt;
&lt;br /&gt;
이클립스에서 DDMS를 실행시킨 후, File Explorer탭을 클릭해보면 아래와 같은 아이콘이 보이실겁니다. 에뮬레이터에 파일을 넣어야하니 Push a file onto the device를 눌러줍니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/192F591049DA162A51D937&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;131&quot; src=&quot;http://cfile21.uf.tistory.com/image/192F591049DA162A51D937&quot; width=&quot;228&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/112DEF1049DA162B52F032&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;390&quot; src=&quot;http://cfile3.uf.tistory.com/image/112DEF1049DA162B52F032&quot; width=&quot;656&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
요로코롬 파일을 선택할 수 있습니다. 개발하는데 깝깝한데~~ 음악이나 듣게 음악을 넣어봅시다. 이 때, 파일명은 영어로 되어 있어야 합니다. 안그러면 에러납니다. -_-&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile1.uf.tistory.com/original/112E731049DA162BE066BC&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;319&quot; src=&quot;http://cfile1.uf.tistory.com/image/112E731049DA162BE066BC&quot; width=&quot;598&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
자, 저렇게 해주면 이렇게! 뿅! 들어가있는 것을 볼 수 있습니다.&lt;br /&gt;
자, 그럼 이제 이 파일을 안드로이드 에뮬레이터에서 들어볼까요?&lt;br /&gt;
파일을 추가했으니, 바로 음악을 듣기 전에 Dev Tools의 Media Scanner를 실행해서 파일을 인식시켜주어야 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/132EAF1049DA196221A53E&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;480&quot; src=&quot;http://cfile3.uf.tistory.com/image/132EAF1049DA196221A53E&quot; width=&quot;320&quot; /&gt;&lt;/a&gt; &lt;br /&gt;
&lt;div class=&quot;cap1&quot;&gt;Media Scanner가 새로 추가된 파일을 검색중인 화면.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
검색이 끝났다면, 음악을 들어볼까요?&lt;br /&gt;
Music을 눌러보시면, 다음과 같이 음악이 추가되어있는 것을 보실 수 있을 겁니다!&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/122DCF1049DA1962640C8F&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; height=&quot;480&quot; src=&quot;http://cfile21.uf.tistory.com/image/122DCF1049DA1962640C8F&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
음악 파일 뿐만 아니라 다른 파일을 넣을&amp;nbsp;떄에도 지금과 동일한 과정으로 수행하시면 됩니다. :)&lt;br /&gt;
&lt;br /&gt;
출처 : &lt;a href=&quot;http://androidhuman.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%97%90%EB%AE%AC%EB%A0%88%EC%9D%B4%ED%84%B0%EC%97%90-%EA%B0%80%EC%83%81%EC%9D%98-SD%EC%B9%B4%EB%93%9C-%EB%A7%88%EC%9A%B4%ED%8A%B8%EC%8B%9C%ED%82%A4%EA%B8%B0&quot;&gt;커니의 안드로이드&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/6600742592800931485/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/sd.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6600742592800931485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6600742592800931485'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/sd.html' title='SD 카드 생성 방법'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-8104068888963285004</id><published>2011-06-16T16:44:00.000+09:00</published><updated>2011-06-16T16:44:38.162+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Memory"/><title type='text'>안드로이드 메모리 사용량 알기</title><content type='html'>int availProc = Runtime.getRuntime().availableProcessors();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long total = Runtime.getRuntime().totalMemory();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long free = Runtime.getRuntime().freeMemory();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; long max = Runtime.getRuntime().maxMemory();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Toast.makeText(getApplicationContext(),availProc + &quot;\nTM &quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + Long.toString(total) + &quot;\nFM &quot; + &lt;br /&gt;
Long.toString(free)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + &quot;\nMM&quot; + Long.toString(max),&lt;br /&gt;
&lt;br /&gt;
Toast.LENGTH_SHORT).show();&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
--~--~---------~--~----~------------~-------~--~----~&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;최소 heap 정하기, MAX는 못바꿈&lt;br /&gt;
&lt;br /&gt;
VMRuntime.getRuntime().setMinimumHeapSize( long l ); &lt;/span&gt;&lt;br /&gt;
------------------------------------------------------&lt;br /&gt;
cat proc/meminfo&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.suppul.com/blog/main/192?TSSESSIONwwwsuppulcomblog=51f5eebf5ad510e43b1dbf99485bd5e9&quot;&gt;http://www.suppul.com/blog/main/192?TSSESSIONwwwsuppulcomblog=51f5eebf5ad510e43b1dbf99485bd5e9&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/8104068888963285004/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/blog-post_16.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8104068888963285004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8104068888963285004'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/blog-post_16.html' title='안드로이드 메모리 사용량 알기'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-8301909615484980341</id><published>2011-06-15T15:48:00.000+09:00</published><updated>2011-06-15T15:48:18.362+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>CustomView 생성하기</title><content type='html'>안드로이드에서 기본적으로 지원하지 않는 UI 를 만들때 CustomView 를 사용합니다.&lt;br /&gt;
이러한 CustomView 의 기본적인 작성방법을 알아보도록 하겠습니다.&lt;br /&gt;
&lt;br /&gt;
CustomView 는 “android.view.View” 클래스를 상속해서 만들어 집니다.&lt;br /&gt;
기본적으로 onDraw() 메소드만 재정의해서 xml 에 view 태그만 추가하면 오류없이 출력되는것을 볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
이번 포스트에서는 간단히 클릭하면 반응하는 CustomView 를 만들어 보도록 하겠습니다.&lt;br /&gt;
먼저 CustomView 소스를 확인해 보도록 하겠습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;- CustomView.java&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;package&lt;/span&gt; net.cranix.android.customviewtest;

&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.content.Context;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.graphics.Canvas;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.graphics.Color;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.graphics.Paint;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.util.AttributeSet;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.util.Log;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.view.KeyEvent;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.view.MotionEvent;
&lt;span style=&quot;color: blue;&quot;&gt;import&lt;/span&gt; android.view.View;

&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt; CustomView &lt;span style=&quot;color: blue;&quot;&gt;extends&lt;/span&gt; View {
    
    &lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt; String text = null;
    &lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; backgroundColor = Color.RED;

    &lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt; String tempText;
    
    
    &lt;span style=&quot;color: green;&quot;&gt;// 속성이 없는 생성자는 소스상에서 직접 생성할때만 쓰인다. &lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; CustomView(Context context) {
        &lt;span style=&quot;color: blue;&quot;&gt;super&lt;/span&gt;(context);
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;CustomView(&quot;&lt;/span&gt;+context+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
    }
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  리소스 xml 파일에서 정의하면 이 생성자가 사용된다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  대부분 this 를 이용해 3번째 생성자로 넘기고 모든 처리를 3번째 생성자에서 한다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; CustomView(Context context,AttributeSet attrs) {
        &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;(context,attrs,0);
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;CustomView(&quot;&lt;/span&gt;+context+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+attrs+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
    }
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * xml 에서 넘어온 속성을 멤버변수로 셋팅하는 역할을 한다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; CustomView(Context context,AttributeSet attrs,&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; defStyle) {
        &lt;span style=&quot;color: blue;&quot;&gt;super&lt;/span&gt;(context,attrs,defStyle);
        
        &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.text = attrs.getAttributeValue(null,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;text&quot;&lt;/span&gt;);
        
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;CustomView(&quot;&lt;/span&gt;+context+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+attrs+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+defStyle+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;),text:&quot;&lt;/span&gt;+text);
    }
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * xml 로 부터 모든 뷰를 inflate 를 끝내고 실행된다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 대부분 이 함수에서는 각종 변수 초기화가 이루어 진다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * super 메소드에서는 아무것도 하지않기때문에 쓰지 않는다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    @Override
    &lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; onFinishInflate() {
        setClickable(true);
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;onFinishInflate()&quot;&lt;/span&gt;);
    }
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 넘어오는 파라메터는 부모뷰로부터 결정된 치수제한을 의미한다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 또한 파라메터에는 bit 연산자를 사용해서 모드와 크기를 같이 담고있다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 모드는 MeasureSpec.getMode(spec) 형태로 얻어오며 다음과 같은 3종류가 있다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *         MeasureSpec.AT_MOST : wrap_content (뷰 내부의 크기에 따라 크기가 달라짐)&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *         MeasureSpec.EXACTLY : fill_parent, match_parent (외부에서 이미 크기가 지정되었음)&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *      MeasureSpec.UNSPECIFIED : MODE 가 셋팅되지 않은 크기가 넘어올때 (대부분 이 경우는 없다)&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   fill_parent, match_parent 를 사용하면 윗단에서 이미 크기가 계산되어 EXACTLY 로 넘어온다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   이러한 크기는 MeasureSpec.getSize(spec) 으로 얻어낼 수 있다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   이 메소드에서는 setMeasuredDimension(measuredWidth,measuredHeight) 를 호출해 주어야 하는데&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   super.onMeasure() 에서는 기본으로 이를 기본으로 계산하는 함수를 포함하고 있다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   만약 xml 에서 크기를 wrap_content 로 설정했다면 이 함수에서 크기를 계산해서 셋팅해 줘야한다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *   그렇지 않으면 무조껀 fill_parent 로 나오게 된다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    @Override
    &lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; onMeasure(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; widthMeasureSpec, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; heightMeasureSpec) {
        
        &lt;span style=&quot;color: green;&quot;&gt;// height 진짜 크기 구하기&lt;/span&gt;
        &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; heightMode = MeasureSpec.getMode(heightMeasureSpec);
        &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; heightSize = 0;
        &lt;span style=&quot;color: blue;&quot;&gt;switch&lt;/span&gt;(heightMode) {
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MeasureSpec.UNSPECIFIED:    &lt;span style=&quot;color: green;&quot;&gt;// mode 가 셋팅되지 않은 크기가 넘어올때&lt;/span&gt;
            heightSize = heightMeasureSpec;
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MeasureSpec.AT_MOST:        &lt;span style=&quot;color: green;&quot;&gt;// wrap_content (뷰 내부의 크기에 따라 크기가 달라짐)&lt;/span&gt;
            heightSize = 20;
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MeasureSpec.EXACTLY:        &lt;span style=&quot;color: green;&quot;&gt;// fill_parent, match_parent (외부에서 이미 크기가 지정되었음)&lt;/span&gt;
            heightSize = MeasureSpec.getSize(heightMeasureSpec);
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        }
        
        &lt;span style=&quot;color: green;&quot;&gt;// width 진짜 크기 구하기&lt;/span&gt;
        &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; widthMode = MeasureSpec.getMode(widthMeasureSpec);
        &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; widthSize = 0;
        &lt;span style=&quot;color: blue;&quot;&gt;switch&lt;/span&gt;(widthMode) {
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MeasureSpec.UNSPECIFIED:    &lt;span style=&quot;color: green;&quot;&gt;// mode 가 셋팅되지 않은 크기가 넘어올때&lt;/span&gt;
            widthSize = widthMeasureSpec;
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MeasureSpec.AT_MOST:        &lt;span style=&quot;color: green;&quot;&gt;// wrap_content (뷰 내부의 크기에 따라 크기가 달라짐)&lt;/span&gt;
            widthSize = 100;
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MeasureSpec.EXACTLY:        &lt;span style=&quot;color: green;&quot;&gt;// fill_parent, match_parent (외부에서 이미 크기가 지정되었음)&lt;/span&gt;
            widthSize = MeasureSpec.getSize(widthMeasureSpec);
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        }

        
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;onMeasure(&quot;&lt;/span&gt;+widthMeasureSpec+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+heightMeasureSpec+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
        
        setMeasuredDimension(widthSize, heightSize);
    }
    
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  onMeasure() 메소드에서 결정된 width 와 height 을 가지고 어플리케이션 전체 화면에서 현재 뷰가 그려지는 bound 를 돌려준다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  이 메소드에서는 일반적으로 이 뷰에 딸린 children 들을 위치시키고 크기를 조정하는 작업을 한다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  유의할점은 넘어오는 파라메터가 어플리케이션 전체를 기준으로 위치를 돌려준다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     *  super 메소드에서는 아무것도 하지않기때문에 쓰지 않는다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    @Override
    &lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; onLayout(&lt;span style=&quot;color: blue;&quot;&gt;boolean&lt;/span&gt; changed, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; left, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; top, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; right,
            &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; bottom) {
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;onLayout(&quot;&lt;/span&gt;+changed+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+left+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+top+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+right+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+bottom+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
    }
    
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 이 뷰의 크기가 변경되었을때 호출된다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * super 메소드에서는 아무것도 하지않기때문에 쓰지 않는다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    @Override
    &lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; onSizeChanged(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; w, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; h, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; oldw, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; oldh) {
        
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;onSizeChanged(&quot;&lt;/span&gt;+w+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+h+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+oldw+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+oldh+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
    }
    
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 실제로 화면에 그리는 영역으로 View 를 상속하고 이 메소드만 구현해도 제대로 보여지게 된다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 그릴 위치는 0,0 으로 시작해서 getMeasuredWidth(), getMeasuredHeight() 까지 그리면 된다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * super 메소드에서는 아무것도 하지않기때문에 쓰지 않는다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    @Override
    &lt;span style=&quot;color: blue;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; onDraw(Canvas canvas) {
        &lt;span style=&quot;color: blue;&quot;&gt;final&lt;/span&gt; Paint p = &lt;span style=&quot;color: blue;&quot;&gt;new&lt;/span&gt; Paint();
        p.setColor(backgroundColor);
        canvas.drawRect(0,0,getMeasuredWidth(),getMeasuredHeight(), p);
        &lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (text != null) {
            p.setColor(Color.BLACK);
            canvas.drawText(text, 10, 15, p); &lt;span style=&quot;color: green;&quot;&gt;// 왼쪽 아래를 0,0 으로 보고있음&lt;/span&gt;
        }
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;onDraw(&quot;&lt;/span&gt;+canvas+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
    }
    
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 현재 view 가 focus 상태일때 key 를 누르면 이 메소드가 호출됨.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 즉 이 메소드를 사용하려면 setFocusable(true) 여야함. &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 그리고 super 메소드에서는 기본적인 키 작업(예를들면 BACK 키 누르면 종료)을 처리하기 때문에 일반적으로 return 시에 호출하는게 좋다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 만약 기본적인 작업을 하지않게 하려면 super 함수를 호출하지 않아도 된다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 다른 event 메소드들도 유사하게 동작한다.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    @Override
    &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;boolean&lt;/span&gt; onKeyDown(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; keyCode, KeyEvent event) {
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;onKeyDown(&quot;&lt;/span&gt;+keyCode+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;,&quot;&lt;/span&gt;+event+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
        &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;super&lt;/span&gt;.onKeyDown(keyCode, event); 
    }
    
    &lt;span style=&quot;color: green;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 이 view 에 touch 가 일어날때 실행됨.&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * 기본적으로 touch up 이벤트가 일어날때만 잡아내며 &lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     * setClickable(true) 로 셋팅하면 up,move,down 모두 잡아냄&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;     */&lt;/span&gt;
    @Override
    &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;boolean&lt;/span&gt; onTouchEvent(MotionEvent event) {
        Log.w(Constants.TAG,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;onTouchEvent(&quot;&lt;/span&gt;+event+&lt;span style=&quot;color: #006080;&quot;&gt;&quot;)&quot;&lt;/span&gt;);
        &lt;span style=&quot;color: blue;&quot;&gt;switch&lt;/span&gt;(event.getAction()) {
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MotionEvent.ACTION_UP:
            backgroundColor = Color.RED;
            text = tempText;
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MotionEvent.ACTION_DOWN:
            backgroundColor = Color.YELLOW;
            tempText = text;
            text = &lt;span style=&quot;color: #006080;&quot;&gt;&quot;Clicked!&quot;&lt;/span&gt;;
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: blue;&quot;&gt;case&lt;/span&gt; MotionEvent.ACTION_MOVE:
            backgroundColor = Color.BLUE;
            text = &lt;span style=&quot;color: #006080;&quot;&gt;&quot;Moved!&quot;&lt;/span&gt;;
            &lt;span style=&quot;color: blue;&quot;&gt;break&lt;/span&gt;;
        }
        invalidate();
        &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;super&lt;/span&gt;.onTouchEvent(event);
    }
    
    
    &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; String getText() {
        &lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; text;
    }
    &lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;void&lt;/span&gt; setText(String text) {
        &lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.text = text;
    }
}&lt;/pre&gt;&lt;/div&gt;&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;- 크기 계산하기&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
여기서 중요한 메소드는 &lt;strong&gt;onMeasure()&lt;/strong&gt; 메소드 입니다.&lt;br /&gt;
이 메소드는 뷰의 전체 크기를 정하는 메소드 인데 안드로이드의 크기 정하는 방법에 따라 구현법이 달라져야 합니다.&lt;br /&gt;
&lt;br /&gt;
안드로이드 레이아웃 xml 파일에서 크기를 지정하는 방법은 4가지가 있습니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - fill_parent (상위 View 의 크기에 따름)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - match_parent (상위 View 의 크기에 따름)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - fixed (100px 와 같이 픽셀로 박아놨을때)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - wrap_content (현재 뷰의 내용에 따름)&lt;br /&gt;
&lt;br /&gt;
이렇게 4가지 방법의 특성에 따라서 넘어오는 크기의 종류는 3가지로 구분됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - MeasureSpec.EXACTLY : fill_parent, match_parent, fixed 와 같이 상위에서 이미 결정되어버린 크기가 넘어올때 선택됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - MeasureSpec.AT_MOST : wrap_content 를 선택했을때 선택됩니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; - MeasureSpec.UNSPECIFIED : xml 에 의하지 않고 소스상에서 직접 넣었을 때 나옵니다.&lt;br /&gt;
&lt;br /&gt;
여기서 EXACTLY 과 UNSPECIFIED 는 외부에서 크기가 구해져서 내려오는 것이기 때문에 따로 계산할 것이 없으나 AT_MOST 는 내부적으로 크기계산을 해 주어야 합니다.&lt;br /&gt;
위의 소스에서는 간단하게 100,20 으로 박아놨지만 실제로 CustomView 를 구현하게 된다면 뷰의 특성에 따라 구현이 달라져야 할 것입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;- xml 에서 파라메터 받아내기&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
안드로이드 리소스 xml 에서 파라메터를 받아내려면 위 소스의 3번째 생성자에 있는것 처럼 아래와 같은 구문을 써야 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;this&lt;/span&gt;.text = attrs.getAttributeValue(null,&lt;span style=&quot;color: #006080;&quot;&gt;&quot;text&quot;&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;- xml 파일 구성하기&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
이렇게 만든 CustomView 를 xml 파일에서 사용하려면 아래와같은 xml 구성이 필요합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;background-color: #f4f4f4; border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none; color: black; direction: ltr; font-family: &amp;quot;Courier New&amp;quot;, courier, monospace; font-size: 8pt; line-height: 12pt; margin: 0em; overflow: visible; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; width: 100%;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;?&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;xml&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;version&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;1.0&quot;&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;encoding&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;utf-8&quot;&lt;/span&gt;?&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;LinearLayout&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;xmlns:android&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;http://schemas.android.com/apk/res/android&quot;&lt;/span&gt;
    &lt;span style=&quot;color: red;&quot;&gt;android:orientation&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;vertical&quot;&lt;/span&gt;
    &lt;span style=&quot;color: red;&quot;&gt;android:layout_width&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;fill_parent&quot;&lt;/span&gt;
    &lt;span style=&quot;color: red;&quot;&gt;android:layout_height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;fill_parent&quot;&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;strong&gt;    &lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;view&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;net.cranix.android.customviewtest.CustomView&quot;&lt;/span&gt;
        &lt;span style=&quot;color: red;&quot;&gt;android:layout_width&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;fill_parent&quot;&lt;/span&gt;
        &lt;span style=&quot;color: red;&quot;&gt;android:layout_height&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;wrap_content&quot;&lt;/span&gt;
        &lt;span style=&quot;color: red;&quot;&gt;text&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;=&quot;test&quot;&lt;/span&gt;
    &lt;span style=&quot;color: blue;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;LinearLayout&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-size: medium;&quot;&gt;- 실행해 보기&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
이렇게 구성된 뷰를 Activity 에 넣고 실행해 보면 아래와 같은 화면이 나옵니다.&lt;br /&gt;
마우스를 클릭,이동 할때마다 색깔이 변경되는것을 볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://cfile10.uf.tistory.com/image/165A164B4D26C8D421307E&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;318&quot; src=&quot;http://cfile23.uf.tistory.com/image/207DC55A4D26C8D405446A&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;447&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://cfile25.uf.tistory.com/image/162F2A474D26C8D50946EF&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://cfile26.uf.tistory.com/image/172E9D474D26C8D60D5B03&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;450&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://cfile9.uf.tistory.com/image/166C3C494D26C8D62042E2&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;321&quot; src=&quot;http://cfile26.uf.tistory.com/image/142F164C4D26C8D624E3B9&quot; style=&quot;background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;452&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/8301909615484980341/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/customview.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8301909615484980341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8301909615484980341'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/customview.html' title='CustomView 생성하기'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-8988966085869928950</id><published>2011-06-13T17:26:00.001+09:00</published><updated>2011-06-13T17:30:04.945+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Temp"/><title type='text'>분석 자료.</title><content type='html'>안드로이드 빌드전에 처리해야 할 일들.&lt;br /&gt;
&lt;a href=&quot;http://blog.naver.com/shlee7708?Redirect=Log&amp;amp;logNo=120131974681&quot;&gt;http://blog.naver.com/shlee7708?Redirect=Log&amp;amp;logNo=120131974681&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
안드로이드 풀 소스 빌드 방법.&lt;br /&gt;
&lt;a href=&quot;http://blog.daum.net/hopefullife/115&quot;&gt;http://blog.daum.net/hopefullife/115&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://mydroid.tistory.com/?page=3&quot;&gt;http://mydroid.tistory.com/?page=3&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://hyyoo.egloos.com/400495&quot;&gt;http://hyyoo.egloos.com/400495&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://forum.falinux.com/zbxe/?document_srl=517788&quot;&gt;http://forum.falinux.com/zbxe/?document_srl=517788&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=schweine7&amp;amp;logNo=40121818804&amp;amp;viewDate=&amp;amp;currentPage=1&amp;amp;listtype=0&quot;&gt;http://blog.naver.com/PostView.nhn?blogId=schweine7&amp;amp;logNo=40121818804&amp;amp;viewDate=&amp;amp;currentPage=1&amp;amp;listtype=0&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
안드로이드 소스 다운 및 이클립스에서 소스 연결하기.&lt;br /&gt;
&lt;a href=&quot;http://blog.wimy.com/357&quot;&gt;http://blog.wimy.com/357&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Slidingdrawer 예제.&lt;br /&gt;
&lt;a href=&quot;http://yoonhg84.tistory.com/67&quot;&gt;http://yoonhg84.tistory.com/67&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/8988966085869928950/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/blog-post_13.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8988966085869928950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8988966085869928950'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/blog-post_13.html' title='분석 자료.'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-533994057335505317</id><published>2011-06-13T14:52:00.000+09:00</published><updated>2011-06-13T14:52:51.623+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>이클립스로 안드로이드 소스받기.</title><content type='html'>안드로이드 소스를 이클립스에서 GIT 플러그인을 사용해 손쉽게 받을 수 있게 한다.&lt;br /&gt;
&lt;br /&gt;
하지만 안드로이드 버전별 소스를 다운받는 방법은 설명이 없다 ㅠ&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://hightin.tistory.com/16&quot;&gt;http://hightin.tistory.com/16&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/533994057335505317/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/blog-post.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/533994057335505317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/533994057335505317'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/blog-post.html' title='이클립스로 안드로이드 소스받기.'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-5513292008744831391</id><published>2011-06-10T14:14:00.000+09:00</published><updated>2011-06-10T14:14:16.655+09:00</updated><title type='text'>VMware Workstation</title><content type='html'>VMware Workstation 파일 다운로드 사이트.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://qkrtmdqo2003.blog.me/150103807325&quot;&gt;http://qkrtmdqo2003.blog.me/150103807325&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/5513292008744831391/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/vmware-workstation.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/5513292008744831391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/5513292008744831391'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/06/vmware-workstation.html' title='VMware Workstation'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-8711568135390678699</id><published>2011-05-27T15:29:00.000+09:00</published><updated>2011-05-27T15:29:55.694+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Alarm"/><title type='text'>Alarm Controller, PendingIntent</title><content type='html'>▦&amp;nbsp;&lt;span style=&quot;color: #474747; font-size: x-small;&quot;&gt;AlarmController&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #474747;&quot;&gt;AlarmController &lt;/span&gt;Class와 매치되는 XML은 alarm_controller.xml &lt;span style=&quot;color: black;&quot;&gt;(&lt;span style=&quot;color: #474747;&quot;&gt;AlarmController&lt;/span&gt;.java)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;span style=&quot;background-color: #dbe9fb; color: #474747;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.&lt;span style=&quot;color: #666666; font-size: x-small;&quot;&gt;alarm_controller&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;button Listener 설정 (&lt;span style=&quot;color: #474747; font-size: x-small;&quot;&gt;AlarmController &lt;/span&gt;.java)&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button button = (Button)findViewById(R.id.one_shot);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(mOneShotListener);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button)findViewById(R.id.start_repeating);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(mStartRepeatingListener);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button = (Button)findViewById(R.id.stop_repeating);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; button.setOnClickListener(mStopRepeatingListener);&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;oen short alarm button 을 클릭하면 한번만 30초 후 알람을 호출 한다. (&lt;span style=&quot;color: #474747; font-size: x-small;&quot;&gt;AlarmController &lt;/span&gt;.java)&lt;br /&gt;
누르자 마자 &quot;one-shot alarm will go off ~~~ &quot;토스트 메시지 나온고, 30초 뒤에 &quot;the one-shot alarm has gone off&quot; 토스트 메시지가 나오게 된다.&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private OnClickListener mOneShotListener = 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;
&lt;br /&gt;
&lt;div style=&quot;margin-left: 4em;&quot;&gt;// 알람이 동작할때, BroadcastReceiver로 인텐트를 브로트 캐스트&amp;nbsp;하길 원한다.&lt;br /&gt;
// 여기서 우리는 인텐트를 만든다 명시적인 클레스 이름으로 우리가 가지고 있는 &lt;br /&gt;
// Receiver(AndroidManifest.xml 안에 공용으로 존재하는)를 설명하고 호출되면, &lt;br /&gt;
// IntentSender는 브로드캐스트처럼 인텐트가 실행된다.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(AlarmController.this, OneShotAlarm.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; PendingIntent sender = PendingIntent.getBroadcast(AlarmController.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; 0, intent, 0);&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;nbsp;지금으로부터 30초 뒤에 알람이 켜지길 원한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Calendar calendar = Calendar.getInstance();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; calendar.setTimeInMillis(System.currentTimeMillis());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; calendar.add(Calendar.SECOND, 30);&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;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; AlarmManager am = (AlarmManager)getSystemService(ALARM_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; am.&lt;strong&gt;set&lt;/strong&gt;(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);&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;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; if (mToast != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mToast.cancel();&lt;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; mToast = Toast.makeText(AlarmController.this, R.string.one_shot_scheduled,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.LENGTH_LONG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mToast.show();&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;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border-bottom: #f3c534 1px solid; border-left: #f3c534 1px solid; border-right: #f3c534 1px solid; border-top: #f3c534 1px solid; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;strong&gt;PendingIntent (위임된, 보류된? 인텐트)&lt;/strong&gt;커뮤니케이션에는 메세지(Intent), 송신자(startActivity, startService 호출), 수신자(Intent filter 가지고 있음)&amp;nbsp;라는 3가지 기본 요소가 있다. &lt;br /&gt;
PendingIntent는 인텐트를 전송하고자 하는 &#39;송신자&#39;가 인텐트를 생성한 후, 인텐트를 나중에 대신 전달 하고자 할때 사용&lt;br /&gt;
예) 친구에게 내 카드를 주며, 돈을 대신 찾아 달라는 것. 카드 악용을 맞기 위해 권한 설정&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; ※ IntentSender는 PendingIntent와 유사하며, 권한 관리 설정을 할수 없음. 사용시 PendingIntent 생성뒤 getIntentSender() 호출하여야 함.&lt;br /&gt;
&lt;div class=&quot;autosourcing-stub&quot;&gt;&lt;div style=&quot;font-family: Dotum; font-size: 12px; font-style: normal; font-weight: normal; margin: 11px 0px 7px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;참고 : &lt;a href=&quot;http://blog.naver.com/huewu?Redirect=Log&amp;amp;logNo=110084228131&quot;&gt;http://blog.naver.com/huewu?Redirect=Log&amp;amp;logNo=110084228131&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
단순히 activity를 상속 받는 것이 아닌, Broadcast와 같이 &lt;strong&gt;activity를 상속받지 않은 class의 경우&lt;/strong&gt;, startActivity(intent)를 사용하지 못하는데, 이때 PendingIntent를 사용 할수 있다.&lt;br /&gt;
&lt;br /&gt;
예제) pi를 이용하여 클래스이름.class를 호출한다.&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;Intent i = new Intent( mContext, 보낼클래스이름.class );&lt;br /&gt;
PendingIntent pi =&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;PendingIntent.getActivity(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT);&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Toast.makeText(mContext, str, 0).show();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;pi.send();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;} catch (CanceledException e) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;참고 : &lt;a href=&quot;http://www.cyworld.com/bluekirao_Ov/3218155&quot;&gt;http://www.cyworld.com/bluekirao_Ov/3218155&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;&lt;span style=&quot;font-size: 11pt;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: normal;&quot;&gt;&lt;table class=&quot;jd-sumtable&quot; id=&quot;constants&quot; style=&quot;border-bottom-width: 0px; border-collapse: collapse; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; empty-cells: show; font-size: 0.9em; margin: 0.5em 1em 1em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 526px;&quot;&gt;&lt;tbody style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;tr class=&quot; api apilevel-1&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;td class=&quot;jd-typecol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: right; vertical-align: top;&quot;&gt;int&lt;/td&gt;&lt;td class=&quot;jd-linkcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot;&gt;&lt;a class=&quot;con_link&quot; href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_CANCEL_CURRENT&quot; style=&quot;color: #006699; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #006699;&quot;&gt;FLAG_CANCEL_CURRENT&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;jd-descrcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot; width=&quot;100%&quot;&gt;이전에 생성한 PendingIntent 는 취소하고, 새롭게 하나를 만듭니다. (친구에게 예전에 빌려준 카드를 정지 시키고 새롭게 하나 신청합니다.)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;alt-color api apilevel-1&quot; style=&quot;background-color: #f6f6f6; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;td class=&quot;jd-typecol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: right; vertical-align: top;&quot;&gt;int&lt;/td&gt;&lt;td class=&quot;jd-linkcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot;&gt;&lt;a class=&quot;con_link&quot; href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_NO_CREATE&quot; style=&quot;color: #006699; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #006699;&quot;&gt;FLAG_NO_CREATE&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;jd-descrcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot; width=&quot;100%&quot;&gt;현재 생성된 PendingIntent 를 반환 합니다. (친구 보고 내가 빌려준 카드를 당장 가져와 보라고 요청합니다. 이 후에, 해당 카드를 회수 할 수도 있습니다.)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot; api apilevel-1&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;td class=&quot;jd-typecol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: right; vertical-align: top;&quot;&gt;int&lt;/td&gt;&lt;td class=&quot;jd-linkcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot;&gt;&lt;a class=&quot;con_link&quot; href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_ONE_SHOT&quot; style=&quot;color: #006699; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #006699;&quot;&gt;FLAG_ONE_SHOT&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;jd-descrcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot; width=&quot;100%&quot;&gt;이 플래그를 이용해 생성된 PendingIntent 는 단 한번 밖에 사용될 수 없습니다. (일회용 카드)&lt;/td&gt;&lt;/tr&gt;
&lt;tr class=&quot;alt-color api apilevel-3&quot; style=&quot;background-color: #f6f6f6; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;td class=&quot;jd-typecol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: right; vertical-align: top;&quot;&gt;int&lt;/td&gt;&lt;td class=&quot;jd-linkcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot;&gt;&lt;a class=&quot;con_link&quot; href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT&quot; style=&quot;color: #006699; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: #006699;&quot;&gt;FLAG_UPDATE_CURRENT&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;jd-descrcol&quot; style=&quot;border-bottom: rgb(204,204,204) 1px solid; border-left: rgb(204,204,204) 1px solid; border-right: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; margin: 0px; padding-bottom: 6px; padding-left: 12px; padding-right: 12px; padding-top: 6px; text-align: left; vertical-align: top;&quot; width=&quot;100%&quot;&gt;만일 이미 생성된 PendingIntent 가 존재 한다면, 해당 Intent 의 내용을 변경합니다. (친구에게 전화해서, 인출할 돈의 액수를 다시 알려줍니다.)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class=&quot;autosourcing-stub&quot;&gt;&lt;div style=&quot;font-family: Dotum; font-size: 12px; font-style: normal; font-weight: normal; margin: 11px 0px 7px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border-bottom: #f3c534 1px solid; border-left: #f3c534 1px solid; border-right: #f3c534 1px solid; border-top: #f3c534 1px solid; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;strong&gt;PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags)&lt;/strong&gt;&lt;br /&gt;
브로드캐스트 실행할 PendingIntent를 반환한다. &lt;a href=&quot;http://developer.android.com/reference/android/content/Context.html#sendBroadcast(android.content.Intent)&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: blue; font-family: Courier New;&quot;&gt;Context.sendBroadcast()&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; 호출하는것과 같다.&lt;br /&gt;
매개변수&lt;br /&gt;
&amp;nbsp; context : 브로드 캐스트 실행할 PendingIntent의 Context&lt;br /&gt;
&amp;nbsp;&amp;nbsp;requestCode : sender에게 요청 코드(현재 사용되지 않음)&lt;br /&gt;
&amp;nbsp; intent :&amp;nbsp;브로드캐스트 할 Intent&lt;br /&gt;
&amp;nbsp; flags :&amp;nbsp;&amp;nbsp;&lt;a href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_ONE_SHOT&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: blue; font-family: Courier New;&quot;&gt;FLAG_ONE_SHOT&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;, &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_NO_CREATE&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: blue;&quot;&gt;FLAG_NO_CREATE&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_CANCEL_CURRENT&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: blue;&quot;&gt;FLAG_CANCEL_CURRENT&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt;, &lt;code&gt;&lt;a href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: blue;&quot;&gt;FLAG_UPDATE_CURRENT&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;또는 &lt;a href=&quot;http://developer.android.com/reference/android/content/Intent.html#fillIn(android.content.Intent, int)&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: blue;&quot;&gt;Intent.fillIn()&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;에 의해 지원되는&lt;/code&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;다른&amp;nbsp;flag들. 실제 전달될때 제공되는 Intent의 어떤 불특정 부분을 제어할수 있다.&lt;/code&gt;반환값 : 주어진 매개변수와 일치하는 PendingIntent를 새로 생성하거나 존재할때 반환. &lt;a href=&quot;http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_NO_CREATE&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: blue; font-family: Courier New;&quot;&gt;FLAG_NO_CREATE&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; 가 제공될경우에만 null을 반환할수 있다.&lt;/div&gt;&lt;div style=&quot;font-family: Dotum; font-size: 12px; font-style: normal; font-weight: normal; margin: 11px 0px 7px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;Start Repeating Alarm button&amp;nbsp; 클릭하면 반복적으로&amp;nbsp;알람을 &lt;span style=&quot;color: #474747; font-size: x-small;&quot;&gt;호출하게 된다.&lt;/span&gt;(&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #474747; font-size: x-small;&quot;&gt;AlarmController &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.java)&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private OnClickListener mStartRepeatingListener = 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; //&amp;nbsp;위와는 달리 IntentSender 자체를 여러번 전송할 수 있도록 설정한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(AlarmController.this, RepeatingAlarm.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; PendingIntent sender = PendingIntent.getBroadcast(AlarmController.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; 0, intent, 0);&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; long firstTime = SystemClock.elapsedRealtime();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; firstTime += 15*1000;&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; AlarmManager am = (AlarmManager)getSystemService(ALARM_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; am.&lt;strong&gt;setRepeating&lt;/strong&gt;(AlarmManager.ELAPSED_REALTIME_WAKEUP,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; firstTime, 15*1000, sender);&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; if (mToast != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mToast.cancel();&lt;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; mToast = Toast.makeText(AlarmController.this, R.string.repeating_scheduled,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.LENGTH_LONG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mToast.show();&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;/div&gt;&lt;br /&gt;
&lt;div class=&quot;autosourcing-stub&quot;&gt;&lt;div style=&quot;font-family: Dotum; font-size: 12px; font-style: normal; font-weight: normal; margin: 11px 0px 7px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Stop Repeating Alarm button&amp;nbsp; 클릭하면 반복적으로&amp;nbsp;알람을 정지&lt;span style=&quot;color: #474747; font-size: x-small;&quot;&gt;하게 된다.&lt;/span&gt;(&lt;/span&gt;&lt;span style=&quot;color: #474747; font-size: x-small;&quot;&gt;AlarmController &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;.java)&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private OnClickListener mStopRepeatingListener = 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; // Create the same intent, and thus a matching IntentSender, for&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the one that was scheduled.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(AlarmController.this, RepeatingAlarm.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; PendingIntent sender = PendingIntent.getBroadcast(AlarmController.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; 0, intent, 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; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // And cancel the alarm.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AlarmManager am = (AlarmManager)getSystemService(ALARM_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; am.&lt;strong&gt;cancel&lt;/strong&gt;(sender);&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; // Tell the user about what we did.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (mToast != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mToast.cancel();&lt;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; mToast = Toast.makeText(AlarmController.this, R.string.repeating_unscheduled,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Toast.LENGTH_LONG);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mToast.show();&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;/div&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border-bottom: #f3c534 1px solid; border-left: #f3c534 1px solid; border-right: #f3c534 1px solid; border-top: #f3c534 1px solid; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;strong&gt;AlarmManager&lt;/strong&gt;일정 간격으로 스케쥴링 하고 싶을때 사용하는 서비스 (스레드로도 구현 가능하나 데드락 고민필요)&lt;br /&gt;
서비스 이므로, 항상 활성화 시키며, 어플리케이션 종료나 비활성화시 해제해주지 않으면 계속 뜬다.&lt;br /&gt;
&lt;br /&gt;
사용방법 &lt;br /&gt;
1. 명시적 인텐트 설정&lt;br /&gt;
&amp;nbsp; Intent intent = new Intent( MyClass.this, AlarmReceiver.class);&lt;br /&gt;
2. 브로드 캐스트 송신자 설정&lt;br /&gt;
&amp;nbsp; PendingIntent sender = PendingIntent.getBroadcast( MyClass.this, 0, intent, 0);&lt;br /&gt;
3. 시간 설정&lt;br /&gt;
&amp;nbsp; long firstTime = System.currentTimeMillis();&lt;br /&gt;
4. 서비스 객체 얻기&lt;br /&gt;
&amp;nbsp; AlarmManager alarm = (AlarmManager) Context.getSystemService( Context.ALARM_SERVICE );&lt;br /&gt;
5. 알람등록(반복)&lt;br /&gt;
&amp;nbsp; alarm.setRepeating( AlarmManager.RTC_WAKEUP, firstTime, 10000, sender);&lt;br /&gt;
&lt;br /&gt;
수신 하기 : 사용하기 전에 Receiver를 등록 해야 한다. &lt;br /&gt;
ex) &amp;lt;application android ~~~~ &amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;receiver android:name=&quot;AlarmReceiver&quot; android:process=&quot;:remote&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. BroadcastReceiver을 상속한 클래스 구성&lt;br /&gt;
&amp;nbsp; public class AlarmReceiver extends BroadcastReceiver {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
2. onReceive 오버라이딩 (실제 동작)&lt;br /&gt;
&amp;nbsp; public void onReceive( Context context, Intent intent) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&amp;nbsp; }&lt;br /&gt;
&lt;br /&gt;
참고 : &lt;a href=&quot;http://blog.daum.net/hopefullife/87&quot;&gt;http://blog.daum.net/hopefullife/87&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border-bottom: #f3c534 1px solid; border-left: #f3c534 1px solid; border-right: #f3c534 1px solid; border-top: #f3c534 1px solid; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;1.스레드를 사용하여 특정 시간 후 작업 처리 방법&lt;br /&gt;
핸들러에 스레드 연결, &lt;br /&gt;
&lt;br /&gt;
예제) 10초 후 일 처리&lt;br /&gt;
private Handler mHandler;&lt;br /&gt;
mHandler.postDelayed( new Runnable() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; public void run() {&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; ...&lt;br /&gt;
&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}, 1000);&lt;br /&gt;
&lt;br /&gt;
2. 다른 스레드에서 UI관련 함수 실행을 원할 경우&lt;br /&gt;
UI와 관련된 함수는 대부분 UI스레드에서만 호출 될 수 있다.&lt;br /&gt;
&amp;nbsp; view.post(Runnable action) &lt;br /&gt;
&amp;nbsp; : view에서도 편리함을 위해 메시지를 post 해주는 함수 존재&lt;br /&gt;
&lt;br /&gt;
참고 : &lt;a href=&quot;http://blog.naver.com/pjsin865?Redirect=Log&amp;amp;logNo=120066422409&quot;&gt;http://blog.naver.com/pjsin865?Redirect=Log&amp;amp;logNo=120066422409&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/8711568135390678699/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/alarm-controller-pendingintent.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8711568135390678699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8711568135390678699'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/alarm-controller-pendingintent.html' title='Alarm Controller, PendingIntent'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-535630949943792243</id><published>2011-05-27T14:19:00.002+09:00</published><updated>2011-05-27T14:19:51.113+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Activity"/><title type='text'>Theme.Wallpaper - 배경화면을 백그라운드로</title><content type='html'>배경화면을 백그라운드로 설정하는 예제&lt;br /&gt;
&lt;br /&gt;
AndroidManifest.xml 에서 테마로 Wallpaper가 설정 되어 있다.&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=&quot;.app.WallpaperActivity&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;@string/activity_wallpaper&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;&lt;strong&gt;@style/Theme.Wallpaper&lt;/strong&gt;&quot;&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=&quot;android.intent.action.MAIN&quot; /&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=&quot;android.intent.category.SAMPLE_CODE&quot; /&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;/div&gt;&lt;br /&gt;
Styles.xml에 Theme.Wallpaper 가 정의 되어 있으며 부모로 android:style/Theme.Wallpaper을 설정했다. -&amp;gt;&amp;nbsp;배경화면 설정&amp;nbsp; &lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style name=&quot;Theme.Wallpaper&quot; parent=&quot;android:style/Theme.Wallpaper&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name=&quot;android:colorForeground&quot;&amp;gt;#fff&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;WallpaperActivity &lt;/span&gt;Class와 매치되는 XML은 translucent_background.xml (&lt;span style=&quot;color: #474747;&quot;&gt;WallpaperActivity.java&lt;/span&gt;)&lt;/span&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;span style=&quot;background-color: #dbe9fb; color: #474747;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.translucent_background);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/535630949943792243/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/themewallpaper.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/535630949943792243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/535630949943792243'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/themewallpaper.html' title='Theme.Wallpaper - 배경화면을 백그라운드로'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-6550439447951854588</id><published>2011-05-27T13:55:00.001+09:00</published><updated>2011-05-27T13:56:35.830+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Activity"/><title type='text'>Translucent Blur - Activity 반투명 테마</title><content type='html'>배경이 흐릿하게 보이는 예제.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AndroidManifest.xml 에서 테마로 Transparent가 설정 되어 있다.&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;activity android:name=&quot;.app.TranslucentBlurActivity&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;@string/activity_translucent_blur&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;&lt;strong&gt;@style/Theme.Transparent&lt;/strong&gt;&quot;&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=&quot;android.intent.action.MAIN&quot; /&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=&quot;android.intent.category.SAMPLE_CODE&quot; /&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;/div&gt;&lt;br /&gt;
Styles.xml에 Theme.Transparent가 정의 되어 있으며 불투명 설정, 에니메이션 등을 설정.&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style name=&quot;Theme.Transparent&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name=&quot;android:windowIsTranslucent&quot;&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=&quot;android:windowAnimationStyle&quot;&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=&quot;android:windowBackground&quot;&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=&quot;android:windowNoTitle&quot;&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=&quot;android:colorForeground&quot;&amp;gt;#fff&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #474747;&quot;&gt;TranslucentBlurActivity &lt;/span&gt;Class와 매치되는 XML은 translucent_background.xml (&lt;span style=&quot;color: #474747;&quot;&gt;TranslucentBlurActivity.java&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;span style=&quot;background-color: #dbe9fb; color: #474747;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.translucent_background);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;color: black;&quot;&gt;▦ &lt;span style=&quot;color: #666666; font-size: x-small;&quot;&gt;translucent_background&lt;/span&gt;.xml 파일&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #e7fdb5; border-bottom: #9fd331 1px solid; border-left: #9fd331 1px solid; border-right: #9fd331 1px solid; border-top: #9fd331 1px solid; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;TextView xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot; android:id=&quot;@+id/text&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;fill_parent&quot; android:layout_height=&quot;fill_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:gravity=&quot;center_vertical|center_horizontal&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/translucent_background&quot;/&amp;gt;&lt;/div&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;span style=&quot;color: #474747;&quot;&gt;윈도우의 설정을 불러와서 Blur(흐림효과) 설정을 해준다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #dbe8fb; border-bottom: #79a5e4 1px dashed; border-left: #79a5e4 1px dashed; border-right: #79a5e4 1px dashed; border-top: #79a5e4 1px dashed; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;span style=&quot;background-color: #dbe9fb; color: #474747;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&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;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
LayoutParams의 속성의 종류&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: small Gulim; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: arial, sans-serif; font-size: 13px;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;jd-details api apilevel-1&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0px 0px 1em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;jd-details-descr&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0.5em 0.25em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;jd-tagdata&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; margin: 0.5em 1em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;ul class=&quot;nolist&quot; style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; list-style-type: none; margin: 0px 0px 1em 1em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_BLUR_BEHIND&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_BLUR_BEHIND&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;: 윈도우 뒤의 모든것을&amp;nbsp;흐리게 한다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DIM_BEHIND&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_DIM_BEHIND&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;: 윈도우 뒤의 모든것을 어둡게 한다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_NOT_FOCUSABLE&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_NOT_FOCUSABLE&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;: 윈도우 에서 키 입력 포커스를 갖지 않는다. 사용자가 키나 다른 버튼의 이벤트를 보낼수 없다. 어떤 포커스 윈도우 대신에 뒤에 남을 것이다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_NOT_TOUCHABLE&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_NOT_TOUCHABLE&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&amp;nbsp;: 윈도우는 터치 이벤트를 절대 받을수 없다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_NOT_TOUCH_MODAL&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_NOT_TOUCH_MODAL&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;: 윈도우가 포커스 될때 조차(FLAG_NOT_FOCUSABLE이 설정되지 않음) 윈도우 외부의 어떤 포인터 이벤트도 윈도우 뒤로 보내는것을 허락한다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_LAYOUT_IN_SCREEN&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_LAYOUT_IN_SCREEN&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;: 윈도우의 전체 화면 내에서, 경계(별명으로 상태표시줄)&amp;nbsp;주위의 장식을 무시한다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_DITHER&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_DITHER&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;: 진동 설정&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_KEEP_SCREEN_ON&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_KEEP_SCREEN_ON&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;: 사용자가 윈도우&amp;nbsp;표시되는 동안, 화면을 켜고 밝게 해준다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_FULLSCREEN&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_FULLSCREEN&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;: 모든 화면 장식(상태표시줄 등)이 창이 표시 되는 동안 숨긴다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_FORCE_NOT_FULLSCREEN&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_FORCE_NOT_FULLSCREEN&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;: FLAG_FULLSCREEN 과 화면 장식(상태표시줄 같은) 보여지는 것을 무시한다.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;/code&gt;&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_IGNORE_CHEEK_PRESSES&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;&lt;em&gt;FLAG_IGNORE_CHEEK_PRESSES&lt;/em&gt;&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt; &lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; line-height: 1.3em; margin: 0px; padding-bottom: 2px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;span style=&quot;font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;nbsp;:&amp;nbsp;사용자의 뺨이 화면에 닫는 등의 이벤트를 감지 하지 않기 원할때 필터 설정.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/6550439447951854588/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/translucent-blur.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6550439447951854588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6550439447951854588'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/translucent-blur.html' title='Translucent Blur - Activity 반투명 테마'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-5690589431873744359</id><published>2011-05-27T11:30:00.000+09:00</published><updated>2011-05-27T11:30:24.409+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Activity"/><title type='text'>Translucent - Activity 반투명 테마</title><content type='html'>Activity 가 실행될때 기존에 있던 Activity 를 반투명한 배경으로 보여준다.&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=&quot;.app.TranslucentActivity&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;@string/activity_translucent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;&lt;span style=&quot;color: red;&quot;&gt;&lt;strong&gt;@style/Theme.Translucent&lt;/strong&gt;&quot;&lt;/span&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-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=&quot;android.intent.action.MAIN&quot; /&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=&quot;android.intent.category.SAMPLE_CODE&quot; /&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;
= Styles.xml&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;lt;style name=&quot;Theme.Translucent&quot; parent=&quot;&lt;strong&gt;android:style/Theme.Translucent&lt;/strong&gt;&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name=&quot;android:windowBackground&quot;&amp;gt;@drawable/translucent_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=&quot;android:windowNoTitle&quot;&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=&quot;android:colorForeground&quot;&amp;gt;#fff&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/5690589431873744359/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/translucent-activity.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/5690589431873744359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/5690589431873744359'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/translucent-activity.html' title='Translucent - Activity 반투명 테마'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-3020335729243629767</id><published>2011-05-27T11:05:00.001+09:00</published><updated>2011-05-27T11:06:54.538+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Wallpaper"/><title type='text'>WallpaperManager</title><content type='html'>Wallpaper 이미지 가져오기 및 이미지 필터 적용하기.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final Drawable wallpaperDrawable = wallpaperManager.getDrawable();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; final ImageView imageView = (ImageView) findViewById(R.id.imageview);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;imageView.setDrawingCacheEnabled(true);&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageView.setImageDrawable(wallpaperDrawable);&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; WallpaperManager 인스턴스를 가져와서 ImageView에 그려준다.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Button randomize = (Button) findViewById(R.id.randomize);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; randomize.setOnClickListener(new 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 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; &lt;span style=&quot;color: blue;&quot;&gt;int mColor = (int) Math.floor(Math.random() * mColors.length);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wallpaperDrawable.setColorFilter(mColors[mColor], PorterDuff.Mode.MULTIPLY);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageView.setImageDrawable(wallpaperDrawable);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; imageView.invalidate();&lt;/span&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;
&lt;br /&gt;
=&amp;gt; 랜덤으로 적용된 이미지 필터를 ImageView에 적용한다.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wallpaperManager.setBitmap(imageView.getDrawingCache());&lt;br /&gt;
&lt;br /&gt;
=&amp;gt; 변경한 이미지를 Wallpaper 에 적용한다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;background-color: #fefeb8; border-bottom: #fefeb8 1px solid; border-left: #fefeb8 1px solid; border-right: #fefeb8 1px solid; border-top: #fefeb8 1px solid; padding-bottom: 10px; padding-left: 10px; padding-right: 10px; padding-top: 10px;&quot;&gt;&lt;strong&gt;void setDrawingCacheEnabled(boolean enabled)&lt;/strong&gt;&lt;br /&gt;
:&amp;nbsp;그림 캐쉬 설정/미설정. 그림 캐쉬가 설정되면, 다음에 &lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: small Gulim; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #333333; font-family: arial, sans-serif; font-size: 13px; line-height: 16px;&quot;&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/View.html#getDrawingCache()&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;getDrawingCache()&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/code&gt;&lt;span class=&quot;Apple-converted-space&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: black; font-family: 돋움; font-size: x-small;&quot;&gt;또는&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;code style=&quot;color: #007000; font-family: monospace; line-height: 1em;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/View.html#buildDrawingCache()&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;buildDrawingCache()&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style=&quot;color: black; font-family: 돋움; font-size: x-small;&quot;&gt;에 대해 호출되어 View에서 비트맵을 그릴것이다.&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;캐쉬가 설정되었을때 &lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: small Gulim; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #007000; font-family: monospace; font-size: 13px; line-height: 13px;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/View.html#draw(android.graphics.Canvas)&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;draw(android.graphics.Canvas)&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;호출은 캐쉬로부터 그리지 않을 것이다. 캐쉬로 부터 이득을 얻으려면, 반드시 비트맵이 Null이 아닌 경우 화면에&amp;nbsp;그리는&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; border-collapse: separate; color: black; font: small Gulim; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: #007000; font-family: monospace; font-size: 13px; line-height: 13px;&quot;&gt;&lt;a href=&quot;http://comxp.tistory.com/reference/android/view/View.html#getDrawingCache()&quot; style=&quot;color: #006699;&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #006699;&quot;&gt;getDrawingCache()&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&amp;nbsp;를 호출하여 그리는 캐쉬 요청해야한다. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/3020335729243629767/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/wallpaper.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/3020335729243629767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/3020335729243629767'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/wallpaper.html' title='WallpaperManager'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-5945094832802294722</id><published>2011-05-27T10:53:00.000+09:00</published><updated>2011-05-27T10:53:27.846+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><title type='text'>Math</title><content type='html'>Math.random()&lt;br /&gt;
=&amp;nbsp;&quot;0.0 이상에서 1.0 미만&quot; 의 double형 실수 값을 반환합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 즉, 0.0 은 나올 수 있지만 1.0 은 나올 수 없습니다.&lt;br /&gt;
Math.ceil()&lt;br /&gt;
= 올림.&lt;br /&gt;
&lt;br /&gt;
Math.floor()&lt;br /&gt;
= 내림.&lt;br /&gt;
&lt;br /&gt;
Math.round()&lt;br /&gt;
= 반올림.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[ 예 제 ]&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;moreless_content&quot; id=&quot;content887_0&quot; style=&quot;display: block;&quot;&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.ceil(1.4)&amp;nbsp;&amp;nbsp; = 2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.ceil(1.6)&amp;nbsp;&amp;nbsp; = 2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.ceil(-1.4)&amp;nbsp; = -1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.ceil(-1.6)&amp;nbsp; = -1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.floor(1.4)&amp;nbsp; = 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.floor(1.6)&amp;nbsp; = 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.floor(-1.4) = -2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.floor(-1.6) = -2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.round(1.4)&amp;nbsp; = 1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.round(1.6)&amp;nbsp; = 2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.round(-1.4) = -1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Verdana;&quot;&gt;&lt;span style=&quot;font-family: Symbol;&quot;&gt;&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;span style=&quot;font-family: Courier New;&quot;&gt;Math.round(-1.6) = -2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/5945094832802294722/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/math.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/5945094832802294722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/5945094832802294722'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/math.html' title='Math'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-2155122035505520035</id><published>2011-05-27T10:32:00.000+09:00</published><updated>2011-05-27T10:32:11.432+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Activity"/><title type='text'>Activity 화면 방향 설정 - setRequestedOrientation</title><content type='html'>Activity 의 화면을 동적으로 설정 할수 있습니다.&lt;br /&gt;
&lt;br /&gt;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)&lt;br /&gt;
= 세로방향.&lt;br /&gt;
&lt;br /&gt;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)&lt;br /&gt;
= 가로방향.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_PORTRAIT,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_USER,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_BEHIND,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_SENSOR,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_NOSENSOR,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR,</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/2155122035505520035/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/activity-setrequestedorientation.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/2155122035505520035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/2155122035505520035'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/activity-setrequestedorientation.html' title='Activity 화면 방향 설정 - setRequestedOrientation'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-3778516758040020413</id><published>2011-05-25T14:32:00.000+09:00</published><updated>2011-05-25T14:32:30.534+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-EditText"/><title type='text'>FreezesText - EditText</title><content type='html'>EditText 에서 android:freezesText = &quot;true&quot; 설정하면&amp;nbsp;화면 모드 전환시 EditText가&lt;br /&gt;
현재 상태를 계속 유지 할수있다.&lt;br /&gt;
( 현재 커서 위치, 입력된 Text 임시 저장 )&lt;br /&gt;
&lt;br /&gt;
간단한 예제를 살펴보자.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EditText android:id=&quot;@+id/saved&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_weight=&quot;1&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:background=&quot;@drawable/green&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/initial_text&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;android:freezesText=&quot;true&quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;&amp;lt;requestFocus /&amp;gt;&amp;nbsp;-&amp;nbsp;해당 EditText 에 포커스를 주기 위해서 추가함.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/EditText&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class SaveRestoreState extends Activity&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;protected void onCreate(Bundle savedInstanceState) {&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(savedInstanceState);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // See assets/res/any/layout/save_restore_state.xml for this&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // view layout definition, which is being set here as&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the content of our screen.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.save_restore_state);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set message to be appropriate for this screen.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((TextView)findViewById(R.id.msg)).setText(R.string.save_restore_msg);&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; * Retrieve the text that is currently in the &quot;saved&quot; editor.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CharSequence getSavedText() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return ((EditText)findViewById(R.id.saved)).getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; /**&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * Change the text that is currently in the &quot;saved&quot; editor.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void setSavedText(CharSequence text) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((EditText)findViewById(R.id.saved)).setText(text);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;}</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/3778516758040020413/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/freezestext-edittext.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/3778516758040020413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/3778516758040020413'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/freezestext-edittext.html' title='FreezesText - EditText'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-306008893852856877</id><published>2011-05-25T12:29:00.000+09:00</published><updated>2011-05-25T12:29:18.974+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Intent"/><title type='text'>Intent 유용한 Flag</title><content type='html'>&lt;div style=&quot;line-height: 2;&quot;&gt;Activity 간의 호출을 위해 Intent 를 사용한다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;하지만 아래와 같이 그냥 호출만 하게되면 호출 순서대로 차곡차곡&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;Activity Stack 에 쌓이게 된다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;startActivity(new Intent(ReorderThree.this, ReorderFour.class));&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;스택에 쌓이는 Activity 의 순서를 바꿔주기 위해서 안드로이드에서&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;FLAG_ACTIVITY 라는것을 제공해 주고있다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(ReorderFour.this, ReorderTwo.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; &lt;span style=&quot;color: red;&quot;&gt;intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startActivity(intent);&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;몇가지의 FLAG_ACTIVITY 들을 제공해 주고있다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;FLAG_ACTIVITY_SINGLE_TOP &lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;-&amp;gt; 스택에 자기 자신 하나만 기록되게 한다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;FLAG_ACTIVITY_NO_HISTORY&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;-&amp;gt; 스택에 자신이 기록되지 않게 한다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;FLAG_ACTIVITY_REORDER_TO_FRONT&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;-&amp;gt; 스택에 자신을 최상위로 올려준다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;FLAG_ACTIVITY_CLEAR_TOP&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;-&amp;gt; 스택에 호출된 자신 외에는 모두 종료시킨다.&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;자세한 설명은 &lt;/div&gt;&lt;div style=&quot;line-height: 2;&quot;&gt;&lt;a href=&quot;http://blog.naver.com/PostView.nhn?blogId=huewu&amp;amp;logNo=110087045138&quot;&gt;http://blog.naver.com/PostView.nhn?blogId=huewu&amp;amp;logNo=110087045138&lt;/a&gt;&amp;nbsp;참조.&lt;/div&gt;&lt;div class=&quot;autosourcing-stub&quot;&gt;&amp;nbsp;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/306008893852856877/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/intent-flag.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/306008893852856877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/306008893852856877'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/intent-flag.html' title='Intent 유용한 Flag'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-6446164311651203955</id><published>2011-05-23T17:42:00.001+09:00</published><updated>2011-05-23T17:43:03.813+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Intent"/><title type='text'>액티비티에서 결과값 받기 - Intent</title><content type='html'>A 라는 액티비티에서 B 라는 액티비티를 호출 후&lt;br /&gt;
B 액티비티에서 어떤 작업을 수행 후 결과값을 A 에게 보내줄때도&lt;br /&gt;
Intent 가 사용된다.&lt;br /&gt;
&lt;br /&gt;
- B 액티비티 호출.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent(ReceiveResult.this, SendResult.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; &lt;span style=&quot;color: red;&quot;&gt;startActivityForResult&lt;/span&gt;(intent, &lt;span style=&quot;color: red;&quot;&gt;GET_CODE&lt;/span&gt;);&lt;br /&gt;
&lt;br /&gt;
- B 액티비티에서 결과값 리턴.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setResult(&lt;span style=&quot;color: red;&quot;&gt;RESULT_OK&lt;/span&gt;, (new Intent()).&lt;span style=&quot;color: red;&quot;&gt;setAction&lt;/span&gt;(&quot;Corky!&quot;));&lt;br /&gt;
&lt;br /&gt;
- A 액티비티에서 결과값 받기.&lt;br /&gt;
&amp;nbsp;protected void &lt;span style=&quot;color: red;&quot;&gt;onActivityResult&lt;/span&gt;(int requestCode, int resultCode, Intent data) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (requestCode == &lt;span style=&quot;color: red;&quot;&gt;GET_CODE&lt;/span&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; Editable text = (Editable)mResults.getText();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (resultCode == RESULT_CANCELED) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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.append(&quot;(cancelled)&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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.append(&quot;(okay &quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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.append(Integer.toString(resultCode));&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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.append(&quot;) &quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 (data != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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.append(data.&lt;span style=&quot;color: red;&quot;&gt;getAction()&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: blue;&quot;&gt;&lt;strong&gt;&amp;lt;==&amp;nbsp;여기에서 결과값을 읽어옴.&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; text.append(&quot;\n&quot;);&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; }</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/6446164311651203955/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/intent_23.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6446164311651203955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/6446164311651203955'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/intent_23.html' title='액티비티에서 결과값 받기 - Intent'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-8375264055386058801</id><published>2011-05-23T17:03:00.002+09:00</published><updated>2011-05-23T17:03:57.952+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Contact"/><title type='text'>전화번호부 예제 - QuickContactsDemo</title><content type='html'>public class QuickContactsDemo extends ListActivity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final String[] CONTACTS_SUMMARY_PROJECTION = new String[] {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contacts._ID, // 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; Contacts.DISPLAY_NAME, // 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; Contacts.STARRED, // 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; Contacts.TIMES_CONTACTED, // 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; Contacts.CONTACT_PRESENCE, // 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; Contacts.PHOTO_ID, // 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; Contacts.LOOKUP_KEY, // 6&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contacts.HAS_PHONE_NUMBER, // 7&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_ID_COLUMN_INDEX = 0;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_NAME_COLUMN_INDEX = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_STARRED_COLUMN_INDEX = 2;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_TIMES_CONTACTED_COLUMN_INDEX = 3;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_PRESENCE_STATUS_COLUMN_INDEX = 4;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_PHOTO_ID_COLUMN_INDEX = 5;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_LOOKUP_KEY = 6;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; static final int SUMMARY_HAS_PHONE_COLUMN_INDEX = 7;&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(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; String select = &quot;((&quot; + Contacts.DISPLAY_NAME + &quot; NOTNULL) AND (&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + Contacts.HAS_PHONE_NUMBER + &quot;=1) AND (&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + Contacts.DISPLAY_NAME + &quot; != &#39;&#39; ))&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cursor c =&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getContentResolver().query(Contacts.CONTENT_URI, CONTACTS_SUMMARY_PROJECTION, select,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null, Contacts.DISPLAY_NAME + &quot; COLLATE LOCALIZED ASC&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; startManagingCursor(c);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ContactListItemAdapter adapter = new ContactListItemAdapter(this, R.layout.quick_contacts, c);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setListAdapter(adapter);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; private final class ContactListItemAdapter extends ResourceCursorAdapter {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ContactListItemAdapter(Context context, int layout, Cursor c) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super(context, layout, c);&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; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void bindView(View view, Context context, Cursor cursor) {&lt;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 ContactListItemCache cache = (ContactListItemCache) view.getTag();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextView nameView = cache.nameView;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; QuickContactBadge photoView = cache.photoView;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Set the name&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cursor.copyStringToBuffer(SUMMARY_NAME_COLUMN_INDEX, cache.nameBuffer);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int size = cache.nameBuffer.sizeCopied;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cache.nameView.setText(cache.nameBuffer.data, 0, size);&lt;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 long contactId = cursor.getLong(SUMMARY_ID_COLUMN_INDEX);&lt;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 String lookupKey = cursor.getString(SUMMARY_LOOKUP_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; cache.photoView.assignContactUri(Contacts.getLookupUri(contactId, lookupKey));&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; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public View newView(Context context, Cursor cursor, ViewGroup 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; View view = super.newView(context, cursor, 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; ContactListItemCache cache = new ContactListItemCache();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cache.nameView = (TextView) view.findViewById(R.id.name);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cache.photoView = (QuickContactBadge) view.findViewById(R.id.badge);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; view.setTag(cache);&lt;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 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; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; final static class ContactListItemCache {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public TextView nameView;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public QuickContactBadge photoView;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public CharArrayBuffer nameBuffer = new CharArrayBuffer(128);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/8375264055386058801/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/quickcontactsdemo.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8375264055386058801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/8375264055386058801'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/quickcontactsdemo.html' title='전화번호부 예제 - QuickContactsDemo'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-902721207278280615</id><published>2011-05-23T16:05:00.000+09:00</published><updated>2011-05-23T16:05:53.097+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-SharedPreferences"/><title type='text'>임시 저장 - SharedPreferences</title><content type='html'>SharedPreferences 는 임시변수나 현재 UI 정보같은 작은 크기의 정보를 저장하기 적합하다.&lt;br /&gt;
&lt;br /&gt;
조금 더 큰 데이터는 직접 파일에 쓰거나 SQL 을 사용하여 DB 에 저장하도록 하여야 한다. &lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; protected void onPause() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onPause();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SharedPreferences.Editor editor = getPreferences(0).edit();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editor.putString(&quot;text&quot;, mSaved.getText().toString());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editor.putInt(&quot;selection-start&quot;, mSaved.getSelectionStart());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editor.putInt(&quot;selection-end&quot;, mSaved.getSelectionEnd());&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; editor.commit();&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; protected void onResume() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; super.onResume();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SharedPreferences prefs = getPreferences(0); &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String restoredText = prefs.getString(&quot;text&quot;, null);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (restoredText != null) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mSaved.setText(restoredText, TextView.BufferType.EDITABLE);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int selectionStart = prefs.getInt(&quot;selection-start&quot;, -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; int selectionEnd = prefs.getInt(&quot;selection-end&quot;, -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; if (selectionStart != -1 &amp;amp;&amp;amp; selectionEnd != -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; mSaved.setSelection(selectionStart, selectionEnd);&lt;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; }</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/902721207278280615/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/sharedpreferences.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/902721207278280615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/902721207278280615'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/sharedpreferences.html' title='임시 저장 - SharedPreferences'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-365627886922534847</id><published>2011-05-23T14:37:00.000+09:00</published><updated>2011-05-23T14:37:45.147+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Intent"/><title type='text'>액티비티 호출하기 - intent</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Intent intent = new Intent();&lt;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 style=&quot;color: red;&quot;&gt;intent.setClass(Forwarding.this-호출하는 액티비티, ForwardTarget.class-호출할 액티비티);&lt;/span&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; startActivity(intent);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; finish();</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/365627886922534847/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/intent.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/365627886922534847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/365627886922534847'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/intent.html' title='액티비티 호출하기 - intent'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-1716084589283858643</id><published>2011-05-23T14:08:00.000+09:00</published><updated>2011-05-23T14:09:48.691+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Dialog"/><title type='text'>액티비티를 다이얼로그로 띄우기 - DialogActivity</title><content type='html'>Activity 를 Dialog 로 띄우는 간단한 예제.&lt;br /&gt;
&lt;br /&gt;
CustomDialog 보다 구현하기 편하고 심플하다.&lt;br /&gt;
&lt;br /&gt;
public class DialogActivity extends Activity {&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;protected void onCreate(Bundle savedInstanceState) {&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(savedInstanceState);&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 style=&quot;color: blue;&quot;&gt;requestWindowFeature(Window.FEATURE_LEFT_ICON);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.dialog_activity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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.R.drawable.ic_dialog_alert);&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AndroidManifest.xml 파일에서 테마를 지정해 준다.&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=&quot;.app.DialogActivity&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;@string/activity_dialog&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style=&quot;color: red;&quot;&gt;android:theme=&quot;@android:style/Theme.Dialog&quot;&lt;/span&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-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=&quot;android.intent.action.MAIN&quot; /&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=&quot;android.intent.category.SAMPLE_CODE&quot; /&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;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/1716084589283858643/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/dialogactivity.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/1716084589283858643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/1716084589283858643'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/dialogactivity.html' title='액티비티를 다이얼로그로 띄우기 - DialogActivity'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-504486545991325698</id><published>2011-05-23T13:53:00.000+09:00</published><updated>2011-05-23T13:53:59.308+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Title"/><title type='text'>타이틀바를 내맘대로 - CustomTitle</title><content type='html'>액티비티 화면 상단에 나타나는 타이틀 바를 내맘대로 바꿀수 있다.&lt;br /&gt;
&lt;br /&gt;
코드는 생각보다 간단하다.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.custom_title);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style=&quot;color: red;&quot;&gt;getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title_1);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;R.layout.custom_title_1.xml&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;파일에 타이틀 바에서 보여주고 싶은 것을 구성한다.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
아래는 TextView 2개를 타이틀바 왼쪽과 오른쪽에 배치한 레이아웃이다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;RelativeLayout xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot; android:id=&quot;@+id/screen&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot; android:layout_height=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:orientation=&quot;vertical&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView android:id=&quot;@+id/left_text&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_alignParentLeft=&quot;true&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/custom_title_left&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;TextView android:id=&quot;@+id/right_text&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_height=&quot;wrap_content&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_alignParentRight=&quot;true&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/custom_title_right&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/RelativeLayout&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/504486545991325698/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/customtitle.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/504486545991325698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/504486545991325698'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/customtitle.html' title='타이틀바를 내맘대로 - CustomTitle'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-1364404553430315959</id><published>2011-05-23T11:49:00.000+09:00</published><updated>2011-05-23T13:55:07.016+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Dialog"/><title type='text'>액티비티를 다이얼로그로 띄우기 - CustomDialogActivity</title><content type='html'>Dialog 테마를 사용해서 Activity 를 Dialog 처럼 배경위에 띄울 수 있다.&lt;br /&gt;
&lt;br /&gt;
다른 Activity 에서 아래 CustomDialogActivity 를 Intent 로 호출하면 Dialog 창이 뜬다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[ CustomDialogActivity.java ]&lt;br /&gt;
&lt;br /&gt;
public class CustomDialogActivity extends Activity {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;
&amp;nbsp;protected void onCreate(Bundle savedInstanceState) {&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(savedInstanceState);&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; // See assets/res/any/layout/dialog_activity.xml for this&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // view layout definition, which is being set here as&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the content of our screen.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setContentView(R.layout.custom_dialog_activity);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
[ custom_dialog_activity.xml ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TextView xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot; android:id=&quot;@+id/text&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:layout_width=&quot;match_parent&quot; android:layout_height=&quot;match_parent&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:gravity=&quot;center_vertical|center_horizontal&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; android:text=&quot;@string/custom_dialog_activity_text&quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
위의 두 파일을 보면 Activity 에서 TextView 를 보여주는것 외에는 별다른점이 없다.&lt;br /&gt;
&lt;br /&gt;
어디에서 CustomDialog 를 띄워 주는 것일까?&lt;br /&gt;
&lt;br /&gt;
이번 예제에서 가장 중요한 핵심은 AndroidManifest.xml 파일에 있다.&lt;br /&gt;
&lt;br /&gt;
AndroidManifest.xml&amp;nbsp; 파일에서 CustomDialogActivity 를 정의한 부분을 자세히 보자.&lt;br /&gt;
&lt;br /&gt;
[ AndroidManifest.xml ]&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=&quot;.app.CustomDialogActivity&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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=&quot;@string/activity_custom_dialog&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&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 style=&quot;color: red;&quot;&gt;android:theme=&quot;@style/Theme.CustomDialog&quot;&lt;/span&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-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=&quot;android.intent.action.MAIN&quot; /&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=&quot;android.intent.category.SAMPLE_CODE&quot; /&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;
activity 에 테마를 적용하는것을 볼수있다.&lt;br /&gt;
&lt;br /&gt;
[ style.xml ]&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;style name=&quot;Theme.CustomDialog&quot; &lt;span style=&quot;color: red;&quot;&gt;parent=&quot;android:style/Theme.Dialog&quot;&lt;/span&gt;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;item name=&quot;android:windowBackground&quot;&amp;gt;@drawable/filled_box&amp;lt;/item&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[ filled_box.xml ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;shape xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;solid android:color=&quot;#f0600000&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;stroke android:width=&quot;3dp&quot; color=&quot;#ffff8080&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;corners android:radius=&quot;3dp&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;padding android:left=&quot;10dp&quot; android:top=&quot;10dp&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:right=&quot;10dp&quot; android:bottom=&quot;10dp&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/shape&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/1364404553430315959/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/customdialogactivity.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/1364404553430315959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/1364404553430315959'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/customdialogactivity.html' title='액티비티를 다이얼로그로 띄우기 - CustomDialogActivity'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7711235578611450260.post-2304768392893102953</id><published>2011-05-23T11:01:00.000+09:00</published><updated>2011-05-23T11:01:48.162+09:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android-Animation"/><title type='text'>Activity 변경 애니메이션 효과 - overridePendingTransition</title><content type='html'>안드로이드 2.0 ( api level 5 ) 부터 액티비티가 보여지고, 없어질때 뷰처럼 애니메이션을&lt;br /&gt;
설정할 수 있다.&lt;br /&gt;
&lt;br /&gt;
사용법도 간단하다.&lt;br /&gt;
startActivity(); 를 하고, overridePendingTransition( R.anim.new_activity, R.anim.old_activity );&lt;br /&gt;
&lt;br /&gt;
애니메이션이 설정되지 않은 경우는 새 액티비티는 오른쪽에서 슬라이드-인 되고,&lt;br /&gt;
기존 액티비티는 왼쪽으로 슬라이드-아웃 된다.&lt;br /&gt;
&lt;br /&gt;
애니메이션은 기존 방식과 동일하게 res/anim 폴더에 xml 로 작성하던가,&lt;br /&gt;
Animation 객체를 생성해 사용해도 된다.&lt;br /&gt;
&lt;br /&gt;
[ fade - animation ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;alpha xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:interpolator=&quot;@android:anim/accelerate_interpolator&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:fromAlpha=&quot;0.0&quot; android:toAlpha=&quot;1.0&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:duration=&quot;@android:integer/config_longAnimTime&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[&amp;nbsp;hold - animation ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;translate xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:interpolator=&quot;@android:anim/accelerate_interpolator&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:fromXDelta=&quot;0&quot; android:toXDelta=&quot;0&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:duration=&quot;@android:integer/config_longAnimTime&quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[ zoom_enter- animation ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;set xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:interpolator=&quot;@android:anim/decelerate_interpolator&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;scale android:fromXScale=&quot;2.0&quot; android:toXScale=&quot;1.0&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:fromYScale=&quot;2.0&quot; android:toYScale=&quot;1.0&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:pivotX=&quot;50%p&quot; android:pivotY=&quot;50%p&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/set&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[ zoom_exit - animation ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;set xmlns:android=&quot;&lt;a href=&quot;http://schemas.android.com/apk/res/android&quot;&gt;http://schemas.android.com/apk/res/android&lt;/a&gt;&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:interpolator=&quot;@android:anim/decelerate_interpolator&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:zAdjustment=&quot;top&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;scale android:fromXScale=&quot;1.0&quot; android:toXScale=&quot;.5&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:fromYScale=&quot;1.0&quot; android:toYScale=&quot;.5&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:pivotX=&quot;50%p&quot; android:pivotY=&quot;50%p&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; android:duration=&quot;@android:integer/config_mediumAnimTime&quot; /&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;alpha android:fromAlpha=&quot;1.0&quot; android:toAlpha=&quot;0&quot;&lt;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:duration=&quot;@android:integer/config_mediumAnimTime&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/set&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://dotndotandroid.blogspot.com/feeds/2304768392893102953/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/activity-overridependingtransition.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/2304768392893102953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7711235578611450260/posts/default/2304768392893102953'/><link rel='alternate' type='text/html' href='http://dotndotandroid.blogspot.com/2011/05/activity-overridependingtransition.html' title='Activity 변경 애니메이션 효과 - overridePendingTransition'/><author><name>악마깜둥이</name><uri>http://www.blogger.com/profile/12501918359503051679</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>