<?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: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-8775243836814806446</id><updated>2011-12-18T21:20:26.745-08:00</updated><category term='從無到有-實戰Android系統開發列表'/><category term='Android開發雜記'/><category term='從無到有-實戰Android系統開發-系統設計'/><category term='從無到有-實戰Android系統開發-程式實戰'/><category term='Android'/><category term='從無到有-實戰Android系統開發-需求分析'/><title type='text'>龍文圖閣</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>59</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-1916383526499956819</id><published>2011-10-24T07:48:00.000-07:00</published><updated>2011-10-24T10:31:15.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android開發雜記'/><title type='text'>我回來了...</title><content type='html'>不好意思，很久沒有發表文章了。&lt;br /&gt;&lt;br /&gt;Android出的速度也真是快，都到4.0了。不過，我還在研究中。最近，總算是有空閒的時間來發表文章了。請大家多多指教。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-1916383526499956819?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/1916383526499956819/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=1916383526499956819' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1916383526499956819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1916383526499956819'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2011/10/android4.html' title='我回來了...'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-2104580079407710302</id><published>2010-07-28T04:43:00.000-07:00</published><updated>2010-07-28T04:50:22.596-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(8)-生命週期(Life Cycle)</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;span style="mso-tab-count:1"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;        接下來，我們要來討論&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Android&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;系統中，最重要的部份之一，就是&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;的部份，我們將由&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;的&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Lift Cycle&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;來討論它的運作機制，再來就是要如何建立一個&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;。最後，我們再來討論要如何傳送資料給另一個&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;。一步一步來了解&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent:24.0pt"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;首先，在&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Android&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;系統中的&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity(&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;活動&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;)&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;，可以將它想成是一個使用者的操作介面或是一個表單程式即可，原則上它會提供使用者一個互動式的介面功能。而一個應用程式是有多個&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;組成的。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;的生命週期。如圖&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;42&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;所示。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;img src="http://lh5.ggpht.com/_6sTixhigSrc/TFAW8tHm6EI/AAAAAAAAA60/5haSNwzmb8s/s640/Image_042.jpg" style="cursor:pointer; cursor:hand;width: 565px; height: 640px;" border="0" alt="" /&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="center" style="text-align:center"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;圖&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;42&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" align="center" style="text-align:center"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span lang="EN-US"   style="font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family:新細明體;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language: EN-US;mso-fareast-language:ZH-TW;mso-bidi-language:EN-USfont-family:&amp;quot;;font-size:12.0pt;"&gt;  &lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;主要的可以分成三個模式來說明：&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4"&gt;&lt;span lang="EN-US"  style="mso-fareast-font-family:Calibri;mso-bidi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;&lt;span style="mso-list:Ignore"&gt;1.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;foreground process (&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;前景模式&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;span style="mso-tab-count:1"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;此模式就是目前正顯示於手機螢幕上的應用程式畫面，由&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;onCreate()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;、&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onStart()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;、&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;onResume()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;函式呼叫的&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;都會變成正在執行的&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;。發生情況為剛執行某一個應用程式時。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent:18.0pt"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;後續的處理有二種情況：&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="margin-top:0cm" start="1" type="A"&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo1"&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;直接被&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:      ZH-TW"&gt;onDestroy()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;      mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:      ZH-TWfont-family:Calibri;"&gt;結束，該程式將完全關閉。無法再使用任何返回鍵回到該程式。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l2 level1 lfo1"&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;依情況發生&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:      ZH-TW"&gt;visible process&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;      mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:      ZH-TWfont-family:Calibri;"&gt;及&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;background      process&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:      Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;等後續情況。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4"&gt;&lt;span lang="EN-US"  style="mso-fareast-font-family:Calibri;mso-bidi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;&lt;span style="mso-list:Ignore"&gt;2.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;visible process (&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;可見模式&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;span style="mso-tab-count:1"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;此模式就是當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;視窗畫面變成透明時，就會由&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onPause()&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;函式掌控進入暫停狀態，當被呼叫出來的對話視窗、提示時物件結束時，該&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;就會再度被拉到前景模式，而由&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onResume()&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;函式喚醒該&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;視窗。發生情況為應用程式跳出對話視窗與使用者互動時，而原來的視窗會變成透明，而對話視窗就變成前景了。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-indent:18.0pt"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;後續的處理有二種情況：&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="margin-top:0cm" start="1" type="A"&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo2"&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;如果暫停狀態，閒置太久，就會被&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onDestroy()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;      mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;結束，該程式將完全關閉。無法再使用任何返回鍵回到該程式。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l1 level1 lfo2"&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;觸發&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:      ZH-TW"&gt;onResume()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;      mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:      ZH-TWfont-family:Calibri;"&gt;函式喚醒該&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;      mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;視窗。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left:18.0pt;text-indent:-18.0pt;mso-list:l3 level1 lfo4"&gt;&lt;span lang="EN-US"  style="mso-fareast-font-family:Calibri;mso-bidi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;&lt;span style="mso-list:Ignore"&gt;3.&lt;span style="font:7.0pt &amp;quot;Times New Roman&amp;quot;"&gt;      &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;background process (&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;背景模式&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;span style="mso-tab-count:1"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;此模式就是當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;視窗畫面被另一個&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;完全覆蓋時，就會完全看不見。而觸發&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onStop()&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;函式，成為停止的狀態。發生情況為在兩個不同的應用程式開啟時，後來開啟的應用程式會覆蓋原來的應用程式。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;span style="mso-tab-count:1"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;; mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language: ZH-TWfont-family:Calibri;"&gt;後續的處理有三種情況：&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;ol style="margin-top:0cm" start="1" type="A"&gt;  &lt;li class="MsoNormal" style="mso-list:l0 level1 lfo3"&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;直接被&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:      ZH-TW"&gt;onDestroy()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;      mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:      ZH-TWfont-family:Calibri;"&gt;結束，該程式將完全關閉。無法再使用任何返回鍵回到該程式。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l0 level1 lfo3"&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當記憶體足夠時，而另一個&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;關閉時，而由&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onReStart()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;      mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;函式喚醒原來的&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;      mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;。回到原來的狀態。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt;  &lt;li class="MsoNormal" style="mso-list:l0 level1 lfo3"&gt;&lt;span style="font-family:      &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-      mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當其他的&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:      ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:      Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;需要記憶體時，就會優先被清除。釋放出記憶體供其他應用程式來使用。當使用者又再度瀏覽回剛剛被清除的&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;      mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;時，則再執行&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onCreate()&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;      mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;函式重新啟動該&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;      mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;span lang="EN-US"   style="font-family:&amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; mso-fareast-font-family:新細明體;mso-bidi-Times New Roman&amp;quot;;mso-ansi-language: EN-US;mso-fareast-language:ZH-TW;mso-bidi-language:EN-USfont-family:&amp;quot;;font-size:12.0pt;"&gt;  &lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family: Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;而會用到的程式事件，整理如表&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;12&lt;/span&gt;&lt;span style="font-family: &amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi- mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;所示：&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;mso-border-alt:solid black .5pt;  mso-yfti-tbllook:1184;mso-padding-alt:0cm 5.4pt 0cm 5.4pt;mso-border-insideh:  .5pt solid black;mso-border-insidev:.5pt solid black"&gt;  &lt;tbody&gt;&lt;tr style="mso-yfti-irow:0;mso-yfti-firstrow:yes"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   mso-border-alt:solid black .5pt;background:#D9D9D9;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;程式事件&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border:solid black 1.0pt;   border-left:none;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   background:#D9D9D9;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;說明&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border:solid black 1.0pt;   border-left:none;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   background:#D9D9D9;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;時機&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:1"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   border-top:none;mso-border-top-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onCreate()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:   solid black .5pt;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;建立&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   mso-border-top-alt:solid black .5pt;mso-border-left-alt:solid black .5pt;   mso-border-alt:solid black .5pt;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;啟動時觸發。可以進行初始化的動作。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:2"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   border-top:none;mso-border-top-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onStart()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:   solid black .5pt;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;開始&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   mso-border-top-alt:solid black .5pt;mso-border-left-alt:solid black .5pt;   mso-border-alt:solid black .5pt;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;即將被展示給使用者觀看時觸發。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:3"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   border-top:none;mso-border-top-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onResume()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:   solid black .5pt;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;回復&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   mso-border-top-alt:solid black .5pt;mso-border-left-alt:solid black .5pt;   mso-border-alt:solid black .5pt;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;開始跟使用者互動時觸發。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:4"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   border-top:none;mso-border-top-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onPause()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:   solid black .5pt;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;暫停&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   mso-border-top-alt:solid black .5pt;mso-border-left-alt:solid black .5pt;   mso-border-alt:solid black .5pt;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;即將進入背景時觸發。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:5"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   border-top:none;mso-border-top-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onStop()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:   solid black .5pt;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;停止&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   mso-border-top-alt:solid black .5pt;mso-border-left-alt:solid black .5pt;   mso-border-alt:solid black .5pt;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;不再被使用者看到時觸發。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:6"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   border-top:none;mso-border-top-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onRestart()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:   solid black .5pt;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;重置&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   mso-border-top-alt:solid black .5pt;mso-border-left-alt:solid black .5pt;   mso-border-alt:solid black .5pt;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;要從停止狀態重新被展示時觸發。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style="mso-yfti-irow:7;mso-yfti-lastrow:yes"&gt;   &lt;td width="102" valign="top" style="width:76.3pt;border:solid black 1.0pt;   border-top:none;mso-border-top-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;onDestroy()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="57" valign="top" style="width:42.5pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;mso-border-top-alt:   solid black .5pt;mso-border-left-alt:solid black .5pt;mso-border-alt:solid black .5pt;   padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;銷毀&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="410" valign="top" style="width:307.3pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   mso-border-top-alt:solid black .5pt;mso-border-left-alt:solid black .5pt;   mso-border-alt:solid black .5pt;padding:0cm 5.4pt 0cm 5.4pt"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:   Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;當&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;Activity&lt;/span&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;被銷毀之前時觸發，可以進行釋放資源的動作。&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language:ZH-TW"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal" align="center" style="text-align:center"&gt;&lt;span style="font-family:&amp;quot;新細明體&amp;quot;,&amp;quot;serif&amp;quot;;mso-ascii-font-family:Calibri;mso-hansi-mso-fareast-language:ZH-TWfont-family:Calibri;"&gt;表&lt;/span&gt;&lt;span lang="EN-US" style="mso-fareast-language: ZH-TW"&gt;12&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-2104580079407710302?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/2104580079407710302/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=2104580079407710302' title='9 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2104580079407710302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2104580079407710302'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/07/android-8-life-cycle.html' title='從無到有-實戰Android系統開發-程式實戰(8)-生命週期(Life Cycle)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_6sTixhigSrc/TFAW8tHm6EI/AAAAAAAAA60/5haSNwzmb8s/s72-c/Image_042.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5682077991733891009</id><published>2010-05-18T04:10:00.000-07:00</published><updated>2010-05-18T05:11:34.231-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(7)-快捷選單(Context Menu)</title><content type='html'>在上一個章節，我們建立好了選單，而在這個章節，我們要在建立一種快捷選單(Context Menu)的方式。而使用快捷選單的原因，是因為有一些可以立即使用的功能，可以立即使用，不用再選取選單，再執行。最常見的例子就是：在資料列表出來後，可以選取某一筆記錄。停留數秒後，就會出現是要編輯或是刪除的快捷選單。&lt;br /&gt;&lt;br /&gt;在Android建立快捷選單都包含兩個部份，第一個部份是建立選單列的事件方法，可以顯示出來快捷選單。第二部份就是要建立處理選項動作的事件方法。&lt;br /&gt;&lt;br /&gt;在Android主要是用「onCreateContextMenu」事件來建立快捷選單的主體。在某個元件，停留數秒後，就會顯示快捷選單。跟之前不同的地方是，除了要建立出快捷選單外，還要在「onCreate」事件時，先註冊是由那個元件引起的快捷選單。可以參考圖39所示。&lt;br /&gt;&lt;br /&gt;當我們在 Activity 中定義出快捷選單的選項後，接下來就是要處理選取某個選項後，要做那方面的處理。處理的方法會在「onContextItemSelected」事件中定義。&lt;br /&gt;&lt;br /&gt;而在Eclipse平台，有提供一個方便的功能，可以幫我們建立一些可以覆寫的方法，就在選單「Source」中的「Override/Implement Methods」選項，會列出所以可以覆寫或繼承的方法，如圖38所示。選取「onCreateContextMenu」及「onContextItemSelected」方法，再按下「OK」按鈕。Eclipse就會幫我們建立好可覆寫的程式碼，如圖40所示。&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/S_J-fVOLjbI/AAAAAAAAA5U/FLcHF6pvsLs/Image_038.jpg"&gt;&lt;img style="WIDTH: 463px; HEIGHT: 393px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/S_J-fVOLjbI/AAAAAAAAA5U/FLcHF6pvsLs/Image_038.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;圖38&lt;br /&gt;&lt;br /&gt;接下來，就是程式碼方面的撰寫。首先，要先在「onCreate」事件，註冊是由那個元件引起的這個的快捷選單。在下述的範例中，主要是要在TextView元件上出現快捷選單。然後，選取某個選項，就會出現在EditText元件中。&lt;br /&gt;&lt;br /&gt;所以，在「onCreate」事件，先用findViewById方法找到TextView元件，再用this.registerForContextMenu()方法來註冊快捷選單要出現在TextView元件中。範例程式碼，請參考圖39及圖40所示。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/S_J-f__EHdI/AAAAAAAAA5Y/6gMNq3SOtcU/Image_039.jpg"&gt;&lt;img style="WIDTH: 580px; HEIGHT: 340px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/S_J-f__EHdI/AAAAAAAAA5Y/6gMNq3SOtcU/Image_039.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;圖39&lt;br /&gt;&lt;br /&gt;下一步，加入下述程式碼，來建立快捷選單列及選取時，要處理的事件，如圖40所示。主要是在「onCreateContextMenu」事件中，用menu.add方法來建立選單。而在「onContextItemSelected」事件中，要EditText的內容設成item.getTitle()取得的選項名稱即可。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/S_J-gjU9fMI/AAAAAAAAA5g/4HAAoQgRwPc/Image_040.jpg"&gt;&lt;img style="WIDTH: 580px; HEIGHT: 400px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/S_J-gjU9fMI/AAAAAAAAA5g/4HAAoQgRwPc/Image_040.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;圖40&lt;br /&gt;&lt;br /&gt;程式執行的畫面，如圖41所示。當滑鼠停留在TextView元件數秒後，就會出現快捷選單，選取某個選項。就會將選項名稱出現在EditText元件中。&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/S_J-gCKm1yI/AAAAAAAAA5c/wC3VuNSYjvI/Image_041.jpg"&gt;&lt;img style="WIDTH: 328px; HEIGHT: 358px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/S_J-gCKm1yI/AAAAAAAAA5c/wC3VuNSYjvI/Image_041.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;圖41&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5682077991733891009?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5682077991733891009/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5682077991733891009' title='12 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5682077991733891009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5682077991733891009'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/05/android-7-context-menu.html' title='從無到有-實戰Android系統開發-程式實戰(7)-快捷選單(Context Menu)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_6sTixhigSrc/S_J-fVOLjbI/AAAAAAAAA5U/FLcHF6pvsLs/s72-c/Image_038.jpg' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-9031699569645042694</id><published>2010-05-17T02:58:00.000-07:00</published><updated>2010-05-17T03:01:43.777-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(6)-選單(Menu)</title><content type='html'>當我們了解如何加入一個對話框及提示訊息的方法。之後，接下來，我們要來學習如何加入選單列的功能。為什麼要加入選單呢?&lt;br /&gt;&lt;br /&gt;因為Android的選單列就像我們在用Word、Excel等軟體一樣，會將一些常用的功能整理成選單列，方便我們可以直接使用，在Android的選單列也是如此，只是因為手機可以顯示的欄位有限，最好是將常用的功能整理成最少二個，最多六個左右的主選單列，如果有其他功能，可以選取好選單列後，再畫面上顯示出來。以簡單、好用為原則即可。&lt;br /&gt;&lt;br /&gt;在這個章節的範例中，我們要增加二個選單列，一個是About，用來顯示出上個章節的對話框，另一個就是Exit功能，就是離開系統的動作。&lt;br /&gt;&lt;br /&gt;在Android建立選單列都包含兩個部份，第一個部份是建立選單列的使用者介面，可以顯示出來選單。第二部份就是要建立處理選項動作的事件方法。&lt;br /&gt;&lt;br /&gt;在Android主要是用「onCreateOptionsMenu」方法來建立選單列的主體。在 Android機器或模擬器上按下硬體的「Menu」鍵，就會顯示選單列，就是用「onCreateOptionsMenu」方法來定義。&lt;br /&gt;&lt;br /&gt;當我們在 Activity 中定義了「onCreateOptionsMenu」方法之後，按下「Menu」鍵時，就會彈出相對應的選單列。而當我們在Android應用程式的選單列上選擇了相應的選項後，則是依賴「onOptionsItemSelected」方法，來負責處理選單列中各選項所個別對應的動作。&lt;br /&gt;&lt;br /&gt;而在Eclipse平台，有提供一個方便的功能，可以幫我們建立一些可以覆寫的方法，就在選單「Source」中的「Override/Implement Methods」選項，會列出所以可以覆寫或繼承的方法，如圖34所示。選取「onCreateOptionsMenu」及「onOptionsItemSelected」方法，再按下「OK」按鈕。Eclipse就會幫我們建立好可覆寫的程式碼，如圖35所示。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SvfqI_33LZI/AAAAAAAAA0A/6Axi4E37la8/034.JPG"&gt;&lt;img style="WIDTH: 462px; HEIGHT: 390px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SvfqI_33LZI/AAAAAAAAA0A/6Axi4E37la8/034.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖34&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SvfqIse3lnI/AAAAAAAAAz8/7oumiacbsrw/035.JPG"&gt;&lt;img style="WIDTH: 459px; HEIGHT: 350px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SvfqIse3lnI/AAAAAAAAAz8/7oumiacbsrw/035.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖35&lt;br /&gt;&lt;br /&gt;加入下述程式碼，來建立選單列及選取時，要處理的事件，如圖36所示。主要是Menu.FIRST這個函式來了解，在目前的系統中，選單列的編號目前到那個，而再加一就是下一個選單列的編號，依此類推即可。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SvfqIKX12UI/AAAAAAAAAz4/qJbCJ0Uf-JQ/036.JPG"&gt;&lt;img style="WIDTH: 461px; HEIGHT: 461px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SvfqIKX12UI/AAAAAAAAAz4/qJbCJ0Uf-JQ/036.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖36&lt;br /&gt;&lt;br /&gt;程式執行的畫面，如圖37所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SvfqH2-yz-I/AAAAAAAAAz0/3U2qmN40TzQ/s512/037.JPG"&gt;&lt;img style="WIDTH: 340px; HEIGHT: 512px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SvfqH2-yz-I/AAAAAAAAAz0/3U2qmN40TzQ/s512/037.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖37&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-9031699569645042694?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/9031699569645042694/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=9031699569645042694' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/9031699569645042694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/9031699569645042694'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/05/android-6-menu.html' title='從無到有-實戰Android系統開發-程式實戰(6)-選單(Menu)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/SvfqI_33LZI/AAAAAAAAA0A/6Axi4E37la8/s72-c/034.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5685474800638833357</id><published>2010-04-02T03:13:00.000-07:00</published><updated>2010-05-17T03:02:55.780-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(5)-對話框(Dialog)</title><content type='html'>當我們加入程式運算的邏輯判斷程式碼，接下來就是要了解如何加入一個對話框及提示訊息的方法及程式碼，如圖31所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SvaWxk5NDsI/AAAAAAAAAzY/XgB9CKJtEIQ/031.JPG"&gt;&lt;img style="WIDTH: 579px; HEIGHT: 440px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SvaWxk5NDsI/AAAAAAAAAzY/XgB9CKJtEIQ/031.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖31&lt;br /&gt;&lt;br /&gt;簡單的說明一下，新增加程式有那些作用。首先，是如何顯示對話框及提示訊息的方法及程式碼。顯示出對話框的程式碼是在openShowDialog(){ }程式區塊，而提示訊息的程式碼是在openShowToast(){ }程式區塊。&lt;br /&gt;&lt;br /&gt;Tip 4：在使用對話框之前，要先import android.app.AlertDialog類別，而提示訊息要先import android.widget.Toast類別。&lt;br /&gt;&lt;br /&gt;撰寫好二個方法後，可以在上一個章節的程式判斷完成後，再呼叫那二個方法，如圖31所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SvaWwuu0WnI/AAAAAAAAAzQ/_os2QPjamfA/032.JPG"&gt;&lt;img style="WIDTH: 643px; HEIGHT: 292px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SvaWwuu0WnI/AAAAAAAAAzQ/_os2QPjamfA/032.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖32&lt;br /&gt;&lt;br /&gt;程式執行的畫面，如圖32所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SvaWw7erEnI/AAAAAAAAAzU/4w8dps9Z1AQ/033.JPG"&gt;&lt;img style="WIDTH: 327px; HEIGHT: 486px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SvaWw7erEnI/AAAAAAAAAzU/4w8dps9Z1AQ/033.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖33&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5685474800638833357?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5685474800638833357/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5685474800638833357' title='6 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5685474800638833357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5685474800638833357'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/04/android-5.html' title='從無到有-實戰Android系統開發-程式實戰(5)-對話框(Dialog)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/SvaWxk5NDsI/AAAAAAAAAzY/XgB9CKJtEIQ/s72-c/031.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5897788636250285437</id><published>2010-04-01T04:08:00.000-07:00</published><updated>2010-05-17T03:33:08.838-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(4)-程式邏輯架構(Framework)</title><content type='html'>接下來，當我們了解如何設計使用者介面後，下一步，就是要進行簡單的撰寫程式的工作了。並且來說明Android基礎程式邏輯架構。&lt;br /&gt;首先，我們先設計一個簡單的功能程式，就是在文字框中輸入文字，再按下按鈕後，會將輸入的文字資料顯示在文字標籤中。設計出來的介面，如圖28所示。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SvKsgFDzUXI/AAAAAAAAAyM/z5-LsA8lzls/028.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 437px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SvKsgFDzUXI/AAAAAAAAAyM/z5-LsA8lzls/028.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖28&lt;br /&gt;&lt;br /&gt;下一步，在Eclipse的平台上，打開「Memo」專案中的「src/cmd.demo.Memo/」目錄底下的Demo.java檔案，就會先看到Eclipse幫我們預先建立好了基本的程式邏輯。其預設的內容如下，如圖29所示：&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SvKsfJqc0BI/AAAAAAAAAyA/cEoy5aKM2bs/029.JPG"&gt;&lt;img style="WIDTH: 473px; HEIGHT: 350px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SvKsfJqc0BI/AAAAAAAAAyA/cEoy5aKM2bs/029.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖29&lt;br /&gt;&lt;br /&gt;簡單的說明一下，程式邏輯的架構，這個以Java程式語言寫成的檔案。 我們將程式直接拆開，分成二個部份來講解這個「Memo.java」 檔案的內容：&lt;br /&gt;&lt;br /&gt;第一部份是在import那些類別，在Java語言中，要使用到任何API之前，都要事先導入相對應的Package。例如：如果要用到那些控制項的類別、控制項的事件類別等資料時，就要先import進來程式碼，才能使用到。&lt;br /&gt;&lt;br /&gt;第二部份就是程式的主體，由public class Memo extends Activity { }的程式區塊就是我們要撰寫的主體。在裡面的程式碼就是我們程式開始的內容。而「/**」及「*/」是可以進行程式的文字註解。&lt;br /&gt;&lt;br /&gt;在public void onCreate(Bundle savedInstanceState) { }的程式區塊，是預設的啟動方法。&lt;br /&gt;&lt;br /&gt;下一步，當我們了解程式的基本架構後，接下來，就是再加入程式運算的邏輯判斷程式碼，在下述的範例中，主要是來了解如何導入其他用到的模組，如何取得、設定使用者介面元件的資料，如何觸發按鈕的事件方法。完整程式碼，如圖30所示。&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SvP--_oYMLI/AAAAAAAAAy0/rGloVuFGWv0/s512/030.JPG"&gt;&lt;img style="WIDTH: 471px; HEIGHT: 512px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SvP--_oYMLI/AAAAAAAAAy0/rGloVuFGWv0/s512/030.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖30&lt;br /&gt;&lt;br /&gt;簡單的說明一下，新增加程式有那些作用。首先，是如何取得按鈕(Button)的元件，再設定如何設定觸發按鈕的事件方法。&lt;br /&gt;&lt;br /&gt;取得按鈕(Button)的元件的程式碼如下：&lt;br /&gt;Button button = (Button)findViewById(R.id.Button01);&lt;br /&gt;&lt;br /&gt;就是要宣告一個button的實體，再透過findViewById方法，從資源檔中取得對應的介面按鈕元件。取出的是「R.id. Button01」按鈕元件名稱。當輸入R.id時，再按「.」就會出現目前可以取得元件名稱。&lt;br /&gt;&lt;br /&gt;Tip 2：在宣告任何控制項的實體時，要先import android.widget.Button對應的控制項。&lt;br /&gt;&lt;br /&gt;接下來，就是要設定觸發按鈕的事件方法，程式碼如下：&lt;br /&gt;button.setOnClickListener(proc_labelChange);&lt;br /&gt;&lt;br /&gt;就是要用「Button」類別中的「setOnClickListener」方法。在方法中傳入了一個「proc_labelChange」函式。這就是Android 系統的使用者介面互動方式採用常見的事件驅動方式。&lt;br /&gt;&lt;br /&gt;也就是當使用者按下「button」按鈕的時候，Android 系統會去觸發按鈕的「setOnClickListener」方法中所指定的「proc_labelChange」函式。&lt;br /&gt;&lt;br /&gt;接下來就是要寫按鈕觸發事件函式，如下述程式碼區塊：&lt;br /&gt;private OnClickListener proc_labelChange = new OnClickListener()&lt;br /&gt;{&lt;br /&gt;public void onClick(View v)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Tip 3：在宣告任何控制項的事件時，要先import android.view.View.OnClickListener;對應的事件。&lt;br /&gt;&lt;br /&gt;程式的範例中所有的邏輯與運算內容，都放置在這個事件函式程式區塊中。 就是當使用者按下按鈕時，會觸發「OnClickListener」類型的事件函式。&lt;br /&gt;&lt;br /&gt;先宣告EditText及TextView的實體，才可以將輸入的字串，顯示到文字標籤的內容中，程式碼如下：&lt;br /&gt;&lt;br /&gt;EditText txtTitle = (EditText)findViewById(R.id.EditText01);&lt;br /&gt;TextView labTitle = (TextView)findViewById(R.id.TextView01);&lt;br /&gt;&lt;br /&gt;跟上面 button 的宣告一樣，只是改成宣告EditText及TextView實體，透過 findViewById方法，從資源檔中取得對應的文字欄位元件。要記得，要先import對應的控制項。&lt;br /&gt;&lt;br /&gt;接下來的運算邏輯就是將輸入的字串EditText，顯示設定到(setText方法)文字標籤TextView的內容(getText函式)中，程式碼如下：&lt;br /&gt;&lt;br /&gt;labTitle.setText(txtTitle.getText().toString());&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5897788636250285437?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5897788636250285437/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5897788636250285437' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5897788636250285437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5897788636250285437'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/04/android-4.html' title='從無到有-實戰Android系統開發-程式實戰(4)-程式邏輯架構(Framework)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/SvKsgFDzUXI/AAAAAAAAAyM/z5-LsA8lzls/s72-c/028.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-6119317112448691993</id><published>2010-03-30T02:10:00.000-07:00</published><updated>2010-05-17T03:34:13.922-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(3)-使用者介面(User Interface)</title><content type='html'>使用者介面(User Interface)不好意思，最近公司比較忙。所以，在更新文章上，比較慢一些。預計，四月份會正常更新，請大家多多指教。&lt;br /&gt;&lt;br /&gt;接下來，當我們順利的開啟一個新的專案後，接著就是要設計使用者介面了。首先，在Eclipse的平台上，打開「Memo」專案中的「res/layout/main.xml」檔案，就會先看到目前檔案的預覽畫面(就是在Layout預設的頁標籤)，如圖26所示。&lt;br /&gt;接著我們來切換到另一個main.xml的頁標籤來看XML格式的文件，如圖27所示。&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SvKsee9QWWI/AAAAAAAAAx4/Ums43Jro580/s800/026.JPG"&gt;&lt;img style="WIDTH: 800px; HEIGHT: 520px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SvKsee9QWWI/AAAAAAAAAx4/Ums43Jro580/s800/026.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖26&lt;br /&gt;&lt;br /&gt;在Android平台上，使用者介面都是透過「View Group」或「View」類別來顯示。有關「View Group」或「View」類別，可以參考&lt;a href="http://developer.android.com/guide/tutorials/views/index.html"&gt;http://developer.android.com/guide/tutorials/views/index.html&lt;/a&gt; 的範例及說明。&lt;br /&gt;Android提供非常豐富而多樣的介面元件，主要可以分成二種類型：&lt;br /&gt;l 版面配置類型(例如：各種不同的Layout、Tab、List等)：如圖26上面的Layouts當中的元件。也可以參考表10，對於比較常用到的版面配置，進行說明的動作。在後續的章節中，會陸續應用到。&lt;br /&gt;&lt;br /&gt;l 顯示介面類型(例如：文字框、按鈕、輸入欄位等)：如圖26上面的Views當中的元件。也可以參考表11，對於比較常用到的元件，一個一個的說明。在後續的章節中，會陸續應用到。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/S7HALoBiosI/AAAAAAAAA4k/bzuyJkvblcE/Form_10.jpg"&gt;&lt;img style="WIDTH: 565px; HEIGHT: 420px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/S7HALoBiosI/AAAAAAAAA4k/bzuyJkvblcE/Form_10.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/S7HAMFRehqI/AAAAAAAAA4o/HjuwfoYGTn8/s512/Form_11.jpg"&gt;&lt;img style="WIDTH: 369px; HEIGHT: 512px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/S7HAMFRehqI/AAAAAAAAA4o/HjuwfoYGTn8/s512/Form_11.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在Eclipse上，如圖26的畫面，目前，可以從Views或Layouts的視窗中，拖曳元件，拉到預覽畫面。而可以直接來設計介面。切換到「main.xml」的頁標籤來看XML格式的文件內容，如圖27所示。&lt;br /&gt;&lt;br /&gt;基本上，就跟XML元素一樣，有開始的「&lt;」符號就有結束的「&gt;」符號。例如：一個文字顯示的元件在XML標籤表示方式為&lt;textview&gt;，包含在裡面的資料就是它的屬性設定，例如：&lt;br /&gt;在設定寬度時，用到的屬性是：android:layout_width="fill_parent"&lt;br /&gt;設定高度時，用到的屬性是：android:layout_height="wrap_content"&lt;br /&gt;設定文字內容時，用到的屬性是：android:text="@string/hello"&lt;br /&gt;等屬性的設定。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SvKseryqJzI/AAAAAAAAAx8/4vB145qUrYA/027.JPG"&gt;&lt;img style="WIDTH: 708px; HEIGHT: 350px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SvKseryqJzI/AAAAAAAAAx8/4vB145qUrYA/027.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖27&lt;br /&gt;&lt;br /&gt;Tip 1：在Eclipse平台，選取選單「Source」中的「Format」選項，可以整理main.xml檔案裡面的XML資料。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SvKsffIiy4I/AAAAAAAAAyE/T9PTxThqrDY/Tip001.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 350px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SvKsffIiy4I/AAAAAAAAAyE/T9PTxThqrDY/Tip001.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;Tips 1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-6119317112448691993?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/6119317112448691993/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=6119317112448691993' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6119317112448691993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6119317112448691993'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/03/android-3.html' title='從無到有-實戰Android系統開發-程式實戰(3)-使用者介面(User Interface)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6sTixhigSrc/SvKsee9QWWI/AAAAAAAAAx4/Ums43Jro580/s72-c/026.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-6800671954187216508</id><published>2010-03-01T00:06:00.000-08:00</published><updated>2010-05-17T03:34:49.606-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(2)-專案架構(Project Files)</title><content type='html'>首先，我們就先由如何建立一個新的程式專案，來說明一下Android程式專案架構，進入Eclipse平台，選取選單「File」中的「New」選項，再選取「Android Project」的專案。就會出現新增Android專案的畫面，如圖24所示。&lt;br /&gt;&lt;br /&gt;我們將新專案名稱命名為 Memo。 在「Contents」欄位裡，我們選擇「Create new project in workspace」(在工作區域中建立新專案)。所以欄位依預設值來設定即可。&lt;br /&gt;&lt;br /&gt;不過，有一些欄位，是必須由使用者來輸入。請參考如圖7所示。我們要建立一個Memo的專案，可以依圖8的設定值來輸入。&lt;br /&gt;&lt;br /&gt;專案輸入欄位，說明如下：&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/S4tysWbuULI/AAAAAAAAA3M/eEKvhIM3grk/Form_07.jpg"&gt;&lt;img style="WIDTH: 563px; HEIGHT: 217px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/S4tysWbuULI/AAAAAAAAA3M/eEKvhIM3grk/Form_07.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Memo專案，要輸入的欄位值如下：&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/S4tysuPHoxI/AAAAAAAAA3Q/YWF6fU52XqI/Form_08.jpg"&gt;&lt;img style="WIDTH: 565px; HEIGHT: 153px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/S4tysuPHoxI/AAAAAAAAA3Q/YWF6fU52XqI/Form_08.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/S4tyrnkChfI/AAAAAAAAA3A/c0eVnnnZAxw/s512/Image_024.jpg"&gt;&lt;img style="WIDTH: 436px; HEIGHT: 512px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/S4tyrnkChfI/AAAAAAAAA3A/c0eVnnnZAxw/s512/Image_024.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;圖24&lt;br /&gt;&lt;br /&gt;填好所有的資料後，再按下「Finish」 按鈕，就建立好一個新的專案了。 請注意 Package Name 的設定，必須至少由兩個部分所構成。&lt;br /&gt;&lt;br /&gt;「Create Activity」是指定用來產生預設 java 程式碼的文件名稱，與程式碼中預設 Activity 類別 (class) 的名稱。最好是依照 java 語言的命名習慣，將「Create Activity」採用開頭大寫的形式來命名即可。&lt;br /&gt;&lt;br /&gt;回到 Eclipse 的主要畫面，我們會發現Eclipse會自動幫我們建立在 Package Explorer 視窗中的Memo目錄。如圖25所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/S4tyrynLUJI/AAAAAAAAA3E/Xj7lDN-8pWQ/Image_025.jpg"&gt;&lt;img style="WIDTH: 270px; HEIGHT: 245px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/S4tyrynLUJI/AAAAAAAAA3E/Xj7lDN-8pWQ/Image_025.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;圖25&lt;br /&gt;&lt;br /&gt;而預設的目錄架構說明，請參考表9所示：&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/S4tysBjpRJI/AAAAAAAAA3I/RdlmCMmtpbQ/Form_09.jpg"&gt;&lt;img style="WIDTH: 576px; HEIGHT: 392px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/S4tysBjpRJI/AAAAAAAAA3I/RdlmCMmtpbQ/Form_09.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-6800671954187216508?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/6800671954187216508/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=6800671954187216508' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6800671954187216508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6800671954187216508'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/03/android-2.html' title='從無到有-實戰Android系統開發-程式實戰(2)-專案架構(Project Files)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_6sTixhigSrc/S4tysWbuULI/AAAAAAAAA3M/eEKvhIM3grk/s72-c/Form_07.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5169345966648801993</id><published>2010-01-03T23:31:00.000-08:00</published><updated>2010-01-03T23:36:17.853-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(30)-結言</title><content type='html'>深入淺出Android程式設計的系列文章，就告一段落了。發表這一系列的文章。可以說明從Android的基礎說明到初步的開發流程。&lt;br /&gt;&lt;br /&gt;而進階的程式設計及介面上的討論，我是會在下一個系列的文章，再跟各位來進行討論。而下一個系列的文章就是「從無到有-實戰Android系統開發」，就是從一個簡單的記帳系統為例子，來跟大家分享如何從使用者的需求進行分析、設計系統的介面、資料庫的分析、撰寫程式要注意的重點等系統開發的過程。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5169345966648801993?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5169345966648801993/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5169345966648801993' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5169345966648801993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5169345966648801993'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2010/01/android30.html' title='深入淺出Android程式設計(30)-結言'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-9139498757620930778</id><published>2009-12-25T04:06:00.000-08:00</published><updated>2010-05-17T03:07:22.276-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-程式實戰'/><title type='text'>從無到有-實戰Android系統開發-程式實戰(1)-前言(Foreword)</title><content type='html'>程式實戰-如何由系統分析出來流程，來進行程式的撰寫過程，要提出重要的地方來說明分析。&lt;br /&gt;&lt;br /&gt;經過需求分析、系統分析、系統設計等步驟，我們已經將系統的藍圖建構出來了，而在這個章節，我們要做的就是撰寫程式，將我們設計的系統實體化出來。不過，由於如果要將一個系統的程式碼一步一步的說明，就太多了。所以，我們在後續的章節會說明幾個重要的地方即可。依Android從程式撰寫到如何發佈到Android Market上，我們分成27個章節來說明，依下述描述所示：&lt;br /&gt;&lt;br /&gt;預計範例為一個簡單的記事本系統，主要有一個記事列表畫面、編輯記事畫面。在下述的系統需求描述中，()中的項目編號，就是可以應用到的範圍。&lt;br /&gt;&lt;br /&gt;在記事列表畫面(14)，為主畫面。&lt;br /&gt;選單為「系統設定」、「關於」。(5)&lt;br /&gt;「系統設定」(12)為分類編輯、選取語系(13)、是否要訊息提醒、&lt;br /&gt;設定要由前十、十五、三十分鐘等時間來提醒。&lt;br /&gt;「關於」為出現系統訊息。(4)&lt;br /&gt;&lt;br /&gt;在日期、時間到達前十、十五、三十分鐘，出現訊息提醒。(9)&lt;br /&gt;列表時，長時間按住某一列時，會自動出現「編輯」、「刪除」等功能。(6)&lt;br /&gt;&lt;br /&gt;在編輯記事畫面(14)，可以選取日期(4)、時間(4)、屬於那個分類(15、16)、輸入記事內容。&lt;br /&gt;&lt;br /&gt;新增時，新開一個Activity。(7)&lt;br /&gt;編輯時，新開一個Activity，並且帶入一個key值，來查詢資料。(8)&lt;br /&gt;&lt;br /&gt;1、2、3、11等章節為說明Android檔案結構及基礎程式邏輯。&lt;br /&gt;10等章節 程式碼撰寫規範try catch。&lt;br /&gt;&lt;br /&gt;1. 了解Android程式專案架構&lt;br /&gt;2. 如何設計使用者介面&lt;br /&gt;3. 了解Android基礎程式邏輯架構&lt;br /&gt;4. 如何加入對話框(Dialog)&lt;br /&gt;5. 如何加入選單(Menu)&lt;br /&gt;6. 如何加入快捷選單(Context Menu)&lt;br /&gt;7. 如何加入新的視窗(Activity)&lt;br /&gt;8. 如何傳送資料到新視窗(Intent)&lt;br /&gt;9. 如何使用到訊息提醒(Notification)&lt;br /&gt;10. 如何設定記錄及Debug Log訊息(配合try catch機制)&lt;br /&gt;11. 了解什麼是Activity的Life Cycle&lt;br /&gt;12. 如何設定偏好資料(Preference)&lt;br /&gt;13. 如何支援多國語系&lt;br /&gt;14. 如何指定Android螢幕方向(直式、橫式顯示、自動切換)&lt;br /&gt;15. 了解何謂Adapter(接口機制)&lt;br /&gt;16. 如何加入下拉選單元件(Spinner)&lt;br /&gt;&lt;br /&gt;上述範例，先以假想資料來操作。在17-19的章節。會儲存資料到資料庫。&lt;br /&gt;&lt;br /&gt;17. 如何建立SQLite資料庫、資料表&lt;br /&gt;18. 如何存取SQLite資料庫，透過SQLiteOpenHelper類別&lt;br /&gt;19. 如何新增、刪除、更新資料&lt;br /&gt;&lt;br /&gt;上述範例，可以儲存到資料庫後，在編輯記事時，增加地標欄位，可以先預設目前的地標。&lt;br /&gt;在記事列表，增加可以頁標籤，可以切換成地圖模式，顯示在地圖有那些地方有記事。&lt;br /&gt;&lt;br /&gt;20. 如何使用Google地圖的服務&lt;br /&gt;21. 如何使用Map View&lt;br /&gt;22. 如何加入按鍵控制(Key Event)&lt;br /&gt;23. 如何取得現在位置(GPS/基地台三角定位)&lt;br /&gt;24. 如何結合地圖及定位功能(My Location Overlay)&lt;br /&gt;25. 如何在地圖上標上地標(Itemized Overlay)&lt;br /&gt;&lt;br /&gt;完成上述功能，再發佈到Android Market上。&lt;br /&gt;&lt;br /&gt;26. 如何產生應用程式的keys (使用key tools)&lt;br /&gt;27. 如何發佈到Android Market&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-9139498757620930778?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/9139498757620930778/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=9139498757620930778' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/9139498757620930778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/9139498757620930778'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-1_25.html' title='從無到有-實戰Android系統開發-程式實戰(1)-前言(Foreword)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-8237919069474776779</id><published>2009-12-25T04:04:00.000-08:00</published><updated>2010-05-17T03:44:14.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-系統設計'/><title type='text'>從無到有-實戰Android系統開發-系統設計(5)-記帳系統</title><content type='html'>接下來就是次要的所屬資料表，是要將記帳項目是屬於那個所屬的資料，記錄起來，才可以進行查詢、分析等進階功能的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(9)」的新增所屬項目的系統畫面來分析。而有如表5的欄位分析。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SurYQgpsWJI/AAAAAAAAAv8/5jZPuqov7Kk/Form005.JPG"&gt;&lt;img style="WIDTH: 574px; HEIGHT: 106px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SurYQgpsWJI/AAAAAAAAAv8/5jZPuqov7Kk/Form005.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;表5&lt;br /&gt;&lt;br /&gt;最後，是系統相關項目資料的設定，是要將有關系統方面的資料記錄起來，才可以進行系統方面的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(10)」的系統畫面來分析。而有如表6的欄位分析。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SurYQ73BPbI/AAAAAAAAAwA/2hrN4iPw__Y/Form006.JPG"&gt;&lt;img style="WIDTH: 573px; HEIGHT: 157px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SurYQ73BPbI/AAAAAAAAAwA/2hrN4iPw__Y/Form006.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;表6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-8237919069474776779?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/8237919069474776779/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=8237919069474776779' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8237919069474776779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8237919069474776779'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-5.html' title='從無到有-實戰Android系統開發-系統設計(5)-記帳系統'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_6sTixhigSrc/SurYQgpsWJI/AAAAAAAAAv8/5jZPuqov7Kk/s72-c/Form005.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-593526107891941770</id><published>2009-12-25T04:02:00.000-08:00</published><updated>2010-05-17T03:43:54.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-系統設計'/><title type='text'>從無到有-實戰Android系統開發-系統設計(4)-記帳系統</title><content type='html'>接下來就是次要的類別資料表，是要將記帳項目是屬於那個類別的資料，記錄起來，才可以進行查詢、分析等進階功能的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(7)」的新增類別項目的系統畫面來分析。而有如表3的欄位分析。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SurYQP0hK4I/AAAAAAAAAv0/iXWjcJexD6Y/Form003.JPG"&gt;&lt;img style="WIDTH: 575px; HEIGHT: 180px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SurYQP0hK4I/AAAAAAAAAv0/iXWjcJexD6Y/Form003.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;表3&lt;br /&gt;&lt;br /&gt;接下來就是次要的帳戶資料表，是要將記帳項目是屬於那個帳戶的資料，記錄起來，才可以進行查詢、分析等進階功能的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(8)」的新增帳戶項目的系統畫面來分析。而有如表4的欄位分析。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SurYQQ8dqwI/AAAAAAAAAv4/38-dD1uxKO4/Form004.JPG"&gt;&lt;img style="WIDTH: 571px; HEIGHT: 155px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SurYQQ8dqwI/AAAAAAAAAv4/38-dD1uxKO4/Form004.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;表4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-593526107891941770?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/593526107891941770/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=593526107891941770' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/593526107891941770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/593526107891941770'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-4.html' title='從無到有-實戰Android系統開發-系統設計(4)-記帳系統'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6sTixhigSrc/SurYQP0hK4I/AAAAAAAAAv0/iXWjcJexD6Y/s72-c/Form003.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5395248082773053277</id><published>2009-12-25T03:59:00.000-08:00</published><updated>2010-05-17T03:43:30.910-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-系統設計'/><title type='text'>從無到有-實戰Android系統開發-系統設計(3)-記帳系統</title><content type='html'>首先，我們依資料庫模型的分析，列出如表1所示的所有資料表及相關的說明。記帳項目資料表為主要的資料表，而跟它有關連的是三個次要的資料表，分別是類別、帳戶、所屬等資料表。&lt;br /&gt;最後一個資料表是系統設定資料表，是用來設定系統相關的設定，例如：版本、資料庫路徑等欄位。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SuwPL_XPd1I/AAAAAAAAAwg/EAwdn9VE0i8/Form007.JPG"&gt;&lt;img style="WIDTH: 572px; HEIGHT: 156px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SuwPL_XPd1I/AAAAAAAAAwg/EAwdn9VE0i8/Form007.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;表1&lt;br /&gt;&lt;br /&gt;首先，我們先來看主要的資料表，是要將記帳項目的資料，記錄起來，才可以進行查詢、分析等進階功能的應用。設定這些欄位主要是依「從無到有-實戰Android系統開發-系統分析(4)」的新增記帳項目的系統畫面來分析。而有如表2的欄位分析。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SurYPwQTKlI/AAAAAAAAAvw/1FMMPBqipWU/Form002.JPG"&gt;&lt;img style="WIDTH: 572px; HEIGHT: 253px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SurYPwQTKlI/AAAAAAAAAvw/1FMMPBqipWU/Form002.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;表2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5395248082773053277?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5395248082773053277/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5395248082773053277' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5395248082773053277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5395248082773053277'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-3.html' title='從無到有-實戰Android系統開發-系統設計(3)-記帳系統'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_6sTixhigSrc/SuwPL_XPd1I/AAAAAAAAAwg/EAwdn9VE0i8/s72-c/Form007.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-8249965937867352385</id><published>2009-12-25T03:58:00.000-08:00</published><updated>2010-05-17T03:42:39.962-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-系統設計'/><title type='text'>從無到有-實戰Android系統開發-系統設計(2)-記帳系統</title><content type='html'>首先，我們要從系統功能、介面來設計可以儲存資料的資料庫及對應的資料表及欄位。依系統功能，我們可以知道主要是用一個記帳的主要資料表對應到類別、帳戶、所屬等的次要資料表，以及一個可以儲存系統相關資料的資料表。&lt;br /&gt;依這樣的關係，我們整理出來相關資料庫模型，如下表所述：&lt;br /&gt;ER Modem&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SurYPG9-okI/AAAAAAAAAvs/EVOpasC3BQ0/Form001.JPG"&gt;&lt;img style="WIDTH: 574px; HEIGHT: 415px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SurYPG9-okI/AAAAAAAAAvs/EVOpasC3BQ0/Form001.JPG" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-8249965937867352385?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/8249965937867352385/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=8249965937867352385' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8249965937867352385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8249965937867352385'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-2.html' title='從無到有-實戰Android系統開發-系統設計(2)-記帳系統'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_6sTixhigSrc/SurYPG9-okI/AAAAAAAAAvs/EVOpasC3BQ0/s72-c/Form001.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-6325829347186153687</id><published>2009-12-25T03:57:00.000-08:00</published><updated>2010-05-17T03:43:00.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-系統設計'/><title type='text'>從無到有-實戰Android系統開發-系統設計(1)-記帳系統</title><content type='html'>系統設計-如何由系統流程、功能來分析資料庫的設計。&lt;br /&gt;&lt;br /&gt;我們透過需求分析、系統分析，了解一個系統的運作流程及系統功能、介面的整理。接下來，就是要實際的進行撰寫程式的工作。&lt;br /&gt;&lt;br /&gt;不過，在之前，我們還在進行資料庫方面的分析，因為，要儲存記帳方面的資料。就要依系統功能、介面來設計可以儲存資料的資料庫及對應的資料表及欄位。&lt;br /&gt;&lt;br /&gt;首先，我們先來介紹一下Android的預設資料庫SQLite吧。SQLite是一種在嵌入式系統中很常見的資料庫，而且所有的資料都會儲存在一個檔案中。就跟Microsoft Access一樣，是為了方便遷移。而SQLite有簡潔的SQL存取介面、相當快的存取速度，而且僅佔用相對其他資料庫少量的記憶體空間。在Android平台上，SQLite資料庫可以用來儲存應用程式中使用到的資料，還可以透過Content Provider等方式，來讓其他應用程式也可以取得其中的資料。&lt;br /&gt;&lt;br /&gt;在後續的章節中，我們先分析系統功能、介面來設計資料庫，畫出ER模型、資料表與資料表之間的關連，最後，會用一個簡單的例子來說明如何存取SQLite中的資料。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-6325829347186153687?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/6325829347186153687/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=6325829347186153687' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6325829347186153687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6325829347186153687'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-1.html' title='從無到有-實戰Android系統開發-系統設計(1)-記帳系統'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-7190557290315084433</id><published>2009-12-24T04:00:00.000-08:00</published><updated>2009-12-24T04:02:25.574-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(10)</title><content type='html'>最後，我們要做的Prototyping，就是進行一般設定及顯示關於的動作。一進入一般設定的畫面，就先列出目前可以進行一般設定的選項列表。如圖22所示。目前可以設定資料庫及語系等基本功能。&lt;br /&gt;在資料庫選項，可以決定是否要將資料庫的檔案儲存在SD卡中。在語系方面可以進行繁體中文及英文，二種語系的轉換。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SuFyQT-5HpI/AAAAAAAAAsk/o93izhLieNY/022.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SuFyQT-5HpI/AAAAAAAAAsk/o93izhLieNY/022.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖22&lt;br /&gt;&lt;br /&gt;回到系統一開始進入的畫面，按下手機上的「menu」按鈕時，會出現「帳戶結餘」、「設定」、「關於」等選項。按下「關於」功能畫面，就會顯示出系統的相關資訊，例如：版本、作者、網站等資訊。如圖23所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SuFyQnlniPI/AAAAAAAAAso/RyiDN49H69Q/023.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SuFyQnlniPI/AAAAAAAAAso/RyiDN49H69Q/023.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖23&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-7190557290315084433?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/7190557290315084433/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=7190557290315084433' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7190557290315084433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7190557290315084433'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-10.html' title='從無到有-實戰Android系統開發-系統分析(10)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6sTixhigSrc/SuFyQT-5HpI/AAAAAAAAAsk/o93izhLieNY/s72-c/022.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-6099884025706689893</id><published>2009-12-24T03:58:00.000-08:00</published><updated>2009-12-24T04:02:48.677-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(9)</title><content type='html'>接下來，我們要做的Prototyping，就是進行設定歸屬項目的動作。一進入歸屬項目的畫面，就先列出所有的歸屬列表。如圖20所示。&lt;br /&gt;要編輯或刪除某個選項，就長按住某個選項，就會出現「編輯及刪除」的選項視窗。按下「建立新歸屬」按鈕，可以進入新增歸屬畫面。如圖21所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SuFyQD75LZI/AAAAAAAAAsc/kHUPrvqFLe8/020.JPG"&gt;&lt;img style="WIDTH: 351px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SuFyQD75LZI/AAAAAAAAAsc/kHUPrvqFLe8/020.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖20&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在新增歸屬畫面，可以進行歸屬名稱的輸入，如圖21所示。最後再按下「儲存」按鈕來儲存資料到資料庫中，也可以按下「取消」。回到上一層項目。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SuFyQLSN6zI/AAAAAAAAAsg/C0XtxkY6GaY/021.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SuFyQLSN6zI/AAAAAAAAAsg/C0XtxkY6GaY/021.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖21&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-6099884025706689893?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/6099884025706689893/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=6099884025706689893' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6099884025706689893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6099884025706689893'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-9.html' title='從無到有-實戰Android系統開發-系統分析(9)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_6sTixhigSrc/SuFyQD75LZI/AAAAAAAAAsc/kHUPrvqFLe8/s72-c/020.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-8817803465332538828</id><published>2009-12-24T03:57:00.000-08:00</published><updated>2009-12-24T04:03:05.622-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(8)</title><content type='html'>接下來，我們要做的Prototyping，就是進行設定帳戶項目的動作。一進入帳戶項目的畫面，就先依資產、負債的區別來列出所屬的帳戶列表，是以資產區別為預設。如圖18所示。&lt;br /&gt;要編輯或刪除某個選項，就長按住某個選項，就會出現「編輯及刪除」的選項視窗。按下「新增資產(負債)」按鈕，可以進入新增帳戶畫面。如圖19所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SuQVpw5lPpI/AAAAAAAAAuM/76uB1QVvl-s/018.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SuQVpw5lPpI/AAAAAAAAAuM/76uB1QVvl-s/018.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖18&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在新增帳戶畫面，可以進行帳戶名稱、開啟帳戶金額設定的輸入，如圖19所示。而開啟帳戶金額的設定是為了讓使用者可以設定此帳戶目前可以使用的金額。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SuQVptsX8BI/AAAAAAAAAuI/36V6CLB_TUk/019.JPG"&gt;&lt;img style="WIDTH: 352px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SuQVptsX8BI/AAAAAAAAAuI/36V6CLB_TUk/019.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖19&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-8817803465332538828?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/8817803465332538828/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=8817803465332538828' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8817803465332538828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8817803465332538828'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-8.html' title='從無到有-實戰Android系統開發-系統分析(8)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_6sTixhigSrc/SuQVpw5lPpI/AAAAAAAAAuM/76uB1QVvl-s/s72-c/018.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-3156505840962924128</id><published>2009-12-24T03:55:00.000-08:00</published><updated>2009-12-24T03:57:33.690-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(7)</title><content type='html'>接下來，我們要做的Prototyping，就是進行設定類別項目的動作。一進入類別項目的畫面，就先依支出、收人的區別來列出所屬的類別列表，是以支出區別為預設。如圖16所示。&lt;br /&gt;要編輯或刪除某個選項，就長按住某個選項，就會出現「編輯及刪除」的選項視窗。按下「新增新支出(收入)」按鈕，可以進入新增類別畫面。如圖17所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SuQVqDunItI/AAAAAAAAAuQ/m47zoUntbS4/016.JPG"&gt;&lt;img style="WIDTH: 353px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SuQVqDunItI/AAAAAAAAAuQ/m47zoUntbS4/016.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖16&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在新增類別畫面，可以進行類別名稱、此類別預算的輸入，以及是否要判斷使用預算的勾選項目，如圖17所示。是否要判斷使用預算，是讓使用者可以設定此類別預算金額。如果在新增記帳項目時，如果此類別總計的金額超過的話，會提示使用者。&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SuQVqH2iymI/AAAAAAAAAuU/BKWt3rfGC0k/017.JPG"&gt;&lt;img style="WIDTH: 351px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SuQVqH2iymI/AAAAAAAAAuU/BKWt3rfGC0k/017.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖17&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-3156505840962924128?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/3156505840962924128/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=3156505840962924128' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3156505840962924128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3156505840962924128'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-7.html' title='從無到有-實戰Android系統開發-系統分析(7)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6sTixhigSrc/SuQVqDunItI/AAAAAAAAAuQ/m47zoUntbS4/s72-c/016.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-1653591062602129452</id><published>2009-12-22T07:52:00.000-08:00</published><updated>2009-12-24T04:03:31.351-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(29)-如何將Eclipse中文化及方便的小工具DroidDraw</title><content type='html'>在這個最後的章節，我們要介紹如何將Eclipse中文化及方便的小工具DroidDraw的安裝及用法。&lt;br /&gt;&lt;br /&gt;如何將Eclipse中文化，首先，先啟動Eclipse，接下來在選取選單「Help」中的「Software Updates....」選項。&lt;br /&gt;在點選「Software Updates....」選項後，就會出現Software Updates的視窗，切換頁標籤至「Available Software」，再點選「Add Site...」按鈕。就會出現要新增外掛的網址輸入視窗。&lt;br /&gt;在新增外掛的網址輸入視窗，在Location欄位輸入「&lt;a href="http://download.eclipse.org/technology/babel/update-site/ganymede"&gt;http://download.eclipse.org/technology/babel/update-site/ganymede&lt;/a&gt;&lt;br /&gt;」，再按下「OK」按鈕。就會回到原來的Software Updates視窗。&lt;br /&gt;在Software Updates視窗，就會多出剛才輸入的網址而產生出來的選項，點選開來，再勾選「Babel Language Packs in traditional Chinese」選項，再按下「Install」按鈕，進行安裝動作，如圖75、圖76所示。再重新開啟Eclipse，就變成中文化的介面，如圖77所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SQnaLuv3ciI/AAAAAAAAAd4/a8XbaHwzVQQ/75_Language.JPG"&gt;&lt;img style="WIDTH: 450px; HEIGHT: 280px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SQnaLuv3ciI/AAAAAAAAAd4/a8XbaHwzVQQ/75_Language.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖75&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SQnaM1ybrTI/AAAAAAAAAeA/pObL63NqeqU/s720/76_Language_TC.JPG"&gt;&lt;img style="WIDTH: 720px; HEIGHT: 276px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SQnaM1ybrTI/AAAAAAAAAeA/pObL63NqeqU/s720/76_Language_TC.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖76&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/SQnaNBoZimI/AAAAAAAAAeI/pNvQYi6S3yE/77_Project_FileList.JPG"&gt;&lt;img style="WIDTH: 300px; HEIGHT: 391px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/SQnaNBoZimI/AAAAAAAAAeI/pNvQYi6S3yE/77_Project_FileList.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖77&lt;br /&gt;&lt;br /&gt;而方便的小工具DroidDraw，是一個可以讓我們在設計Android介面的好工具，在Eclipse的開發介面沒有提供類似其他開發工具那樣，可以直接拖曳物件的功能，所以，有人就用Java寫了類似的工具，幫助Android的開發人員可以比較直覺的方式來拖曳物件，完成Android的介面。&lt;br /&gt;首先，在連到DroidDraw的網頁(參考網址如下：&lt;a href="http://www.droiddraw.org/"&gt;http://www.droiddraw.org/&lt;/a&gt; )，就會直接出現可以編輯的畫面，如圖78所示。在編輯畫面，可以先設定畫面的層次及螢幕的尺寸。可以選取的選項，如下所述：&lt;br /&gt;Root Layout(畫面層次)：Absolute Layout、Linear Layout、Relative Layout、Scroll View、Table Layout&lt;br /&gt;&lt;br /&gt;Screen Size(螢幕尺寸)：QVGA Land scape、QVGA Portrait、HVGA Land scape、HVGA Portrait&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SQnaNsKkFvI/AAAAAAAAAeQ/cdfsa6-cV8U/s640/78_DroidDraw.JPG"&gt;&lt;img style="WIDTH: 640px; HEIGHT: 391px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SQnaNsKkFvI/AAAAAAAAAeQ/cdfsa6-cV8U/s640/78_DroidDraw.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖78&lt;br /&gt;&lt;br /&gt;可以拖曳物件到編輯畫面上，再選取要編輯的物件，在右上方的視窗，切換到Properties(屬性頁籤)來設定此物件的屬性。編輯好介面後，在右下方，按下「Generate」按鈕來產生對應的XML內容，如圖76所示。&lt;br /&gt;下一步就可以將這個XML內容選取後，複製到Eclipse的介面XML檔案。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SQnaO1T9ThI/AAAAAAAAAeY/fKLx927qaTw/s576/79_Generate.JPG"&gt;&lt;img style="WIDTH: 576px; HEIGHT: 357px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SQnaO1T9ThI/AAAAAAAAAeY/fKLx927qaTw/s576/79_Generate.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖79&lt;br /&gt;&lt;br /&gt;總算結束了鐵人賽的連續發文，謝謝大家的支持。有關Android的介紹不是結束，而是開始。&lt;br /&gt;我會再整理一些有關Android程式開發方面的文章，再分享給大家。預計會用一些程式範例，來說明如何驅動事件、每一個控制項的運作方式、資料庫SQLite的應用、如何使用Map View控制項等進階主題。&lt;br /&gt;如果大家在it邦看不到圖片的話，大家也可以來看我的部落格：&lt;a href="http://estyleservice.blogspot.com/"&gt;http://estyleservice.blogspot.com/&lt;/a&gt;，我會陸續更新之前我寫的文章及後面的進階主題。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-1653591062602129452?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/1653591062602129452/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=1653591062602129452' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1653591062602129452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1653591062602129452'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android29-eclipsedroiddraw.html' title='深入淺出Android程式設計(29)-如何將Eclipse中文化及方便的小工具DroidDraw'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_6sTixhigSrc/SQnaLuv3ciI/AAAAAAAAAd4/a8XbaHwzVQQ/s72-c/75_Language.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5797563830783729092</id><published>2009-12-22T07:21:00.000-08:00</published><updated>2009-12-22T07:22:32.938-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(28)-如何用非Eclipse平台來建立專案，以「Hello,Android!」專案說明</title><content type='html'>在這個章節要來介紹有關如何用非Eclipse平台來建立專案，以「Hello,Android!」專案說明。&lt;br /&gt;&lt;br /&gt;如果不想使用Eclipse，而想用其它IDE開發介面，或者像傳統的C那樣，使用文字編輯器與命令列工具，那麼ADT外掛套件就無法協助來處理這些需求，不過，不用擔心，如果開發人員不會因為不使用Eclipse ADT外掛套件而失去之前章節，所提到的那些功能。&lt;br /&gt;&lt;br /&gt;ADT外掛套件只是將一系列有關Android SDK的工具加以包裝(這些工具，例如：模擬器、aapt、adb、ddms)並且整合在Eclipse平台上，因此，是有可能用其它工具來包裝這些工具，如「Ant」。&lt;br /&gt;&lt;br /&gt;Android SDK會建立的樣版檔案包含了一個可以跟「Ant」相容的build.xml檔案與檔案名稱為「activityCreator.py」的python檔案(在Windows平台為「activityCreator.bat」檔案名稱)，可以為專案建立所有的基本目錄與檔案，讓開發人員可以從命令列建立專案，或者選擇整合到其它的IDE開發工具中。&lt;br /&gt;&lt;br /&gt;例如，可以在Dos視窗，用以下命令建立與Eclipse建立類似的專案架構。請參考之前的章節-「如何在其他IDE或工具開發Android應用程式(上)」當中的描述。&lt;br /&gt;&lt;br /&gt;activityCreator.py --out HelloAndroid com.google.android.hello.HelloAndroid&lt;br /&gt;&lt;br /&gt;下一步，為了建立出專案，開發人員得接著執行「ant」相關命令，然後會在專案路徑底下的bin目錄下會產生一個HelloAndroid.apk檔案，而.apk檔案是一個Android對應用程式的封裝檔案，最後再使用「adb」工具就可以安裝到模擬器來進行測試。&lt;br /&gt;&lt;br /&gt;上述這些運作方式及工具的操作，請參考之前的章節，由深入淺出Android程式設計(15)的章節到深入淺出Android程式設計(21)的章節，都有提到這方面的運作。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5797563830783729092?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5797563830783729092/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5797563830783729092' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5797563830783729092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5797563830783729092'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android28-eclipsehelloandroid.html' title='深入淺出Android程式設計(28)-如何用非Eclipse平台來建立專案，以「Hello,Android!」專案說明'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5261083360185730847</id><published>2009-12-22T07:18:00.000-08:00</published><updated>2009-12-22T07:21:48.020-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(27)-如何進行專案除錯，以「Hello,Android!」專案說明</title><content type='html'>在Eclipse的ADT外掛與Eclipse的除錯整合的非常好，為了要測試這樣的機制，讓我們在程式碼裡插入一個bug，修改一下專案的程式碼如下所述：&lt;br /&gt;&lt;br /&gt;public class HelloAndroid extends Activity {&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle icicle) {&lt;br /&gt;super.onCreate(icicle);&lt;br /&gt;Object o = null;&lt;br /&gt;o.toString();&lt;br /&gt;setContentView(R.layout.main);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;當這樣的變動，加入「Object o = null;」及「o.toString();」等錯誤的程式碼，就會出現「Null Pointer Exception」的錯誤資訊，再一次執行專案時，就會顯示有錯誤訊息，如圖73所示。&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/wenhunglai/SQcTopJRpUI/AAAAAAAAAdQ/bshM547BLCw/s320/73_Project_Error.JPG"&gt;&lt;img style="WIDTH: 302px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://lh3.ggpht.com/wenhunglai/SQcTopJRpUI/AAAAAAAAAdQ/bshM547BLCw/s320/73_Project_Error.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖73&lt;br /&gt;&lt;br /&gt;如果要找出那裡發生錯誤，可以在「Object o = null;」這一行程式碼建立中斷點，使用的方式就是在Eclipse行號左邊區域建立中斷點，如圖74所示，然後選取選單「Run」中的選取「Debug」選項，來載入最後程式進入除錯模式。程式會重啟模擬器，但是，執行到中斷點時，程式會中斷，然後就可以在Eclipse的除錯模式下，一步一步的執行程式碼，如同除錯其它程式一樣。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/wenhunglai/SQcTpSLceHI/AAAAAAAAAdY/9KmwWDqjHoo/74_Error_Code.JPG"&gt;&lt;img style="WIDTH: 473px; CURSOR: hand; HEIGHT: 272px" alt="" src="http://lh5.ggpht.com/wenhunglai/SQcTpSLceHI/AAAAAAAAAdY/9KmwWDqjHoo/74_Error_Code.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖74&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5261083360185730847?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5261083360185730847/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5261083360185730847' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5261083360185730847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5261083360185730847'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android27-helloandroid.html' title='深入淺出Android程式設計(27)-如何進行專案除錯，以「Hello,Android!」專案說明'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/wenhunglai/SQcTopJRpUI/AAAAAAAAAdQ/bshM547BLCw/s72-c/73_Project_Error.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-2320138023403581892</id><published>2009-12-13T07:16:00.000-08:00</published><updated>2009-12-13T07:20:27.021-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(26)-如何將介面升級到以XML方式來排版，以「Hello,Android!」專案說明</title><content type='html'>在這個章節要來介紹有關如何將介面升級到以XML方式來排版，以「Hello,Android!」專案說明。&lt;br /&gt;&lt;br /&gt;如何將介面升級到以XML方式來排板&lt;br /&gt;&lt;br /&gt;在上一個章節，我們所介紹的「Hello,Android!」專案是用開發人員稱之為程式化開發的介面，也就是說直接用程式碼來建構使用者介面，但是，這樣的建構介面的方式會發生許多問題，而小小的排版變動可能導致大部分的程式變更，最大的問題是容易忘記的是如何把正確的介面顯示在螢幕上，這可能導致發生錯誤並浪費時間除錯。&lt;br /&gt;&lt;br /&gt;這也是為什麼Android SDK會提供另一種介面的建立模式，使用XML排版檔案來記錄介面的資料，最簡單了解的方法就是看下述的範例，下面的XML排版檔案內容就是跟剛編譯的程式同樣的的排版建構：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;textview android="http://schemas.android.com/apk/res/android" layout_width="fill_parent" layout_height="fill_parent" text="Hello,Android!"&gt;&lt;br /&gt;&lt;br /&gt;在上述的XML檔案中的標籤(Tag)可以自由使用，結構也很簡單，標籤(Tag)的名稱就是View物件的類別名稱，在這個範例，標籤(Tag)就只有一個「TextView」，開發人類可以使用任何繼承自View物件的類別做為標籤(Tag)名稱，包含一些開發人員所做的類別，這樣的結構比較容易快速建立界面，比起開發人員的程式碼要簡單的多了，這樣的模式受到Web開發的啟示，將參數從程式邏輯抽離只用來填入與取得資料。&lt;br /&gt;&lt;br /&gt;在這個XML使用了一些屬性，大致說明如下：&lt;br /&gt;xmlns:android&lt;br /&gt;&lt;br /&gt;名稱空間宣告，讓Android工具參考Android名稱空間的一般屬性，大部分的XML排版檔必須使用這個名稱空間。&lt;br /&gt;&lt;br /&gt;android:layout_width&lt;br /&gt;&lt;br /&gt;這個屬性宣告View要佔螢幕多少空間，在這個例子，唯一的View要佔用全部的螢幕，所以使用「fill_parent」這個參數，就是填滿的意思。&lt;br /&gt;&lt;br /&gt;android:layout_height&lt;br /&gt;&lt;br /&gt;就像android:layout_width的屬性一樣，除了它是指螢幕可用的高度。&lt;br /&gt;&lt;br /&gt;android:text&lt;br /&gt;&lt;br /&gt;設定TextView包含的文字屬性，這上述的範例中，就是設定成「Hello,Android!」&lt;br /&gt;&lt;br /&gt;那麼這個XML檔案會放在那裡呢?目前的設定是放到專案目錄下的res目錄底下的layout目錄，預設的檔案名稱是main.xml，如圖72所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/wenhunglai/SQcMy3r9gCI/AAAAAAAAAcw/PN_0jAKl6kE/72_Project_List.JPG"&gt;&lt;br /&gt;&lt;img style="WIDTH: 400px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://lh4.ggpht.com/wenhunglai/SQcMy3r9gCI/AAAAAAAAAcw/PN_0jAKl6kE/72_Project_List.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖72&lt;br /&gt;&lt;br /&gt;下一步，打開Package Explorer下原始碼目錄內的R.java檔案，看起來的內容如下所述：&lt;br /&gt;&lt;br /&gt;public final class R {&lt;br /&gt;public static final class attr {&lt;br /&gt;};&lt;br /&gt;public static final class drawable {&lt;br /&gt;public static final int icon=0x7f020000;&lt;br /&gt;};&lt;br /&gt;public static final class layout {&lt;br /&gt;public static final int main=0x7f030000;&lt;br /&gt;};&lt;br /&gt;public static final class string {&lt;br /&gt;public static final int app_name=0x7f040000;&lt;br /&gt;};&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;Android專案的R.java檔用來索引定義在這個檔案的內裡使用的資源，開發人員可以在程式碼內使用這個類別來做為方便參考的索引記錄。&lt;br /&gt;&lt;br /&gt;參考資料：&lt;br /&gt;Android SDK Document &lt;a href="http://code.google.com/android/documentation.html"&gt;http://code.google.com/android/documentation.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-2320138023403581892?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/2320138023403581892/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=2320138023403581892' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2320138023403581892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2320138023403581892'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/26-android26-xmlhelloandroid.html' title='深入淺出Android程式設計(26)-如何將介面升級到以XML方式來排版，以「Hello,Android!」專案說明'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/wenhunglai/SQcMy3r9gCI/AAAAAAAAAcw/PN_0jAKl6kE/s72-c/72_Project_List.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-1271978209981889439</id><published>2009-12-13T06:38:00.000-08:00</published><updated>2009-12-13T07:20:04.758-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(25)-執行程式碼，以「Hello,Android!」專案說明</title><content type='html'>如何執行程式碼&lt;br /&gt;&lt;br /&gt;在Eclipse使用ADT外掛套件，就很容易就可以執行專案程式，進入Eclipse平台，選取選單「Run」中的「Run Configurations…」選項，如圖65所示。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SQVOJj9u1bI/AAAAAAAAAbg/_V-Ge-e9o3g/65_Run_Configurations.JPG"&gt;&lt;img style="WIDTH: 300px; CURSOR: hand; HEIGHT: 156px" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SQVOJj9u1bI/AAAAAAAAAbg/_V-Ge-e9o3g/65_Run_Configurations.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖65&lt;br /&gt;&lt;br /&gt;進入Run Configurations視窗，選取左邊的專案型態為「Android Application」的項目，按下滑鼠右鍵，選取「New」選項，建立新的配置設定，預設會依目前的專案，自動建立所屬的配置設定。如圖66所示&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SQVOKA-TA6I/AAAAAAAAAbo/z1mQ-0FLy0s/66_Run_New.JPG"&gt;&lt;br /&gt;&lt;img style="WIDTH: 300px; CURSOR: hand; HEIGHT: 156px" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SQVOKA-TA6I/AAAAAAAAAbo/z1mQ-0FLy0s/66_Run_New.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖66&lt;br /&gt;&lt;br /&gt;新的配置設定視窗，如圖67所示。在「Name」欄位上輸入「HelloAndroid」配置名稱欄位值，切換到「Android」頁標籤，點選「Browse...」來選擇所屬的專案，而ADT外掛套件會掃瞄專案內的每一個Activity的子類別加到Activity標籤下的下拉項目，因為目前Hello,Android專案只有一個Activity，所預設值就直接選取即可，其他項目使用預設值即可。如圖68所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SQVOK-sHmvI/AAAAAAAAAbw/GcD2_RC68kY/s576/67_Run_Setting.JPG"&gt;&lt;br /&gt;&lt;img style="WIDTH: 300px; CURSOR: hand; HEIGHT: 156px" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SQVOK-sHmvI/AAAAAAAAAbw/GcD2_RC68kY/s576/67_Run_Setting.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖67&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SQVOLGssJXI/AAAAAAAAAb4/WB89_jf7ClU/68_Run_Finish.JPG"&gt;&lt;br /&gt;&lt;img style="WIDTH: 300px; CURSOR: hand; HEIGHT: 156px" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SQVOLGssJXI/AAAAAAAAAb4/WB89_jf7ClU/68_Run_Finish.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖68&lt;br /&gt;&lt;br /&gt;接下來就是要執行程式了，進入Eclipse平台，選取選單「Run」中的「Run」選項，來執行應用程式。如圖69所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SQVOMM3fTqI/AAAAAAAAAcA/2rDl7Ahh1Z8/69_Run_Project.JPG"&gt;&lt;br /&gt;&lt;img style="WIDTH: 300px; CURSOR: hand; HEIGHT: 156px" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SQVOMM3fTqI/AAAAAAAAAcA/2rDl7Ahh1Z8/69_Run_Project.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖69&lt;br /&gt;&lt;br /&gt;下一步在執行那一種應用程式的視窗，選取「Android Application」，就會啟動Android的模擬器，來執行應用程式，如圖70所示。完成執行後，就會在模擬器畫面上出現結果。如圖71所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SQVOMFbCBsI/AAAAAAAAAcI/Yjxbbi0dX58/70_Run_As.JPG"&gt;&lt;br /&gt;&lt;img style="WIDTH: 300px; CURSOR: hand; HEIGHT: 156px" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SQVOMFbCBsI/AAAAAAAAAcI/Yjxbbi0dX58/70_Run_As.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖70&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SQVOMqXCoLI/AAAAAAAAAcQ/YKxPikAu4ss/71_Run_Design.JPG"&gt;&lt;br /&gt;&lt;img style="WIDTH: 300px; CURSOR: hand; HEIGHT: 156px" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SQVOMqXCoLI/AAAAAAAAAcQ/YKxPikAu4ss/71_Run_Design.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖71&lt;br /&gt;&lt;br /&gt;上述就是執行的步驟，在下一個章節就是介紹如何安排介面上設計及其他檔案的作用。&lt;br /&gt;&lt;br /&gt;參考資料：&lt;br /&gt;Android SDK Document &lt;a href="http://code.google.com/android/documentation.html"&gt;http://code.google.com/android/documentation.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-1271978209981889439?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/1271978209981889439/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=1271978209981889439' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1271978209981889439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1271978209981889439'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/25-android25-helloandroid.html' title='深入淺出Android程式設計(25)-執行程式碼，以「Hello,Android!」專案說明'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/SQVOJj9u1bI/AAAAAAAAAbg/_V-Ge-e9o3g/s72-c/65_Run_Configurations.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-6370383737154664743</id><published>2009-12-08T00:53:00.000-08:00</published><updated>2009-12-08T00:56:36.413-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(6)</title><content type='html'>&lt;p&gt;        下一步，我們要做的Prototyping，就是進行設定資料的動作。一進入設定資料的畫面，就有三個選項列表，分別是類別設定、帳戶設定、歸屬設定等選項。如圖15所示。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;        可以依據使用者目前想要設定那方面的資料，再點選進入。&lt;/p&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SuFyO9JNi3I/AAAAAAAAAsI/kCZrvwtqdgI/015.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SuFyO9JNi3I/AAAAAAAAAsI/kCZrvwtqdgI/015.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;圖15&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-6370383737154664743?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/6370383737154664743/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=6370383737154664743' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6370383737154664743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6370383737154664743'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/12/android-6.html' title='從無到有-實戰Android系統開發-系統分析(6)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/SuFyO9JNi3I/AAAAAAAAAsI/kCZrvwtqdgI/s72-c/015.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-2824499671590999031</id><published>2009-11-26T03:50:00.000-08:00</published><updated>2009-11-26T03:51:59.454-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(5)</title><content type='html'>&lt;div&gt;        下一步，我們要做的Prototyping，就是統計帳戶餘額的動作。一進入帳戶餘額的畫面，就會依資產、負債所屬的帳戶來統計目前小計資料，也會計算所有帳戶的總計資料。&lt;br /&gt;可以在「帳戶」按鈕選取一個單一的帳戶，會將此帳戶記錄的明細資料顯示列表出來。如圖14所示。&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SuFyOuZ0VXI/AAAAAAAAAsE/OM440yygVmY/014.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SuFyOuZ0VXI/AAAAAAAAAsE/OM440yygVmY/014.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;圖14&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-2824499671590999031?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/2824499671590999031/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=2824499671590999031' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2824499671590999031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2824499671590999031'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-5_26.html' title='從無到有-實戰Android系統開發-系統分析(5)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6sTixhigSrc/SuFyOuZ0VXI/AAAAAAAAAsE/OM440yygVmY/s72-c/014.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-215065726203154693</id><published>2009-11-26T03:44:00.000-08:00</published><updated>2009-11-26T03:50:25.295-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(4)</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;下一步，我們要做的Prototyping，就是新增記帳項目時，會顯現出來的畫面。主要的功能為，列出今日記帳記錄，計算金額，輸入主題、備註，選擇日期、類別、帳戶、歸屬等選項，如圖10所示。&lt;br /&gt;分成三個區塊，在最上面是計算金額，輸入主題、備註，選擇日期、類別、帳戶、歸屬等選項。&lt;br /&gt;在第二區塊，會顯示出今日記帳記錄。而第三區塊就是進行「儲存」、「取消」等功能運作。&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SuA9Gp3-9vI/AAAAAAAAArc/eACaUuv2QtQ/010.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SuA9Gp3-9vI/AAAAAAAAArc/eACaUuv2QtQ/010.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖10&lt;br /&gt;&lt;br /&gt;下述畫面為在計算金額，選擇日期、類別、帳戶、歸屬等選項時，會顯示出的Prototyping。在按下「計算」按鈕時，就會顯示出一個類似計算機的畫面，有0到9的數字及加、減、乘、除等按鈕，可以進行金額的計算。再按下「=」按鈕，將結果帶回原新增記帳項目畫面。如圖11所示。&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SuA9HGB09oI/AAAAAAAAArg/XCaHoVo7Y48/011.JPG"&gt;&lt;img style="WIDTH: 351px; HEIGHT: 506px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SuA9HGB09oI/AAAAAAAAArg/XCaHoVo7Y48/011.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖11&lt;br /&gt;&lt;br /&gt;在選取記帳日期時，會預設先帶出今天日期在中間的按鈕，可以按「+」或「-」按鈕來增加或減少一天來設定記帳日期，也可以直接按下中間的按鈕，會顯示出選取日期畫面，如圖12所示。&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_6sTixhigSrc/SuA9Hz8tOGI/AAAAAAAAAro/35IMOUBfbuA/012.JPG"&gt;&lt;img style="WIDTH: 351px; HEIGHT: 506px; CURSOR: hand" border="0" alt="" src="http://lh5.ggpht.com/_6sTixhigSrc/SuA9Hz8tOGI/AAAAAAAAAro/35IMOUBfbuA/012.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖12&lt;br /&gt;&lt;br /&gt;在選擇類別、帳戶、歸屬等選項時，可以直接按下按鈕就會顯示出此功能可以選取的項目列表。如圖13所示。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SuA9HcNQgDI/AAAAAAAAArk/ewg_4_FwrBs/013.JPG"&gt;&lt;img style="WIDTH: 351px; HEIGHT: 506px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SuA9HcNQgDI/AAAAAAAAArk/ewg_4_FwrBs/013.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖13&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-215065726203154693?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/215065726203154693/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=215065726203154693' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/215065726203154693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/215065726203154693'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-4_26.html' title='從無到有-實戰Android系統開發-系統分析(4)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_6sTixhigSrc/SuA9Gp3-9vI/AAAAAAAAArc/eACaUuv2QtQ/s72-c/010.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-3027194486418821504</id><published>2009-11-25T23:49:00.000-08:00</published><updated>2009-11-25T23:53:18.492-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(3)</title><content type='html'>系統介面：&lt;br /&gt;Android GUI介面設計。&lt;br /&gt;首先，要做的Prototyping，就是進入系統時，會顯現出來的畫面。主要的功能為列出資料、查詢資料、新增資料，如圖8所示。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;分成四個區塊，在最上面是選取查詢條件(有帳戶、記帳日期區塊等條件)的區塊，點選「帳戶」圖示，會出現單選的列表畫面，選取任何一個。可以再選取記帳日期區塊，會先顯示統計出查詢條件的支出總金額。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;而選取的條件資料，會顯示在第二區塊，讓使用者知道目前的查詢條件。而第三區塊就是依查詢條件列出符合的列表資料，一進入系統，會先列出今天的所有記帳資料。最下面的區塊是「新增記帳項目」的按鈕。功能畫面，後續再描述。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/St2g-BYMcEI/AAAAAAAAAqk/PiFs7L-VNC4/008.JPG"&gt;&lt;img style="WIDTH: 350px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/St2g-BYMcEI/AAAAAAAAAqk/PiFs7L-VNC4/008.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖8&lt;br /&gt;&lt;br /&gt;還有，在按下手機上的「menu」按鈕時，會出現「帳戶結餘」、「設定」、「關於」等選項。如圖9所示。功能畫面，後續再描述。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/St2g-p87SII/AAAAAAAAAqo/CBX2KWq0nC8/009.JPG"&gt;&lt;img style="WIDTH: 351px; HEIGHT: 505px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/St2g-p87SII/AAAAAAAAAqo/CBX2KWq0nC8/009.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖9&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-3027194486418821504?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/3027194486418821504/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=3027194486418821504' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3027194486418821504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3027194486418821504'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-3_25.html' title='從無到有-實戰Android系統開發-系統分析(3)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/St2g-BYMcEI/AAAAAAAAAqk/PiFs7L-VNC4/s72-c/008.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-2195778703405087674</id><published>2009-11-19T01:42:00.000-08:00</published><updated>2009-11-19T01:50:29.201-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(2)</title><content type='html'>根據系統架構圖，我們就可以依需求分析的功能及假想一下系統的操作介面，就是先做出一個Prototyping，給客戶確認一下，是不是可以符合客戶的需求。而做Prototyping，可以在白板、圖紙上直接畫出來。&lt;br /&gt;&lt;br /&gt;不過，現在的電腦科技發達，也可以用Microsoft Visio來畫草圖，在網路上搜尋有關這方面的資訊。我們找到一個在Visio上有關Android GUI的樣板。請參考網站(&lt;a href="http://www.artfulbits.com/Android/Stencil.aspx"&gt;http://www.artfulbits.com/Android/Stencil.aspx&lt;/a&gt;)，去下載可在Visio上使用的樣板檔案。到時候就可以利用Visio進行Android GUI Prototyping。下載前需要填寫個人資料,該網站就會寄下載地址到你的e-mail ，以便進行檔案下載。&lt;br /&gt;&lt;br /&gt;後續有關設計的畫面，全部都是用Visio來拉的。來表現出此工具的便利性。此工具也預計在2.0的版本，增加匯出成XML檔案的功能。&lt;br /&gt;&lt;br /&gt;順便，介紹一個方便的小工具DroidDraw，是一個可以讓我們在設計Android介面的好工具，在Eclipse的開發介面沒有提供類似其他開發工具那樣，可以直接拖曳物件的功能，所以，有人就用Java寫了類似的工具，幫助Android的開發人員可以比較直覺的方式來拖曳物件，完成Android的介面。&lt;br /&gt;&lt;br /&gt;首先，在連到DroidDraw的網頁(參考網址如下：&lt;a href="http://www.droiddraw.org/"&gt;http://www.droiddraw.org/&lt;/a&gt; )，就會直接出現可以編輯的畫面，如圖6所示。在編輯畫面，可以先設定畫面的層次及螢幕的尺寸。可以選取的選項，如下所述：&lt;br /&gt;&lt;br /&gt;Root Layout(畫面層次)：Absolute Layout、Linear Layout、Relative Layout、Scroll View、Table Layout&lt;br /&gt;&lt;br /&gt;Screen Size(螢幕尺寸)：QVGA Land scape、QVGA Portrait、HVGA Land scape、HVGA Portrait&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_6sTixhigSrc/SQnaNsKkFvI/AAAAAAAAAeQ/cdfsa6-cV8U/s640/78_DroidDraw.JPG"&gt;&lt;img style="WIDTH: 640px; HEIGHT: 391px; CURSOR: hand" border="0" alt="" src="http://lh4.ggpht.com/_6sTixhigSrc/SQnaNsKkFvI/AAAAAAAAAeQ/cdfsa6-cV8U/s640/78_DroidDraw.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖6&lt;br /&gt;&lt;br /&gt;可以拖曳物件到編輯畫面上，再選取要編輯的物件，在右上方的視窗，切換到Properties(屬性頁籤)來設定此物件的屬性。編輯好介面後，在右下方，按下「Generate」按鈕來產生對應的XML內容，如圖7所示。&lt;br /&gt;下一步就可以將這個XML內容選取後，複製到Eclipse的介面XML檔案。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/SQnaO1T9ThI/AAAAAAAAAeY/fKLx927qaTw/s576/79_Generate.JPG"&gt;&lt;img style="WIDTH: 576px; HEIGHT: 357px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/SQnaO1T9ThI/AAAAAAAAAeY/fKLx927qaTw/s576/79_Generate.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-2195778703405087674?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/2195778703405087674/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=2195778703405087674' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2195778703405087674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2195778703405087674'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-2_19.html' title='從無到有-實戰Android系統開發-系統分析(2)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_6sTixhigSrc/SQnaNsKkFvI/AAAAAAAAAeQ/cdfsa6-cV8U/s72-c/78_DroidDraw.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5721579899743786102</id><published>2009-11-19T00:36:00.000-08:00</published><updated>2009-11-19T00:38:33.330-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發列表'/><title type='text'>從無到有-實戰Android系統開發-系統分析(1)</title><content type='html'>&lt;div&gt;系統分析-如何由系統運作的流程分析出系統介面及功能。&lt;br /&gt;&lt;br /&gt;根據需求分析出來的結果，歸納出系統的功能列表及系統介面的架構，如圖5所示。&lt;br /&gt;&lt;br /&gt;系統功能列表：&lt;br /&gt;&lt;br /&gt;記帳系統&lt;br /&gt;記帳資訊列表：將今日所有記帳項目列表(預設)或是&lt;br /&gt;將符合查詢條件的記帳項目列表，可以進行記&lt;br /&gt;帳項目的修改、刪除。&lt;br /&gt;新增記帳項目：新增一個記帳項目，可以輸入金額、&lt;br /&gt;日期、主題、類別、帳戶、所屬、備註等資訊&lt;br /&gt;，再新增到資料庫中。&lt;br /&gt;帳戶結餘：列出所有帳戶結餘。&lt;br /&gt;設定：類別、帳戶、所屬項目設定。&lt;br /&gt;關於：顯示出系統資訊(版本、作者、介紹網址)。&lt;br /&gt;&lt;br /&gt;系統架構圖：&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/Stf8qYNSlXI/AAAAAAAAApQ/7D95klof48U/005.JPG"&gt;&lt;img style="WIDTH: 451px; HEIGHT: 317px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/Stf8qYNSlXI/AAAAAAAAApQ/7D95klof48U/005.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖5&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5721579899743786102?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5721579899743786102/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5721579899743786102' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5721579899743786102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5721579899743786102'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-1_19.html' title='從無到有-實戰Android系統開發-系統分析(1)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_6sTixhigSrc/Stf8qYNSlXI/AAAAAAAAApQ/7D95klof48U/s72-c/005.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5456046486101531511</id><published>2009-11-16T20:27:00.000-08:00</published><updated>2010-05-13T03:30:53.681-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-需求分析'/><title type='text'>從無到有-實戰Android系統開發-需求分析(5)</title><content type='html'>最後，我們來討論有關「帳戶結餘」、「設定」等工作項目。進入「帳戶結餘」的工作項目，主要是「依資產、負債的分類，列出所屬帳戶的金額總和資料」，讓使用者一看就了解目前的記帳情況。&lt;br /&gt;&lt;br /&gt;進入「設定」的工作項目，主要是可以進行「帳戶資料」、「類別資料」、「歸屬資料」的維護及「系統設定」的動作。而所謂的維護就是對資料進行「新增」、刪除」、「修改」等動作。而目前有關「系統設定」方面，可以進行「資料庫設定」、 「語系」。&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/Stf8pqqMLzI/AAAAAAAAApI/Wouq9LI6Kos/003.JPG"&gt;&lt;img style="WIDTH: 451px; HEIGHT: 235px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/Stf8pqqMLzI/AAAAAAAAApI/Wouq9LI6Kos/003.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖3&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_6sTixhigSrc/Stf8p7JgyaI/AAAAAAAAApM/RZFJCFweDJg/004.JPG"&gt;&lt;img style="WIDTH: 711px; HEIGHT: 290px; CURSOR: hand" border="0" alt="" src="http://lh3.ggpht.com/_6sTixhigSrc/Stf8p7JgyaI/AAAAAAAAApM/RZFJCFweDJg/004.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖4&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5456046486101531511?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5456046486101531511/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5456046486101531511' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5456046486101531511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5456046486101531511'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-5.html' title='從無到有-實戰Android系統開發-需求分析(5)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/Stf8pqqMLzI/AAAAAAAAApI/Wouq9LI6Kos/s72-c/003.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-1909384938271793684</id><published>2009-11-16T20:09:00.000-08:00</published><updated>2010-05-13T03:30:29.579-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-需求分析'/><title type='text'>從無到有-實戰Android系統開發-需求分析(4)</title><content type='html'>接下來，就開始來討論每一個工作項目的系統流程。在「新增記帳項目」工作項目。進入新增工作項目，就可以進行輸入「金額」、「主題」、「備註」，再選取「類別」、「帳戶」、「歸屬」等資料。&lt;br /&gt;再按下「儲存」，來「判斷金額、主題是否有輸入資料」的判斷。如果金額、主題等欄位沒有輸入資料，就要「提示訊息」給使用者。如果有輸入資料就「寫入資料」的動作。如圖2所示。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/Stf8pgycqtI/AAAAAAAAApE/3r8xv_SF2iQ/s512/002.JPG"&gt;&lt;img style="WIDTH: 384px; HEIGHT: 512px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/Stf8pgycqtI/AAAAAAAAApE/3r8xv_SF2iQ/s512/002.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-1909384938271793684?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/1909384938271793684/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=1909384938271793684' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1909384938271793684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1909384938271793684'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-4.html' title='從無到有-實戰Android系統開發-需求分析(4)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/Stf8pgycqtI/AAAAAAAAApE/3r8xv_SF2iQ/s72-c/002.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-4906628378633741470</id><published>2009-11-16T20:07:00.000-08:00</published><updated>2009-11-16T20:26:33.795-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(24)-如何建立介面，以「Hello,Android!」專案說明</title><content type='html'>在這個章節要來介紹有關如何建立介面，以「Hello,Android!」專案說明。&lt;br /&gt;&lt;br /&gt;如何建立介面&lt;br /&gt;&lt;br /&gt;在上個章節，我們建立好專案了。但是，只有自動產生出來的樣版程式。接下來，我們就要撰寫簡單的程式碼，來在螢幕顯示出「Hello,Android!」的字串，下述為最後要完成的程式碼，後續會將每一行程式碼進行說明。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;public class HelloAndroid extends Activity {&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle icicle) {&lt;br /&gt;super.onCreate(icicle);&lt;br /&gt;TextView tv = new TextView(this);&lt;br /&gt;tv.setText("Hello,Android!");&lt;br /&gt;setContentView(tv);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;第一步，首先，要先加入TextView的類別，請先撰寫加入的程式碼在程式的最上面。&lt;br /&gt;&lt;strong&gt;import android.widget.TextView&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;在Android SDK中，使用者介面是稱為View的子類別所組成，而View簡單的說就是一個繪圖物件，例如：radio button、動畫或是文字標籤，處理文字的View子類別則稱為TextView。&lt;br /&gt;&lt;br /&gt;下述程式碼為TextView的建構式&lt;br /&gt;&lt;strong&gt;TextView tv = new TextView(this);&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;TextView的建構參數是Android的Context Instance，Context表示一個系統操作的憑藉介面，它提供諸如解析資源、存取資料庫與設定喜好等服務，Activity就是繼承自Context，因為我們的HelloAndroid專案繼承自Activity，所以也是一個Context，所以用來當作TextView的建構參數。&lt;br /&gt;&lt;br /&gt;在建構好TextView之後，就是要設定它要顯示的文字，使用setText屬性，如下所述的程式碼：&lt;br /&gt;&lt;strong&gt;tv.setText("Hello,Android!");&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;這時，我們既然已經建構了TextView並且設定好它要顯示那些文字屬性，最後一個步驟就是將TextView物件顯示在螢幕上，如下所述的程式碼：&lt;br /&gt;&lt;strong&gt;setContentView(tv);&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Activity的setContentView()指令，是讓Android系統應當將View關聯到Android的介面，如果Activity不使用這個方法，除了空白螢幕外，就什麼也不會顯示出來，而我們的目的就是要顯示出文字，所以將剛建立的TextView物件關聯到Android的介面。&lt;br /&gt;&lt;br /&gt;這就是建構好一個TextView物件，並且設定好相關屬性的方式，接下來下一個章節就是要執行專案了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-4906628378633741470?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/4906628378633741470/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=4906628378633741470' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/4906628378633741470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/4906628378633741470'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/24-android24-helloandroid.html' title='深入淺出Android程式設計(24)-如何建立介面，以「Hello,Android!」專案說明'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-7544350747905815540</id><published>2009-11-15T21:08:00.000-08:00</published><updated>2010-05-13T03:30:06.819-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-需求分析'/><title type='text'>從無到有-實戰Android系統開發-需求分析(3)</title><content type='html'>系統流程：&lt;br /&gt;首先，我們來看進入記帳系統的系統流程，再進入記帳系統時，會先「列出今日所有記帳項目」的列表及總額。可以「依帳戶、日期區間」來進行查詢，就會顯示出「符合條件」的記帳項目及總額。&lt;br /&gt;接下來，可以進行「新增記帳項目」、「帳戶結餘」、「設定」、「關於」等工作項目。如圖1所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/_6sTixhigSrc/Stf8pPwKNQI/AAAAAAAAApA/NxGG0nKWeMs/001.JPG"&gt;&lt;img style="WIDTH: 609px; HEIGHT: 294px; CURSOR: hand" border="0" alt="" src="http://lh6.ggpht.com/_6sTixhigSrc/Stf8pPwKNQI/AAAAAAAAApA/NxGG0nKWeMs/001.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-7544350747905815540?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/7544350747905815540/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=7544350747905815540' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7544350747905815540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7544350747905815540'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-3.html' title='從無到有-實戰Android系統開發-需求分析(3)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_6sTixhigSrc/Stf8pPwKNQI/AAAAAAAAApA/NxGG0nKWeMs/s72-c/001.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-8043186636918773910</id><published>2009-11-15T21:04:00.000-08:00</published><updated>2010-05-13T03:29:37.107-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-需求分析'/><title type='text'>從無到有-實戰Android系統開發-需求分析(2)</title><content type='html'>&lt;p&gt;接下來，可以從之前的情境模擬中，我們可以歸納出使用者的需求，如下文所述：&lt;/p&gt;&lt;p&gt;需求列表：&lt;br /&gt;1.進入系統時，要先列出今日記帳的項目，可以依帳戶及記帳日期的區&lt;br /&gt;間來查詢。&lt;br /&gt;2.對於列表出來的記帳項目可以進行編輯、刪除的功能。&lt;br /&gt;3.可以新增一筆記帳項目，可以記錄消費的金額、此消費的時間日期、&lt;br /&gt;主題、此消費是屬於那方面的帳戶(例如說是現金消費、信用卡扣款等&lt;br /&gt;。)、類別(是屬於食、衣、住、行、育、樂那方面。)或是所屬於個人&lt;br /&gt;、公司的消費等資訊。&lt;br /&gt;4.可以針對所設定的帳戶來統計各個帳戶到目前的消費總額。&lt;br /&gt;5.可以針對類別、帳戶、所屬等項目，進行編輯的設定。&lt;br /&gt;接下來，我們就要依需求的列表，整理出系統的運作流程。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-8043186636918773910?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/8043186636918773910/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=8043186636918773910' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8043186636918773910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8043186636918773910'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-2.html' title='從無到有-實戰Android系統開發-需求分析(2)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5249250914977112417</id><published>2009-11-15T20:49:00.000-08:00</published><updated>2010-05-13T01:35:16.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='從無到有-實戰Android系統開發-需求分析'/><title type='text'>從無到有-實戰Android系統開發-需求分析(1)</title><content type='html'>在前一年，我參加了2008第一屆iT邦幫忙鐵人賽，那時候，我分享的主題是「深入淺出Android程式設計」，雖然沒有得到名次，但是，也讓我獲益良多。&lt;br /&gt;&lt;br /&gt;而今年，又有了2009第二屆iT邦幫忙鐵人賽，所以，我也決定參加第二屆的比賽，想跟大家分享有關如何從無到有的來設計Android系統，從需求的分析、系統介面的設計、資料庫的規劃、程式實作等步驟。&lt;br /&gt;&lt;br /&gt;以一個簡單的記帳系統為例子，來說明上面的步驟。預計會分成下述的步驟來說明：&lt;br /&gt;&lt;br /&gt;1.需求分析-如何由使用者的需求，來分析一個記帳系統的運作流程。&lt;br /&gt;2.系統分析-如何由系統運作的流程分析出系統介面及功能。&lt;br /&gt;3.系統設計-如何由系統流程、功能來分析資料庫的設計。&lt;br /&gt;4.程式實戰-如何由系統分析出來流程，來進行程式的撰寫過程，要提出重要的地方來說明分析。&lt;br /&gt;5.系統測試-如何由系統分析，來制定系統測試的流程及步驟。&lt;br /&gt;&lt;br /&gt;目前，比賽已經結束了。我就想把我在比賽的文章也貼到Blog上，給大家分享這方面的資訊。&lt;br /&gt;&lt;br /&gt;首先，要做任何一套系統，要先了解使用者的需求，有了使用者的需求，才&lt;br /&gt;可以依使用者的需求來分析系統的功能及運作的流程，而我們可以先透過情境模&lt;br /&gt;擬的方式來模擬使用者的需求，再將需求列表起來，最後，再依照情境模擬及需&lt;br /&gt;求列表來設計出系統的流程。&lt;br /&gt;&lt;br /&gt;情境模擬：&lt;br /&gt;現在經濟不景氣，所以，每個人都應該要有記帳的習慣，而如果要隨時隨地的記帳，那最好的選擇，就是用手機來記帳。不然，如果要用手動記錄在筆記本上，或是回到辦公司或家裡才記帳。早就記不得了。而且，記錄在筆記本上，也不好進行統計。所以，用手機來記帳，即時有方便，也可以隨時隨地就統計今天花了什麼。&lt;br /&gt;&lt;br /&gt;那就假想一下，走在路上，隨手想買個東西。立刻拿出手機，按下記帳的圖示，立刻顯示出今天買了什麼東西的列表及總額，讓你看看有沒有超過預算。買好東西的同時，就新增一筆記帳的資料，包含了消費的金額、此消費的時間日期、主題、此消費是屬於那方面的帳戶(例如：是屬於現金消費、信用卡扣款等。)，而所屬的類別(是屬於食、衣、住、行、育、樂那方面。)或是所屬於個人、公司的消費等資訊。&lt;br /&gt;&lt;br /&gt;這樣記錄，可以先記錄一個星期的資訊，再來統計一下每一個帳戶花費了多了金額。讓我們可以對下一個星期的預算來進行節制。&lt;br /&gt;&lt;br /&gt;同時，可以讓個人的需求不同，來設定帳戶(例如說是現金消費、信用卡扣款等。)、類別(是屬於食、衣、住、行、育、樂那方面。)或是所屬於個人、公司的消費等資訊的編輯。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5249250914977112417?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5249250914977112417/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5249250914977112417' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5249250914977112417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5249250914977112417'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/11/android-1.html' title='從無到有-實戰Android系統開發-需求分析(1)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-6783021978306018417</id><published>2009-07-24T07:57:00.000-07:00</published><updated>2009-11-16T20:25:49.520-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(23)-如何建立專案，以「Hello,Android!」專案說明</title><content type='html'>很抱歉，之前公司比較忙碌。所以，預計八月份會陸續更新文章。而且，會以Android 1.5的版本來更新文章。&lt;br /&gt;&lt;br /&gt;在之前的章節中，從如何安裝Android SDK、如何安裝Eclipse等開發工作，到如何在Eclipse平台上建立Android專案並設定載入配置、如何執行程式、如何進行除錯程式的動作。&lt;br /&gt;但是，都是分別來說明，沒有將這些步驟連接起來。所以，從這個章節開始，會以一個簡單的「Hello,Android!」專案，來將所有步驟連接起來講解，也會將程式結構內一些重要的屬性、方法來加以描述。&lt;br /&gt;&lt;br /&gt;「Hello,Android!」專案，主要的功能，只有在模擬器上顯示「Hello,Android!」等字串的作用，也許會覺得很簡單，但是，卻可以讓讀者了解Android的基本程式架構，為後續更複雜的範例專案打下基礎。&lt;br /&gt;主要的操作步驟及內容說明，如下所述：&lt;br /&gt;A. 如何建立專案&lt;br /&gt;B. 如何建立介面&lt;br /&gt;C. 執行程式碼&lt;br /&gt;&lt;br /&gt;後續再說明比較詳細的說明：&lt;br /&gt;D. 如何將介面升級到XML方式來排版&lt;br /&gt;E. 如何進行專案除錯&lt;br /&gt;F. 如何用非Eclipse平台來建立專案&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如何建立專案&lt;br /&gt;&lt;br /&gt;要建立一個專案再簡單不過了，在Eclipse平台，使用ADT外掛讓Android開發在一瞬間就可以建立了，相關的安裝，請參考之前的章節。下述為建立專案的步驟：&lt;br /&gt;&lt;br /&gt;1.進入Eclipse平台，選取選單「File」中的「New」選項，再選取「Project...」選項，進入開啟新專案的視窗，如圖63所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SmnP1yfNn5I/AAAAAAAAAn8/DQO8h_I-IJI/s1600-h/63_Android_Project.JPG"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 306px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5362045354353991570" border="0" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SmnP1yfNn5I/AAAAAAAAAn8/DQO8h_I-IJI/s320/63_Android_Project.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖63&lt;br /&gt;&lt;br /&gt;進入開啟新專案的視窗，如圖63所示。在專案類別中，選取「Android」裡面的「Android Project」，然後按下「Next」按鈕，進行下一個步驟。&lt;br /&gt;&lt;br /&gt;2. 填入Android專案所需要的明細資料，如下所述：&lt;br /&gt;在建立新專案的視窗填入這個專案的相關細節，所屬欄位意義：&lt;br /&gt;輸入欄位意義如下：&lt;br /&gt;欄位名稱&lt;br /&gt;欄位描述&lt;br /&gt;Project Name&lt;br /&gt;專案名稱，包含這個專案的檔案夾或是目錄的名稱。&lt;br /&gt;Package Name&lt;br /&gt;套件名稱，Java的習慣是用套件名稱來區分不同的類別(class)，依照專案的不同，會起不同的路徑名稱。&lt;br /&gt;Activity Name&lt;br /&gt;這個專案的主要類別的名稱，這個類別是一個Android的Activity類別的子類別。一個Activity類別是一個簡單的啟動程式和控制程式的類別。它可以根據需要建立介面。&lt;br /&gt;Application Name&lt;br /&gt;顯示在應用程式上的標題名稱。&lt;br /&gt;&lt;br /&gt;要輸入的欄位值如下：&lt;br /&gt;欄位名稱&lt;br /&gt;欄位輸入值&lt;br /&gt;Prjoect Name&lt;br /&gt;HelloAndroid&lt;br /&gt;Package Name&lt;br /&gt;com.android.hello&lt;br /&gt;Activity Name&lt;br /&gt;HelloAndroid&lt;br /&gt;Application Name&lt;br /&gt;Hello,Android&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SmnQCbiNpXI/AAAAAAAAAoE/VuyHAgPCQfc/s1600-h/64_Android_Choose.JPG"&gt;&lt;img style="WIDTH: 320px; HEIGHT: 305px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5362045571530859890" border="0" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SmnQCbiNpXI/AAAAAAAAAoE/VuyHAgPCQfc/s320/64_Android_Choose.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;圖64&lt;br /&gt;&lt;br /&gt;3. 當按下「Finish」按鈕後，Eclipse ADT就會自動產生的樣版程式HelloAndroid.java，內容如下所述：&lt;br /&gt;&lt;br /&gt;public class HelloAndroid extends Activity&lt;br /&gt;{&lt;br /&gt;/** Called when the activity is first created. */&lt;br /&gt;@Override&lt;br /&gt;public void onCreate(Bundle icicle)&lt;br /&gt;{&lt;br /&gt;super.onCreate(icicle);&lt;br /&gt;setContentView(R.layout.main);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;再下一個章節，再來修改程式碼，來顯示字串「Hello,Android!」。&lt;br /&gt;&lt;br /&gt;參考資料：&lt;br /&gt;Android SDK Document &lt;a href="http://code.google.com/android/documentation.html"&gt;http://code.google.com/android/documentation.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-6783021978306018417?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/6783021978306018417/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=6783021978306018417' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6783021978306018417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6783021978306018417'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2009/07/android-1.html' title='深入淺出Android程式設計(23)-如何建立專案，以「Hello,Android!」專案說明'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6sTixhigSrc/SmnP1yfNn5I/AAAAAAAAAn8/DQO8h_I-IJI/s72-c/63_Android_Project.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-1116808826382921409</id><published>2008-11-14T19:00:00.000-08:00</published><updated>2008-11-14T19:07:12.061-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(22)-在Eclipse開發上的提示</title><content type='html'>在這個章節要來介紹有關在Eclipse開發上的提示。&lt;br /&gt;&lt;br /&gt;在Eclipse除錯模式下執行任意Java表達語法&lt;br /&gt;開發人員可以在Eclipse設定中斷點，當中斷時可以執行、測試任何程式碼或變數，例如：在某一個函式中，有一個字串參數叫做「zip」，開發人員想要知知道是屬於那個套件的資訊並叫用類別方法，也可以叫用任何靜態方法，例如鍵入android.os.Debug.startMethodTracing()，將會啟動dmTrace。&lt;br /&gt;&lt;br /&gt;在中斷程式時，選取選單「Window」中的「Show View」選項裡面的Display視窗，來顯示要觀察的參數或變數。如圖59、圖60所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SR48F8gH1XI/AAAAAAAAAmY/lXOeUwO240Y/s1600-h/59_Window_ShowView.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5268714686907929970" style="WIDTH: 302px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SR48F8gH1XI/AAAAAAAAAmY/lXOeUwO240Y/s320/59_Window_ShowView.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖59&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SR48NU_wQoI/AAAAAAAAAmg/tscYDmWPpr8/s1600-h/60_ShowView.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5268714813742137986" style="WIDTH: 226px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SR48NU_wQoI/AAAAAAAAAmg/tscYDmWPpr8/s320/60_ShowView.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖60&lt;br /&gt;&lt;br /&gt;程式語法執行於中斷點(或Single-stop)相同的執行緒(如果要手動中斷執行緒，就必須要單步執行程式碼(按「F6」功能鍵)。&lt;br /&gt;&lt;br /&gt;如果現在停在中斷點，開發人員可以選取要觀察的參數或變數，按組合鍵CTRL + SHIFT + D執行。就會出現目前變數的值，如圖61所示。再按組合鍵CTRL + SHIFT + D，就會將變數值顯示在Display視窗。如圖62所示。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SR48g7LFkJI/AAAAAAAAAmo/JHARa8Y5U2o/s1600-h/61_Debug_Value.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5268715150407733394" style="WIDTH: 300px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SR48g7LFkJI/AAAAAAAAAmo/JHARa8Y5U2o/s320/61_Debug_Value.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖61&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SR48p6EcWzI/AAAAAAAAAmw/KkQbc7Jx_VQ/s1600-h/62_Display_Debug_Value.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5268715304730254130" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 125px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SR48p6EcWzI/AAAAAAAAAmw/KkQbc7Jx_VQ/s320/62_Display_Debug_Value.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖62&lt;br /&gt;&lt;br /&gt;開發人員可以使用組合鍵ALT +SHIFT + ↑選取更大範圍的大括號區塊或是使用組合鍵ALT +SHIFT + ↓選取更小範圍的大括號區塊&lt;br /&gt;&lt;br /&gt;下面是一些使用Eclipse Display視窗輸入與回應的範例&lt;br /&gt;輸入：Zip 回應：(java.lang.String)&lt;br /&gt;/work/device/out/linux-x86-debug/android/app/android_sdk.zip&lt;br /&gt;&lt;br /&gt;輸入：zip.endsWith(“.zip”) 回應：(boolean) true&lt;br /&gt;輸入：zip.endsWith(“.jar”) 回應：(boolean) false&lt;br /&gt;&lt;br /&gt;手動執行DDMS&lt;br /&gt;雖然建議使用ADT外掛，但是，也可以手動啟動DDMS，然後設定Eclipse於8700埠位來除錯(要先執行DDMS，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/ddms.html"&gt;http://code.google.com/android/reference/ddms.html&lt;/a&gt; )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-1116808826382921409?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/1116808826382921409/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=1116808826382921409' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1116808826382921409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1116808826382921409'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android22-eclipse.html' title='深入淺出Android程式設計(22)-在Eclipse開發上的提示'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6sTixhigSrc/SR48F8gH1XI/AAAAAAAAAmY/lXOeUwO240Y/s72-c/59_Window_ShowView.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-3904328608900431588</id><published>2008-11-14T18:43:00.000-08:00</published><updated>2008-11-14T19:00:38.762-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(21)-有關建置、安裝及移除Android應用程式的建議</title><content type='html'>在這個章節要來說明有關建置、安裝及移除Android應用程式的建議。&lt;br /&gt;&lt;br /&gt;Android SDK需要用自訂的建置工具正確地建置出資源檔與Android程式的其它部分(例如：程式樣版等)，所以開發人員必須為應用程式指定一個建立的環境。&lt;br /&gt;&lt;br /&gt;而特定的Android編譯步驟包含編譯XML與其它資源檔，並產出正確的格式。編譯完成的Android程式為一個.apk檔案，是一個壓縮了.dex檔案、資源檔、資料檔與其它相關檔案。開發人員可以從無到有、或是從現有的檔案建立正確的Android專案結構。&lt;br /&gt;&lt;br /&gt;Android目前尚未支援第三方使用原生語言(C/C++)來開發程式。&lt;br /&gt;&lt;br /&gt;所以，目前最佳的開發方式還是建議在Eclipse平台上開發Android應用程式，這種方式提供建立、執行與除錯Android程式的整合式開發環境。&lt;br /&gt;&lt;br /&gt;如果要使用其它IDE開發介面，則Android提供其它IDE開發工具建立與除錯Android程式，但是它們尚未加以整合在一起，所以，再使用時，可能要分成建立專案、撰寫程式碼、執行與除錯都要分開來進行。&lt;br /&gt;&lt;br /&gt;移除Android應用程式的方式&lt;br /&gt;&lt;br /&gt;要移除安裝在模擬器上的程式，必須執行adb刪除送往模擬器並安裝的.apk檔案，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/adb.html"&gt;http://code.google.com/android/reference/adb.html&lt;/a&gt; ，使用「adb shell」進入模擬器裝置的Shell，移到data/app/，用「rm 應用程式.apk」移除檔案。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-3904328608900431588?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/3904328608900431588/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=3904328608900431588' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3904328608900431588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3904328608900431588'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android21-android.html' title='深入淺出Android程式設計(21)-有關建置、安裝及移除Android應用程式的建議'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-2378994068102559942</id><published>2008-11-04T22:53:00.000-08:00</published><updated>2008-11-04T23:13:17.146-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(20)-有關在除錯時的提示</title><content type='html'>&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;在這個章節要來說明有關在進行應用程式除錯時的有那些有用的提示。如下文所述：&lt;br /&gt;&lt;br /&gt;A.Quick stack dump(快速堆疊轉儲)&lt;br /&gt;如何從模擬器中取得堆疊轉儲的資訊，開發人員可以在進入Dos視窗，在Android SDK安裝目錄底下的tools目錄底下執行「adb shell」登錄，用「ps」找到應用程式的行程，然後下「kill-3」，則堆疊追蹤會出現在log檔案，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/adb.html#shellcommands"&gt;http://code.google.com/android/reference/adb.html#shellcommands&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;B.在模擬器螢幕顯示有用資訊&lt;br /&gt;在模擬器裝置可以顯示有用的資訊，例如：顯示CPU使用率或是顯示螢幕更新，開啟或關閉這些開發設定，請參考之前的章節「如何除錯及測試模擬裝置的設定」。&lt;br /&gt;&lt;br /&gt;C.取得模擬器系統狀態資訊(dumstate)&lt;br /&gt;開發人員可從Dalvik Debug Monitor Service 工具存取系統資訊，請參考adb主題頁的dumpsys and dumpstate，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/adb.html#dumpsys"&gt;http://code.google.com/android/reference/adb.html#dumpsys&lt;/a&gt;。&lt;br /&gt;上述網址，所述的動作，主要是啟動Dalvik Debug Monitor Server (DDMS)工具，在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。&lt;br /&gt;進入DDMS視窗後，先選取「Device」選單，就會出現下拉選單，再點選「Dump device state…」選項，開發人員可以取得模擬器系統狀態資訊，如圖57所示。&lt;br /&gt;&lt;br /&gt;D. 取得模擬器程式狀態資訊(dumsys)&lt;br /&gt;開發人員可從Dalvik Debug Monitor Service 工具存取程式資訊，請參考adb主題頁的dumpsys and dumpstate，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/adb.html#dumpsys"&gt;http://code.google.com/android/reference/adb.html#dumpsys&lt;/a&gt;。&lt;br /&gt;上述網址，所述的動作，主要是啟動Dalvik Debug Monitor Server (DDMS)工具，在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。&lt;br /&gt;進入DDMS視窗後，先選取「Device」選單，就會出現下拉選單，再點選「Run logcat…」選項，開發人員可以取得模擬器系統狀態資訊，如圖57所示。&lt;br /&gt;&lt;br /&gt;E.Getting wireless connectivity information(取得無線連接資訊)：&lt;br /&gt;首先，啟動Dalvik Debug Monitor Server (DDMS)工具，在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。&lt;br /&gt;進入DDMS視窗後，先選取「Device」選單，就會出現下拉選單，再點選「Dump radio state」選項，開發人員可以取得無線連接資訊，如圖57所示。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SRFHYJvq9TI/AAAAAAAAAmI/z480Qh7NiZo/s1600-h/57_DDMS_Dump_radio_state.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265067919631119666" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 179px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SRFHYJvq9TI/AAAAAAAAAmI/z480Qh7NiZo/s320/57_DDMS_Dump_radio_state.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖57&lt;br /&gt;&lt;br /&gt;F.記錄追蹤資料&lt;br /&gt;在Activity內叫用android.os.Debug.startMethodTracing()記錄追蹤資料，請參考Running the Traceview Debugging Program，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/traceview.html"&gt;http://code.google.com/android/reference/traceview.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;G.記錄無線資料&lt;br /&gt;原則上系統不會記錄無線連接的資料，但是開發人員可以在Dos視窗使用以下命令來記錄無線資料：&lt;br /&gt;adb shell&lt;br /&gt;logcat -b radio&lt;br /&gt;&lt;br /&gt;H.執行adb&lt;br /&gt;Android SDK提供一款工具叫做adb，提供不同功能，包含了模擬器上的檔案同步與移動、傳送埠與在模擬器上執行一個UNIX Shell，請參考Using adb，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/adb.html"&gt;http://code.google.com/android/reference/adb.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I.捕捉模擬器螢幕&lt;br /&gt;首先，啟動Dalvik Debug Monitor Server (DDMS)工具，在Android SDK安裝目錄底下的tools目錄的ddms.bat批次檔。&lt;br /&gt;進入DDMS視窗後，先選取「Device」選單，就會出現下拉選單，再點選「Screen capture…」選項，就可以捕捉模擬器螢幕的資訊，如圖58所示。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SRFHeqf5dyI/AAAAAAAAAmQ/t01FS7NJNUs/s1600-h/58_DDMS_Screen_capture.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265068031502546722" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 178px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SRFHeqf5dyI/AAAAAAAAAmQ/t01FS7NJNUs/s320/58_DDMS_Screen_capture.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖58&lt;br /&gt;&lt;br /&gt;J.使用除錯輔助類別&lt;br /&gt;Android SDK有提供二種除錯輔助類別，來協助開發人員進行除錯工作，可以讓開發人員，事半功倍。&lt;br /&gt;例如：util.Log類別，有關此類別在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/android/util/Log.html"&gt;http://code.google.com/android/reference/android/util/Log.html&lt;/a&gt;&lt;br /&gt;以及Debug類別，有關此類別在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/android/os/Debug.html"&gt;http://code.google.com/android/reference/android/os/Debug.html&lt;/a&gt;，供您使用 &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-2378994068102559942?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/2378994068102559942/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=2378994068102559942' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2378994068102559942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/2378994068102559942'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android20.html' title='深入淺出Android程式設計(20)-有關在除錯時的提示'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6sTixhigSrc/SRFHYJvq9TI/AAAAAAAAAmI/z480Qh7NiZo/s72-c/57_DDMS_Dump_radio_state.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-8874436255085055147</id><published>2008-11-04T22:35:00.000-08:00</published><updated>2008-11-04T23:14:03.992-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(19)-如何除錯及測試模擬裝置的設定</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;在這個章節要來說明如何利用Android SDK內建的模擬器來進行程式的除錯方面的設定。&lt;br /&gt;&lt;br /&gt;在Android SDK有幾個簡單設定讓程式更容易進行測試與除錯，首先，在Dos命令視窗執行Android SDK安裝目錄底下的tools目錄底下的模擬器執行檔emulator.exe，進入模擬器時，要先按下「MENU」按鈕來解除模擬器的Locked，回到Home預設畫面。如圖51所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SRFB4_CJmKI/AAAAAAAAAlY/ZeDAk1Tbubg/s1600-h/51_Emulator_Locked.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265061886621751458" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 208px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SRFB4_CJmKI/AAAAAAAAAlY/ZeDAk1Tbubg/s320/51_Emulator_Locked.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖51&lt;br /&gt;&lt;br /&gt;在模擬器的Home畫面，按下開啟系統選單的按鈕，如圖52所示。選取「DevTools」選項，如圖53所示。 &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SRFCAUzanGI/AAAAAAAAAlg/LljP8LWoC00/s1600-h/52_Emulator_Menu.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265062012724616290" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 110px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SRFCAUzanGI/AAAAAAAAAlg/LljP8LWoC00/s320/52_Emulator_Menu.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖52 &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SRFCIMr1-oI/AAAAAAAAAlo/HDYY13fu2xw/s1600-h/53_Emulator_DevTools.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265062147984325250" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 250px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SRFCIMr1-oI/AAAAAAAAAlo/HDYY13fu2xw/s320/53_Emulator_DevTools.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖53&lt;br /&gt;&lt;br /&gt;進入「DevTools」選項，再選取「Development Settings」設定選單，如圖54所示，就會開啟開發設定畫面，再設定下述明細開發除錯選項： &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SRFCbMNx9yI/AAAAAAAAAlw/71G5-9Ei1qE/s1600-h/54_Emulator_Settings.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265062474275747618" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 122px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SRFCbMNx9yI/AAAAAAAAAlw/71G5-9Ei1qE/s320/54_Emulator_Settings.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖54&lt;br /&gt;&lt;br /&gt;● 在Debug app選項中，是要選擇要除錯的應用程式是那一個程序，點選下方「(none)」的按鈕，就會顯示目前在執行的程序，請選取您要除錯的應用程式的程序名稱即是「Package Name(套件名稱)」即可，如圖55所示。這個選項不是除錯相關的選項，但是設定這個值，可以有兩個作用：&lt;br /&gt;○ 讓Android SDK除錯時，如果在中斷點暫停太久時，不致於會拋出錯誤訊息。&lt;br /&gt;○ 讓開發人員可以選擇阻斷程式啟動，直到開發人員的除錯機制加入時，相關描述可以參考下一個選項說明。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SRFCjiMiOII/AAAAAAAAAl4/_b5ph-y2u1Y/s1600-h/55_Emulator_WaitForDebugger.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265062617615054978" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 190px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SRFCjiMiOII/AAAAAAAAAl4/_b5ph-y2u1Y/s320/55_Emulator_WaitForDebugger.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖55&lt;br /&gt;&lt;br /&gt;● Wait for debugger(阻斷程式啟動)選項：阻斷所選程式載入，直到開發人員的除錯機制加入，這樣開發人員就可以在OnCreate()事件設定中斷，這對於要除錯Activity啟動過程是很重要的。&lt;br /&gt;在執行中的程式，若是變更除錯選項，則會導致系統關閉目前所有該執行的程式，要啟用這個選項，必須要先使用上一段所提的Debug app選項或是在應用程式的程式碼加入Wait for debugger()，也可以阻斷程式啟動。如圖55所示。&lt;br /&gt;&lt;br /&gt;● Immediately destroy activities(立即銷毀activities)選項：當activity動作停止時，就要立即銷毀activity(例如：Android必須回收記憶體時)。這對於在測試onFreeze()或onCreate()事件時是很有作用的，否則會非常困難加以強制。如果應用程式的程序沒有儲存起來的話，選用這個選項可能會引起一些問題。如圖56所示。&lt;br /&gt;&lt;br /&gt;● Show screen updates(顯示螢幕更新)選項：在螢幕任何區塊被重繪時，閃現一個短暫的粉紅色矩形，來找出不必要的螢幕繪製時是很用的選項。如圖56所示。&lt;br /&gt;&lt;br /&gt;● Show CPU usage(顯示中央處理器使用率)選項：在螢幕上層顯示CPU的使用率，上方的紅色棒顯示全部的CPU使用率，下方的綠色棒則顯示組成這個畫面花了多少CPU時間。如圖56所示。&lt;br /&gt;&lt;br /&gt;備註：一旦開啟這個選項，要重新啟動模擬器才能關閉顯示。&lt;br /&gt;&lt;br /&gt;● Show background(顯示背景)選項：當沒有Activity螢幕時，就會顯示背景模式，實際上，一般是不會出現這種情況，除非是正在除錯時才有可能會出現。如圖56所示。&lt;br /&gt;&lt;br /&gt;設定這個選項，要注意的是在模擬器重新啟動之後仍然有效果，如果要取消設定的選項，在取消設定後要重新啟動模擬器，才會生效。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SRFCu_Z5lYI/AAAAAAAAAmA/IlpHnPCLGvg/s1600-h/56_Emulator_Options.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265062814434301314" style="WIDTH: 314px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SRFCu_Z5lYI/AAAAAAAAAmA/IlpHnPCLGvg/s320/56_Emulator_Options.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖56 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-8874436255085055147?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/8874436255085055147/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=8874436255085055147' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8874436255085055147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8874436255085055147'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android19.html' title='深入淺出Android程式設計(19)-如何除錯及測試模擬裝置的設定'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6sTixhigSrc/SRFB4_CJmKI/AAAAAAAAAlY/ZeDAk1Tbubg/s72-c/51_Emulator_Locked.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-8567432393537543356</id><published>2008-11-04T19:43:00.000-08:00</published><updated>2008-11-04T19:51:48.670-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(18)-如何除錯</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;在這個章節要來說明如何利用工具來進行程式的除錯，在Android SDK有大量的工具來幫助程式進行除錯，目前有下述工具可以進行程式上的除錯。&lt;br /&gt;&lt;br /&gt;A.DDMS工具-圖形介面程式支援埠位傳送(如此要在IDE開發工具設定程式中斷點)，模擬器的螢幕擷取，執行緒與堆疊資訊，以及其它功能，也可以執行Logcat取得Log資訊，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/ddms.html"&gt;http://code.google.com/android/reference/ddms.html&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;B.Logcat工具–轉儲系統訊息log，訊息包含模擬器發生錯誤時的堆疊追蹤，和Log訊息，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/ddms.html#logcat"&gt;http://code.google.com/android/reference/ddms.html#logcat&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;產生出來的訊息，如下述訊範例：&lt;br /&gt;I/MemoryDealer( 763): MemoryDealer (this=0x54bda0): Creating 2621440&lt;br /&gt;bytes heap at 0x438db000&lt;br /&gt;I/Logger( 1858): getView() requesting item number 0&lt;br /&gt;I/Logger( 1858): getView() requesting item number 1&lt;br /&gt;I/Logger( 1858): getView() requesting item number 2&lt;br /&gt;D/ActivityManager( 763): Stopping: HistoryRecord{409dbb20&lt;br /&gt;com.google.android.home.AllApps}&lt;br /&gt;&lt;br /&gt;C. Android的Log類別–在Android SDK有提供一個log類別可以在模擬器上將Log訊息輸出到檔案，如果執行Logcat工具，那可以及時讀取訊息。在撰寫程式碼加入少量的log方法叫用：&lt;br /&gt;使用Log類別，要依訊息需求狀況來使用，可以應用的方式如下所述：&lt;br /&gt;Log.v() (verbose等級)&lt;br /&gt;Log.d() (debug等級)&lt;br /&gt;Log.i() (information等級)&lt;br /&gt;Log.w() (warning等級)&lt;br /&gt;Log.e() (error等級)&lt;br /&gt;等方法，如何使用此類別，如下述範例：&lt;br /&gt;Log.i("MyActivity", "MyClass.getView() — Requesting item number " +position)&lt;br /&gt;&lt;br /&gt;有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/android/util/Log.html"&gt;http://code.google.com/android/reference/android/util/Log.html&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;D.TraceView工具–可以使用TraceView這個圖形化介面讀取器來讀取Android所儲存檔案的log檔案，有關此工具在Android SDK 如何運作，請參考下述網址：&lt;a href="http://code.google.com/android/reference/traceview.html"&gt;http://code.google.com/android/reference/traceview.html&lt;/a&gt;。&lt;br /&gt;&lt;br /&gt;E. 在Eclipse使用ADT外掛–Eclipse的ADT外掛包含一些整合好的除錯工具(例如：ADB,DDMS,Logcat輸出與其它功能)。下述為在ADT外掛時，如何簡單的進行除錯：&lt;br /&gt;&lt;br /&gt;一、在專案的程式碼列的左邊設定程式中斷點(Toggle Breakpoint)，先選取一段程式碼，在程式碼列的左邊的地方，按下滑鼠右鍵，就會出現選單，選取「Toggle Breakpoint」選項，那在程式碼列的左邊的地方就會出現一個中斷點的符號，如圖47所示。&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SREXoUfylmI/AAAAAAAAAk4/lNeMvbHPHLo/s1600-h/47_Toggle_Breakpoint.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265015420837074530" style="WIDTH: 300px; CURSOR: hand; HEIGHT: 210px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SREXoUfylmI/AAAAAAAAAk4/lNeMvbHPHLo/s320/47_Toggle_Breakpoint.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;圖47&lt;br /&gt;&lt;br /&gt;二、下一步，選取選單「Run」中的選取「Debug」選項，來除錯應用程式。如圖48所示。&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SREXwfRmcLI/AAAAAAAAAlA/WAm6_iCgs2I/s1600-h/48_Debug_Mode.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265015561169301682" style="WIDTH: 300px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SREXwfRmcLI/AAAAAAAAAlA/WAm6_iCgs2I/s320/48_Debug_Mode.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;圖48&lt;br /&gt;&lt;br /&gt;三、在Debug模式下，進行除錯時，就會出現整合時的DDMS視窗及LogCat視窗，如圖49、圖50所示。&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SREX4g_xDxI/AAAAAAAAAlI/H7bQgqIWs0U/s1600-h/49_DDMS.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265015699070324498" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 114px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SREX4g_xDxI/AAAAAAAAAlI/H7bQgqIWs0U/s320/49_DDMS.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖49 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SREYHmTlyYI/AAAAAAAAAlQ/oq9XNPqf4IQ/s1600-h/50_LogCat.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5265015958193686914" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 126px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SREYHmTlyYI/AAAAAAAAAlQ/oq9XNPqf4IQ/s320/50_LogCat.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖50&lt;br /&gt;&lt;br /&gt;F. 除錯與測試裝置設定-Android SDK也有提供多種重要訊息的設定，例如：中央處理器使用率與顯示頻率，可以參考下一章節的說明。 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-8567432393537543356?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/8567432393537543356/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=8567432393537543356' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8567432393537543356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8567432393537543356'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android18.html' title='深入淺出Android程式設計(18)-如何除錯'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6sTixhigSrc/SREXoUfylmI/AAAAAAAAAk4/lNeMvbHPHLo/s72-c/47_Toggle_Breakpoint.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-7115000157689699570</id><published>2008-11-01T08:09:00.002-07:00</published><updated>2008-11-01T08:11:14.715-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(17)-如何在其他IDE或工具開發Android應用程式(下)</title><content type='html'>&lt;p&gt;在上一個章節，將在Dos命令列利用activityCreator.bat建立Android專案，再利用ant來建置Android應用程式，在這個章節要來繼續說明如果執行Android應用程式。&lt;br /&gt;&lt;br /&gt;執行Android應用程式&lt;br /&gt;要執行編譯好Android應用程式，可以依照以下的步驟，來用Android SDK 安裝目錄底下的tools目錄中執行adb.exe執行檔工具將上一個章節產生的.apk檔案上載到手機模擬器的/data/app目錄。&lt;br /&gt;&lt;br /&gt;A. 在Dos命令視窗執行Android SDK 安裝目錄底下的tools目錄底下的手機模擬器執行檔emulator.exe。如圖46所示。進入模擬器時，要先按下「MENU」按鈕來解除模擬器的Locked，回到Home預設畫面。&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQxxeC33-lI/AAAAAAAAAkw/TiluolnmXvY/s1600-h/46_Emulator.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263706825470507602" style="WIDTH: 202px; CURSOR: hand; HEIGHT: 320px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQxxeC33-lI/AAAAAAAAAkw/TiluolnmXvY/s320/46_Emulator.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖46&lt;br /&gt;&lt;br /&gt;B. 在模擬器內，回到home螢幕(最好不要在應用程式執行時重新安裝應用程式，按Home按鍵離開應用程式)。&lt;br /&gt;C. 執行 adb install專案目錄底下/bin/應用程式安裝.apk檔案，上載可執行檔。例如，安裝Lunar Lander範例，在命令列上切換到 &lt;您的SDK目錄&gt;/sample/LunarLander後鍵入../../tools/adb install bin/LunarLander.apk&lt;br /&gt;D. 在模擬器內，開啟可執行程式，捲動並選擇程式啟動&lt;br /&gt;&lt;br /&gt;備註：安裝好Activity後，最好重新啟動模擬器，因為套件管理員只會在模擬器啟動時完整檢核AndroidManifest.xml(Android程式的功能清單)。&lt;br /&gt;&lt;br /&gt;下一步，要為Android應用程式加入除錯器，方便進行除錯。這一段說明如何在螢幕上顯示除錯資訊(如中央處理器使用率)，和如何讓IDE除錯模擬器的應用程式。&lt;br /&gt;使用Eclipse外掛會自動加入除錯器，但也可以設定其它的IDE來取得除錯資訊。請用以下步驟來進行除錯：&lt;br /&gt;&lt;br /&gt;A. 啟動Dalvik Debug Monitor Server (DDMS)工具，在Android SDK 安裝目錄底下的tools目錄的ddms.bat批次檔，提供IDE開發工具與模擬器間的埠位(Port)之間的傳送服務。&lt;br /&gt;B. 在模擬器設定除錯選項，如阻斷程式啟動直到除錯器加入，請注意，很多除錯選項並非需要DDMS才能使用，如顯示中央處理器使用率或是模擬器的螢幕的更新頻率。&lt;br /&gt;C. 設定IDE開發工具聆聽除錯埠位到8700，相關資訊可以參考下一個章節說明。&lt;br /&gt;&lt;br /&gt;設定IDE開發工具聆聽除錯埠位&lt;br /&gt;DDMS會為模擬器上的每一個虛擬機器指定特定的除錯埠，必須設定IDE開發工具取得該埠位或是連上預設的8700埠位。&lt;br /&gt;執行中的程式，若是變更除錯選項或是「Wait for debugger(阻斷程式啟動)」選項，會導致系統關閉目前執行的程式。&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-7115000157689699570?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/7115000157689699570/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=7115000157689699570' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7115000157689699570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7115000157689699570'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android17-ideandroid.html' title='深入淺出Android程式設計(17)-如何在其他IDE或工具開發Android應用程式(下)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6sTixhigSrc/SQxxeC33-lI/AAAAAAAAAkw/TiluolnmXvY/s72-c/46_Emulator.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-3606090577542757943</id><published>2008-11-01T08:09:00.001-07:00</published><updated>2008-11-01T08:09:52.605-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(16)-如何在其他IDE或工具開發Android應用程式(中)</title><content type='html'>在上一個章節，在Dos命令列利用activityCreator.bat建立Android專案，所要用的一些檔案。在這個章節中，來介紹如何建置Android應用程式。&lt;br /&gt;&lt;br /&gt;建置Android應用程式&lt;br /&gt;在上一個章節，使用activityCreator建立的ant 建置檔案(build.xml)來建置Android應用程式。請用以下步驟建置Android應用程式：&lt;br /&gt;&lt;br /&gt;A.         如果系統沒有安裝Ant，可以從Apache Ant(&lt;a href="http://ant.apache.org/"&gt;http://ant.apache.org/&lt;/a&gt; )的網頁下載，安裝並確定它在您的執行路徑上。&lt;br /&gt;B.         使用Ant前，要先需要宣告JAVA_HOME環境變數指定到JDK的安裝路徑。請參考之前的章節來設定環境變數。&lt;br /&gt;&lt;br /&gt;備註：在Windows安裝JDK預設路徑會裝到"Program Files"目錄下，因為中間有空白的關係，會導致Ant失敗，修正這個問題的方式就是指定JAVA_HOME環境變數，例如：Set JAVA_HOME=c:\Progra~1\Java. 更簡單的方法則是將JDK安裝到沒有空白的路徑如：c:\java\jdk1.6.02&lt;br /&gt;&lt;br /&gt;C.         如果尚未完成，請照上述建立新專案的方式設定專案。&lt;br /&gt;D.         您現在可以在build.xml同在的目錄下鍵入ant指令執行建置，每次改變程式碼或是資源檔，您應該重新執行ant以打包最新的發佈檔案。&lt;br /&gt;&lt;br /&gt;在Eclipse平台，已經有內建ant。相關的用法，後續的章節會陸續介紹。有興趣的讀者可以參考下述網址資訊：&lt;br /&gt;&lt;a href="http://ysl-paradise.blogspot.com/2008/09/eclipse-ant-android.html"&gt;http://ysl-paradise.blogspot.com/2008/09/eclipse-ant-android.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-3606090577542757943?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/3606090577542757943/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=3606090577542757943' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3606090577542757943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3606090577542757943'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android16-ideandroid.html' title='深入淺出Android程式設計(16)-如何在其他IDE或工具開發Android應用程式(中)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5484755286833646000</id><published>2008-11-01T08:04:00.000-07:00</published><updated>2008-11-01T08:09:07.880-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(15)-如何在其他IDE或工具開發Android應用程式(上)</title><content type='html'>&lt;div&gt;&lt;div&gt;在這個章節中，來介紹如何在其他IDE或工具用開發Android應用程式。&lt;br /&gt;&lt;br /&gt;在開發工作上，雖然推薦以Eclipse平台加上Android外掛來開發應用程式(也同時整合了程式編輯、建置與除錯功能)，但是，Android SDK還是提供工具讓其它IDE(包括intelliJ)來開發應用程式。&lt;br /&gt;&lt;br /&gt;建立Android專案&lt;br /&gt;在Android SDK包含一個activityCreator程式，這個程式可以為Android專案建立一些樣板程式與建置檔，也可以用該程式建立新專案或為已有的程式碼建立專案(如Android SDK內附的範例程式)。&lt;br /&gt;&lt;br /&gt;這個程式在Linux與Mac系統，檔案名稱叫做activityCreator，Python則是activityCreator.py，Windows系統則是用activityCreator.bat批次檔，不管是那個平台，都可直接使用activityCreator來執行建立Android專案。&lt;br /&gt;&lt;br /&gt;用以下步驟執行activityCreator建立專案(以Windows平台為例)：&lt;br /&gt;1.在Windows系統上，執行Dos命令視窗，先變更切換到Android SDK安裝目錄底下的tools目錄，並為專案建立一個新目錄；如果要為已經存在的程式碼建立專案，請變更目錄到應用程式的目錄。 &lt;/div&gt;&lt;div&gt;2. 在Dos命令視窗執行activityCreator，必須指定完整的類別名稱做為參數，如果是新建專案，則會以完整的類別名稱建立樣板程式碼；如果是從已存在的程式碼建立專案，則必須指定套件內的Activity類別名稱。&lt;br /&gt;&lt;br /&gt;命令列參數還包括：&lt;br /&gt;--out &lt;目錄&gt;：要設定輸出目錄，預設是現在所在的目錄，如果您要將專案檔案放在其它目錄，請用這個參數來指定。&lt;br /&gt;--ide intellij：在建立專案時產生 intellij相關檔案。&lt;br /&gt;Project Name：專案名稱&lt;br /&gt;Package Name：套件名稱&lt;br /&gt;Activity Name：Activity名稱&lt;br /&gt;&lt;br /&gt;範例如下：&lt;br /&gt;&lt;span&gt;~/android_linux_sdk/tools $ ./activityCreator.py --out myproject your.package.name.ActivityName&lt;br /&gt;package: your.package.name&lt;br /&gt;out_dir: myproject&lt;br /&gt;activity_name: ActivityName&lt;br /&gt;~/android_linux_sdk/tools $ &lt;/span&gt;&lt;span style="color:#000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;在Windows系統上，執行Dos命令視窗。執行如圖44所示的命令：&lt;br /&gt;activitycreator -out HelloAndroid com.android.HelloAndroid&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQxwWF-ywpI/AAAAAAAAAkg/5loSgq-9bbc/s1600-h/44_ActivityCreator.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263705589354250898" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 135px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQxwWF-ywpI/AAAAAAAAAkg/5loSgq-9bbc/s320/44_ActivityCreator.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖44&lt;br /&gt;&lt;br /&gt;activityCreator批次檔，會建立以下的檔案與目錄，如圖45所示(但是不會覆蓋已經存在的程式)： &lt;/div&gt;&lt;div&gt;1. bin/ ant建置檔案的輸出路徑。&lt;br /&gt;2. libs/ Android libs。&lt;br /&gt;3. res/ 資源檔案目錄。&lt;br /&gt;  3.1 layout：版面配置目錄，以XML格式顯示。&lt;br /&gt;  3.2 values：參數值目錄，記錄所有使用XML格式的參數值。&lt;br /&gt;4.src/ 原始碼目錄，包含所有Android應用程式中的原始程式碼。&lt;br /&gt;5.AndroidManifest.xml：Android程式的功能清單。&lt;br /&gt;6. build.xml：ant 建置檔案，可以建置/安裝程式。&lt;br /&gt;&lt;br /&gt;現在可以帶著建立好的目錄到處開發了，但是不要忘了，使用tools目錄內的adb程式把檔案送給模擬器。但是，應當避免移動Android SDK所在的目錄，因為這會破壞建立檔案的設定。&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQxweyyEVQI/AAAAAAAAAko/JSo6EIpt-O8/s1600-h/45_ProjectDirectory.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263705738819425538" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 124px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQxweyyEVQI/AAAAAAAAAko/JSo6EIpt-O8/s320/45_ProjectDirectory.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖45&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5484755286833646000?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5484755286833646000/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5484755286833646000' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5484755286833646000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5484755286833646000'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android15-ideandroid.html' title='深入淺出Android程式設計(15)-如何在其他IDE或工具開發Android應用程式(上)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6sTixhigSrc/SQxwWF-ywpI/AAAAAAAAAkg/5loSgq-9bbc/s72-c/44_ActivityCreator.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-6958771520967288307</id><published>2008-11-01T08:02:00.001-07:00</published><updated>2008-11-01T08:03:42.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(14)-如何在Eclipse上開發Android應用程式(下)</title><content type='html'>&lt;p&gt;在這個章節中，接續上一個章節，來介紹如何進行應用程式的執行與除錯工作。&lt;br /&gt;&lt;br /&gt;當依照之前的章節將應用程式設定好專案與載入配置，就可以依下述步驟來進行應用程式執行與除錯：&lt;br /&gt;&lt;br /&gt;在進入Eclipse平台，選取選單「Run」中的「Run」選項或是選取「Debug」選項，來執行或除錯應用程式。如圖43所示。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQxvqNmljRI/AAAAAAAAAkY/nrzMgpJFeOg/s1600-h/43_RunProject.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263704835485961490" style="WIDTH: 300px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQxvqNmljRI/AAAAAAAAAkY/nrzMgpJFeOg/s320/43_RunProject.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖43&lt;br /&gt;&lt;br /&gt;若要修改或設定有效的載入配置，請依上一個章節的描述來設定。&lt;br /&gt;&lt;br /&gt;執行或除錯應用程式會觸發以下動作：&lt;br /&gt;A. 模擬器如尚未執行則啟動模擬器，並執行應用程式。&lt;br /&gt;B. 如果程式建置完成，但是，又有過修改，則會重新編譯專案，並將程式安裝到模擬器。&lt;br /&gt;C. 執行時，如果啟動程式除錯，則將程式啟動為"Wait for debugger"模式，並開啟Eclipse平台的除錯檢視功能。&lt;br /&gt;&lt;br /&gt;在這個章節中，陸續介面了有關Android專案在Eclipse平台上操作步驟。接下來要介紹的是如果沒有Eclipse這樣的IDE操作介面是不是也可以像Java或C語言那樣，用純手工的方式來寫程式碼，在Dos視窗來執行呢? &lt;/p&gt;&lt;p&gt;&lt;br /&gt;答案是可以的，Android SDK有提供一些工具來使用，例如：執行一些批次檔來建立專案、執行模擬器等工作。 &lt;/p&gt;&lt;p&gt;&lt;br /&gt;後續也會開始介紹一些簡單的範例程式，來了解程式是如何執行的。&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-6958771520967288307?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/6958771520967288307/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=6958771520967288307' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6958771520967288307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/6958771520967288307'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android14-eclipseandroid.html' title='深入淺出Android程式設計(14)-如何在Eclipse上開發Android應用程式(下)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6sTixhigSrc/SQxvqNmljRI/AAAAAAAAAkY/nrzMgpJFeOg/s72-c/43_RunProject.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-8144632168305886996</id><published>2008-11-01T07:51:00.000-07:00</published><updated>2008-11-01T08:01:54.363-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(13)-如何在Eclipse上開發Android應用程式(中)</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;在這個章節中，接續上一個章節，來介紹如何建立載入配置的工作。&lt;br /&gt;&lt;br /&gt;建立載入配置&lt;br /&gt;當建立好新的專案後，必須再建立載入配置以便能讓Eclipse執行與除錯應用程式，載入配置指定專案載入、啟動Activit，使用模擬器選項等作業。&lt;br /&gt;&lt;br /&gt;請依下述步驟建立載入配置：&lt;br /&gt;&lt;br /&gt;1. 在進入Eclipse平台，選取選單「Run」中的「Run Configurations…」選項或是選取「Debug Configurations…」選項。如圖38所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQxuySn_UhI/AAAAAAAAAjw/PcST6ESm7tI/s1600-h/38_Run_Configurations.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263703874761347602" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 183px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQxuySn_UhI/AAAAAAAAAjw/PcST6ESm7tI/s320/38_Run_Configurations.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖38&lt;br /&gt;&lt;br /&gt;2. 進入Run Configurations視窗，選取左邊的專案型態為「Android Application」的項目，按下滑鼠右鍵，選取「New」選項，建立新的配置設定，預設會依目前的專案，自動建立所屬的配置設定。如圖39所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQxu3ResIzI/AAAAAAAAAj4/DJ8bD1iN9e8/s1600-h/39_New_Configurations.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263703960353252146" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 170px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQxu3ResIzI/AAAAAAAAAj4/DJ8bD1iN9e8/s320/39_New_Configurations.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖39&lt;br /&gt;&lt;br /&gt;3. 在新的配置設定視窗，在「Name」欄位上輸入這個應用程式的配置名稱。如圖40所示。&lt;br /&gt;4. 在新的配置設定視窗，切換到「Android」頁標籤，點選「Browse...」來選擇所屬的專案與設定Launch Action，讓Eclipse了解目前要執行那個專案。如圖40所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQxu9Wwi8ZI/AAAAAAAAAkA/2es_RGQ2JdU/s1600-h/40_Android_Tag.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263704064849539474" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 132px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQxu9Wwi8ZI/AAAAAAAAAkA/2es_RGQ2JdU/s320/40_Android_Tag.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖40&lt;br /&gt;&lt;br /&gt;5.在新的配置設定視窗，切換到「Target」頁標籤，設定所屬專案想要執行的螢幕格式(Screen Size)與網路屬性(Network options)，和其它的模擬器啟動選項。如圖41所示。一些細部的設定，可以參考下述網址：&lt;a href="http://code.google.com/android/reference/emulator.html#skins"&gt;http://code.google.com/android/reference/emulator.html#skins&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQxvE4dUU5I/AAAAAAAAAkI/6_tsKrYnhEE/s1600-h/41_Target_Tag.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263704194154779538" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 165px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQxvE4dUU5I/AAAAAAAAAkI/6_tsKrYnhEE/s320/41_Target_Tag.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;圖41&lt;br /&gt;&lt;br /&gt;6.在新的配置設定視窗，切換到「Common」頁標籤，設定其它想要的選項，如圖42所示。&lt;br /&gt;7. 最後，按下「apply」按鈕，來儲存載入配置或是酌情按Run或Debug選項。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQxvNkEE9OI/AAAAAAAAAkQ/e96raLxyUVw/s1600-h/42_Common_Tag.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263704343299028194" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 262px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQxvNkEE9OI/AAAAAAAAAkQ/e96raLxyUVw/s320/42_Common_Tag.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖42&lt;br /&gt;&lt;br /&gt;設定好專案的配置後，就可以進行執行或除錯的動作。 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-8144632168305886996?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/8144632168305886996/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=8144632168305886996' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8144632168305886996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/8144632168305886996'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android13-eclipseandroid.html' title='深入淺出Android程式設計(13)-如何在Eclipse上開發Android應用程式(中)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6sTixhigSrc/SQxuySn_UhI/AAAAAAAAAjw/PcST6ESm7tI/s72-c/38_Run_Configurations.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5651889951640829333</id><published>2008-11-01T07:22:00.000-07:00</published><updated>2008-11-01T07:51:02.527-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(12)-如何在Eclipse上開發Android應用程式(上)</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;在Eclipse平台上開發Android應用程式，首先要建立Android專案並設定載入配置，再來可以撰寫程式碼、執行程式與如果有錯誤再進行除錯程式的動作。&lt;br /&gt;&lt;br /&gt;在進行本章節時，是假設您已安裝好Eclipse相關的執行環境，如果您還未安裝Eclipse開發環境，請參考之前的章節。&lt;br /&gt;&lt;br /&gt;建立Android專案&lt;br /&gt;Eclipse的ADT外掛有提供專案精靈，讓我們可以快速為已經存在的程式碼或是建立全新的專案，請依下述步驟建立Android專案：&lt;br /&gt;&lt;br /&gt;1. 在進入Eclipse平台，選取選單「File」中的「New」選項，再選取「Project...」選項，進入開啟新專案的視窗。如圖34所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQxsIipgYAI/AAAAAAAAAjQ/N144XWLp6lc/s1600-h/34_Eclipse_New_Project.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263700958484914178" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 168px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQxsIipgYAI/AAAAAAAAAjQ/N144XWLp6lc/s320/34_Eclipse_New_Project.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖34&lt;br /&gt;&lt;br /&gt;2. 進入開啟新專案的視窗，如圖35所示。在專案類別中，選取「Android」裡面的「Android Project」，然後按下「Next」按鈕，進行下一個步驟。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQxsQCwXV5I/AAAAAAAAAjY/_MV2dn3UkzU/s1600-h/35_Android_Project.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263701087362701202" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 306px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQxsQCwXV5I/AAAAAAAAAjY/_MV2dn3UkzU/s320/35_Android_Project.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖35&lt;br /&gt;&lt;br /&gt;3. 在這個步驟中，主要為Android專案選擇是要新建立專案或是開啟已存在的程式碼而建立專案，如圖36所示。&lt;br /&gt;A. 選擇Create new project in workspace：&lt;br /&gt;建立新的專案，要輸入Project name(專案名稱)、屬性方面也要設定Package name(套件名稱)、Application name(應用程式名稱)與Activity name(主要類別的名稱)，來建立專案樣板的.java檔案。相關說明，會在後續的節章提出。&lt;br /&gt;&lt;br /&gt;B. 選擇Create project from existing source：&lt;br /&gt;為已存在的程式碼建立專案，可以使用這個選項來執行Android SDK所附的範例程式，這些程式放在Android SDK的安裝路徑底下的samples目錄。按下「Browse…」按鈕來瀏覽已存在的程式碼。&lt;br /&gt;&lt;br /&gt;4. 按下「Finish」按鈕，完成專案的建立。 &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQxsZLeXw_I/AAAAAAAAAjg/LoCwLsvEzFA/s1600-h/36_Android_Project_Choose.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263701244321973234" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 305px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQxsZLeXw_I/AAAAAAAAAjg/LoCwLsvEzFA/s320/36_Android_Project_Choose.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖36&lt;br /&gt;&lt;br /&gt;依上述的專案設定，ADT(Android Development Tools)外掛會為建立下述的目錄與檔案，如圖37所示：&lt;br /&gt;1. src/原始碼目錄，包含所有Android應用程式中的原始程式碼。&lt;br /&gt;2. res/資源檔案目錄。&lt;br /&gt;    A. drawable：儲存靜態的圖片目錄，在程式使用到的.png、.gif、.jpg等格式的檔案，都會放在這個目錄中。&lt;br /&gt;    B. layout：版面配置目錄，以XML格式顯示。&lt;br /&gt;    C. values：參數值目錄，記錄所有使用XML格式的參數值。&lt;br /&gt;3. AndroidManifest.xml：Android程式的功能清單。 &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQxsjSW_nWI/AAAAAAAAAjo/gRk4BQdjSPE/s1600-h/37_Create_Android_Project.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263701417968770402" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 258px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQxsjSW_nWI/AAAAAAAAAjo/gRk4BQdjSPE/s320/37_Create_Android_Project.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖37&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5651889951640829333?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5651889951640829333/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5651889951640829333' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5651889951640829333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5651889951640829333'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/11/android12-eclipseandroid.html' title='深入淺出Android程式設計(12)-如何在Eclipse上開發Android應用程式(上)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6sTixhigSrc/SQxsIipgYAI/AAAAAAAAAjQ/N144XWLp6lc/s72-c/34_Eclipse_New_Project.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-291063277236459531</id><published>2008-10-31T21:26:00.000-07:00</published><updated>2008-10-31T21:27:44.079-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(11)-如何進行Android的開發與除錯</title><content type='html'>在之前發佈了一列系的深入淺出Android程式設計中，從Android的架構、如何安裝相關軟體、安裝時的操作步驟。相信讀書已經可以進行基本的程式設計了。&lt;br /&gt;&lt;br /&gt;後續將開始介紹如何在Eclipse上或是利用Android SDK來設計、除錯程式。預計大概章節如下所述：&lt;br /&gt;A.     如何在Eclipse上開發Android應用程式&lt;br /&gt;B.     如何在其他IDE或工具開發Android應用程式&lt;br /&gt;C.     如何數位簽署應用程式&lt;br /&gt;D.     如何使用ApiDemos範例應用程式&lt;br /&gt;E.      如何除錯&lt;br /&gt;F.      如何除錯及測試模擬裝置設定&lt;br /&gt;G.     有關在除錯時的提示&lt;br /&gt;H.     如何建置與安裝Android應用程式&lt;br /&gt;I.        如何移除Android應用程式&lt;br /&gt;J.       在Eclipse開發上的提示&lt;br /&gt;&lt;br /&gt;接下來，將從基本的一個Hello Android程式專案，來了解一個Android程式如何在Eclipse平台開發的開始到結束。會自動建立那些檔案及檔案的程式結構如何等章節。&lt;br /&gt;&lt;br /&gt;A.     如何建立專案&lt;br /&gt;B.     如何建立介面&lt;br /&gt;C.     執行程式碼&lt;br /&gt;&lt;br /&gt;D.     如何將介面升級到以XML方式來排版&lt;br /&gt;E.      如何進行專案除錯&lt;br /&gt;F.      如何以Eclipse建立專案&lt;br /&gt;&lt;br /&gt;最後，再介紹一個設計Android介面的小工具DroidDraw(參考網址如下：&lt;br /&gt;&lt;a href="http://www.droiddraw.org/"&gt;http://www.droiddraw.org/&lt;/a&gt; )，方便設計出好用的Android介面。也會提到如何將Eclipse開發平台中文化．．．等小技巧。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-291063277236459531?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/291063277236459531/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=291063277236459531' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/291063277236459531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/291063277236459531'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android11-android.html' title='深入淺出Android程式設計(11)-如何進行Android的開發與除錯'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-439217501090754006</id><published>2008-10-31T21:21:00.000-07:00</published><updated>2008-10-31T21:26:25.103-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(10)-安裝ADT疑難雜症及如何更新ADT</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;在這個章節中，將介紹有關安裝ADT疑難雜症及如何更新ADT，可以讓ADT(Android Development Tools)外掛程式可以即時更新版本。&lt;br /&gt;&lt;br /&gt;如果依上一個章節安裝ADT出現了問題，有二點建議可以來參考是否為環境及防火牆設定上出了問題。&lt;br /&gt;A. 在新增外掛的網址輸入視窗，如圖29所示，在Location欄位輸入「&lt;a href="https://dl-ssl.google.com/android/eclipse/"&gt;https://dl-ssl.google.com/android/eclipse/&lt;/a&gt;」，再按下「OK」按鈕。如果出現了錯誤，在原安裝畫面沒有連結到安裝網址，可以將「hppts://」修正成「hppt://」，再試試看。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQvZoddV8pI/AAAAAAAAAio/jjAr45KpgP0/s1600-h/29_Add_Site.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263539878638252690" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 109px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQvZoddV8pI/AAAAAAAAAio/jjAr45KpgP0/s320/29_Add_Site.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖29&lt;br /&gt;&lt;br /&gt;B. 如果您安裝的電腦是在防火牆後面(例如：公司的防火牆)，那就請確保您已正確的設定代理伺服器在Eclipse上。設定的方式，請選取選單「Window」中的「Preferences」選項，再選取「General」面版，選取「Network Connections」，如圖30所示。設定代理伺服器，方便安裝檔案的下載。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQvZwc8TxKI/AAAAAAAAAiw/xdqWk9Pn4Wc/s1600-h/30_Network_Connections.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263540015938651298" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 126px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQvZwc8TxKI/AAAAAAAAAiw/xdqWk9Pn4Wc/s320/30_Network_Connections.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖30&lt;br /&gt;&lt;br /&gt;如果依在上述排除安裝ADT疑難雜症，還是不能安裝ADT的話，那只能先下載ADT的壓縮檔案，再用本機安裝的方式來安裝ADT。步驟如下所述：&lt;br /&gt;A. 先連接到網址：&lt;a href="http://code.google.com/android/adt_download.html"&gt;http://code.google.com/android/adt_download.html&lt;/a&gt;，儲存下載檔案「ADT-0.8.0.zip」到您指定的目錄。如圖31所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQvZ47IQBZI/AAAAAAAAAi4/tt1gzy4kAJY/s1600-h/31_Download_ACT.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263540161480754578" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 62px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQvZ47IQBZI/AAAAAAAAAi4/tt1gzy4kAJY/s320/31_Download_ACT.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖31&lt;/div&gt;&lt;div&gt;&lt;br /&gt;B. 在進入Eclipse平台，選取選單「Help」中的「Software Updates....」選項，進入Software Updates的視窗，切換頁標籤至「Available Software」，再點選「Add Site...」按鈕，如圖32所示。再點選「Archive…」按鈕，選取上一個步驟下載的檔案位置，按下「OK」，進行安裝即可。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQvaADPvNeI/AAAAAAAAAjA/DmOhAPlI_zA/s1600-h/32_Archive.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263540283918726626" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 108px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQvaADPvNeI/AAAAAAAAAjA/DmOhAPlI_zA/s320/32_Archive.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖32&lt;/div&gt;&lt;div&gt;&lt;br /&gt;如果ADT外掛元件有新的版本時，可以在Eclipse平台，選取選單「Help」中的「Software Updates....」選項。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;進入Software Updates的視窗，在「Installed Software」頁標籤，就會顯示出所有安裝的軟體，如圖33所示。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;再選取「Android Editors」，按下「Update…」按鈕來進行軟體更新的動作。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQvaHakXPkI/AAAAAAAAAjI/vlf5ftvPoW4/s1600-h/33_Software_Update.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263540410438336066" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 74px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQvaHakXPkI/AAAAAAAAAjI/vlf5ftvPoW4/s320/33_Software_Update.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖33 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-439217501090754006?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/439217501090754006/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=439217501090754006' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/439217501090754006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/439217501090754006'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android10-adtadt.html' title='深入淺出Android程式設計(10)-安裝ADT疑難雜症及如何更新ADT'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6sTixhigSrc/SQvZoddV8pI/AAAAAAAAAio/jjAr45KpgP0/s72-c/29_Add_Site.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-5895139729695131082</id><published>2008-10-31T21:07:00.000-07:00</published><updated>2008-10-31T21:16:58.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(9)-如何安裝Eclipse外掛(ADT)</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;在這個章節中，將進一步的來介紹如何安裝Eclipse外掛(ADT)，全名是：「Android Development Tools」，讓我們有良好的介面來在開發Android的程式。&lt;br /&gt;&lt;br /&gt;首先，先啟動Eclipse，如同上一個章節所述，接下來在選取選單「Help」中的「Software Updates....」選項，如圖21所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQvX3QUUcpI/AAAAAAAAAig/nQr0HdEZpYk/s1600-h/21_Eclipse_Update_Page.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263537933785526930" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 207px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQvX3QUUcpI/AAAAAAAAAig/nQr0HdEZpYk/s320/21_Eclipse_Update_Page.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖21&lt;br /&gt;&lt;br /&gt;在點選「Software Updates....」選項後，就會出現Software Updates的視窗，如圖22所示，切換頁標籤至「Available Software」，再點選「Add Site...」按鈕。就會出現要新增外掛的網址輸入視窗。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQvWs7TcQuI/AAAAAAAAAho/r81R8JNo3oc/s1600-h/22_Eclipse_Software_Updates.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263536656834380514" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 149px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQvWs7TcQuI/AAAAAAAAAho/r81R8JNo3oc/s320/22_Eclipse_Software_Updates.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖22&lt;br /&gt;&lt;br /&gt;在新增外掛的網址輸入視窗，如圖23所示，在Location欄位輸入「&lt;a href="https://dl-ssl.google.com/android/eclipse/"&gt;https://dl-ssl.google.com/android/eclipse/&lt;/a&gt;」，再按下「OK」按鈕。就會回到原來的Software Updates視窗。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQvW19VTOSI/AAAAAAAAAhw/gWdH6SjF32M/s1600-h/23_Add_Site.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263536811997870370" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 109px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQvW19VTOSI/AAAAAAAAAhw/gWdH6SjF32M/s320/23_Add_Site.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖23&lt;br /&gt;&lt;br /&gt;在Software Updates視窗，就會多出剛才輸入的網址而產生出來的選項，點選開來，再勾選「Android Developer Tools」及「Android Editors」等二個選項，再按下「Install」按鈕，進行安裝動作，如圖24所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQvW-rBqEhI/AAAAAAAAAh4/4kq9wYJD1O8/s1600-h/24_Install_Site.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263536961702466066" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 74px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQvW-rBqEhI/AAAAAAAAAh4/4kq9wYJD1O8/s320/24_Install_Site.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖24&lt;br /&gt;&lt;br /&gt;選取「Android Developer Tools」及「Android Editors」選項後就會如圖25所示。按下「Finish」按鈕，進行安裝作業，如圖26所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQvXHl4PNzI/AAAAAAAAAiA/AfYYgf46xoA/s1600-h/25_Install_Software.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263537114939602738" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 194px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQvXHl4PNzI/AAAAAAAAAiA/AfYYgf46xoA/s320/25_Install_Software.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖25&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQvXPMz29VI/AAAAAAAAAiI/LpuQkiuV7RQ/s1600-h/26_Install_Process.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263537245649302866" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 126px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQvXPMz29VI/AAAAAAAAAiI/LpuQkiuV7RQ/s320/26_Install_Process.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖26&lt;br /&gt;&lt;br /&gt;完成所有安裝後，就會出現是否要重新啟動Eclipse的視窗，如圖27所示。按下「Yes」按鈕，就會重新啟動Eclipse，完成安裝。下一步再設定Android SDK路徑即可。&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQvXYxYzTwI/AAAAAAAAAiQ/ybljKiBLspc/s1600-h/27_Eclipse_Restart.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263537410086752002" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 92px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQvXYxYzTwI/AAAAAAAAAiQ/ybljKiBLspc/s320/27_Eclipse_Restart.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖27&lt;br /&gt;&lt;br /&gt;重新進入Eclipse，設定Android SDK路徑。選取選單「Window」中的「Preferences」選項，再選取「Android」面版，如圖28所示。在SDK Location欄位，點選「Browse…」按鈕，來選取您之前安裝的Android SDK路徑，依上一個章節的步驟，設定值為「C:\android」。&lt;br /&gt;再按下「Apply」套用您的設定，再點選「OK」按鈕，完成所有的設定。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQvXiFQocaI/AAAAAAAAAiY/4FaQr6yCUh4/s1600-h/28_Set_SDK_Location.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263537570040017314" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 280px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQvXiFQocaI/AAAAAAAAAiY/4FaQr6yCUh4/s320/28_Set_SDK_Location.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖28&lt;br /&gt;&lt;br /&gt;完成上述的設定，我們就可以來開發Android的程式了。 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-5895139729695131082?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/5895139729695131082/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=5895139729695131082' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5895139729695131082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/5895139729695131082'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android9-eclipseadt.html' title='深入淺出Android程式設計(9)-如何安裝Eclipse外掛(ADT)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6sTixhigSrc/SQvX3QUUcpI/AAAAAAAAAig/nQr0HdEZpYk/s72-c/21_Eclipse_Update_Page.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-3651794868667287332</id><published>2008-10-31T21:03:00.000-07:00</published><updated>2008-10-31T21:07:44.383-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(8)-如何下載與安裝Eclipse</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;在這個章節中，將要介紹如何安裝Eclipse，讓我們有良好的介面來在開發Android的程式。&lt;br /&gt;&lt;br /&gt;首先，進入下載網址：&lt;a href="http://www.eclipse.org/downloads/"&gt;http://www.eclipse.org/downloads/&lt;/a&gt;，如圖16所示，點選「Eclipse Class 3.4.1」版本的連結下載的網址。(如果有更新的版本，請下載最新版本。)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQvVbbyXTKI/AAAAAAAAAgw/TT61W1VcoAE/s1600-h/16_Download_Eclipse_Site.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263535256804740258" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 88px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQvVbbyXTKI/AAAAAAAAAgw/TT61W1VcoAE/s320/16_Download_Eclipse_Site.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖16&lt;br /&gt;&lt;br /&gt;進入顯示全球可以下載地方，如圖17所示。選取Asia地區中的Taiwan連結網址「National Sun Yat-sen University (http)」，進行下載動作。儲存下載檔案到您指定的目錄。&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQvVhqlaKEI/AAAAAAAAAg4/tE4OYAaWGOw/s1600-h/17_Download_Eclipse.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263535363856148546" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 205px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQvVhqlaKEI/AAAAAAAAAg4/tE4OYAaWGOw/s320/17_Download_Eclipse.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖17&lt;br /&gt;&lt;br /&gt;用解壓縮軟體來解壓縮下載檔案，如圖18所示。解壓縮到您指定的路徑下。例如：解壓縮到C:\Eclipse目錄。再點選eclipse.exe執行檔就可以執行Eclipse開發工具。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQvVoM-Hc8I/AAAAAAAAAhA/vlhjbJMb60U/s1600-h/18_Run_Eclipse.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263535476165800898" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 247px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQvVoM-Hc8I/AAAAAAAAAhA/vlhjbJMb60U/s320/18_Run_Eclipse.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖18&lt;br /&gt;&lt;br /&gt;執行Eclipse開發工具，會出現建立工作空間(workspace)的選項，如圖19所示。使用預設值即可，您也可以設計不同的工作空間目錄。以後，在開發任何程式時，會將所有程式依專案名稱儲存在您設定的工作空間中。&lt;br /&gt;您也可以勾選「Use this as the default and do net ask again」選項，那下一次再進入Eclipse就不用再設定工作空間，而是用預設的工作空間即可。&lt;br /&gt;設定好工作空間後，按下「OK」，進入Eclipse開發平台的Welcome畫面，如圖20所示。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQvVwMhJ06I/AAAAAAAAAhI/q4asKq_xUss/s1600-h/19_Set_WorkSpace.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263535613483275170" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 130px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQvVwMhJ06I/AAAAAAAAAhI/q4asKq_xUss/s320/19_Set_WorkSpace.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖19&lt;br /&gt;&lt;br /&gt;進入Eclipse開發平台的Welcome畫面，可以先瀏覽有關Eclipse的Overview(概述)、What’s New(最新消息)、Samples(程式範例)、Tutorials(訓練文件)等類似Help的說明。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQvV4CmuvhI/AAAAAAAAAhQ/aG0Arr6LtIU/s1600-h/20_Eclipse_Main.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263535748261264914" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 310px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQvV4CmuvhI/AAAAAAAAAhQ/aG0Arr6LtIU/s320/20_Eclipse_Main.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖20&lt;br /&gt;&lt;br /&gt;上述為如何安裝Eclipse的步驟，下一個章節介紹如何安裝外掛Android的開發元件ADT到Eclipse中。 &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-3651794868667287332?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/3651794868667287332/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=3651794868667287332' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3651794868667287332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3651794868667287332'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android8-eclipse.html' title='深入淺出Android程式設計(8)-如何下載與安裝Eclipse'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6sTixhigSrc/SQvVbbyXTKI/AAAAAAAAAgw/TT61W1VcoAE/s72-c/16_Download_Eclipse_Site.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-3353941178605867856</id><published>2008-10-31T19:15:00.000-07:00</published><updated>2008-10-31T19:31:28.858-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(7)-如何安裝Android SDK</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;要開發安裝Android SDK(軟體開發套件)，首先，要了解它需要的作業系統及要先安裝的軟體需求，而Android SDK(軟體開發套件)是以Java語言為開發語言，所以，也要先下載安裝JDK。&lt;br /&gt;&lt;br /&gt;所需的作業系統與軟體需求如下所述：&lt;br /&gt;&lt;br /&gt;支援的作業系統&lt;br /&gt;Windows XP或Windows Vista&lt;br /&gt;Mac OS X 10.4.8版本或之後的版本&lt;br /&gt;Linux&lt;br /&gt;&lt;br /&gt;支援的開發環境&lt;br /&gt;*Eclipse IDE&lt;br /&gt;*Eclipse3.3版本(Europa)或3.4版本(Ganymede)。&lt;br /&gt;*JDK5或JDK6版本。&lt;br /&gt;*Android Development Tools外掛(選擇項目，不一定要安裝)。&lt;br /&gt;*其它開發環境或IDE&lt;br /&gt;*JDK5或JDK6版本。&lt;br /&gt;*Apache Ant 1.6.5版本或之後的版本。&lt;br /&gt;&lt;br /&gt;首先，先下載與安裝JDK。&lt;br /&gt;進入下載網址：&lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;http://java.sun.com/javase/downloads/index.jsp&lt;/a&gt;，如圖6所示，點選JKD 6 Update 7版本的Download按鈕。(如果有更新的版本，請下載最新版本&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQu8rNNIBaI/AAAAAAAAAfg/hJgJ69By3BA/s1600-h/06_JDK_Download.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263508039977665954" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 213px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQu8rNNIBaI/AAAAAAAAAfg/hJgJ69By3BA/s320/06_JDK_Download.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖6&lt;br /&gt;&lt;br /&gt;點選進入下載畫面後，請選取Platform為Windows平台，Language為Multi-language版本即可，勾選同意書選項，再按下「Continue」按鈕。進行下載動作，如圖7所示。儲存下載檔案到您指定的目錄。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQu84SSiHHI/AAAAAAAAAfo/9J3o4T2jSOs/s1600-h/07_JDK_Ver.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263508264680823922" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 140px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQu84SSiHHI/AAAAAAAAAfo/9J3o4T2jSOs/s320/07_JDK_Ver.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖7&lt;br /&gt;&lt;br /&gt;執行下載檔案執行檔，如圖8所示。依預設值，下一步完成所有安裝動作。下一步設定環境變數。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQu9GcMix9I/AAAAAAAAAfw/GIjnWMMemHw/s1600-h/08_Java_Runtime_Setup.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263508507858225106" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 243px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQu9GcMix9I/AAAAAAAAAfw/GIjnWMMemHw/s320/08_Java_Runtime_Setup.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖8&lt;br /&gt;&lt;br /&gt;在檔案總管中，選取「我的電腦」，點選滑鼠右鍵，出現選單。再選取「內容」選項，就會出現系統內容，選取「進階」頁標籤，再選取「環境變數」按鈕來設定環境變數。如圖9所示。&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQu9T6bmdTI/AAAAAAAAAf4/MVLEqy7S9bI/s1600-h/09_Set_JDK_Path.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263508739312743730" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 237px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQu9T6bmdTI/AAAAAAAAAf4/MVLEqy7S9bI/s320/09_Set_JDK_Path.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖9&lt;br /&gt;&lt;br /&gt;進入環境變數，如圖10所示。選取「編輯」按鈕編輯環境變數，在編輯環境變數的變數值的最後，加入「;C:\Program Files\Java\jdk1.6.0_07\bin」變數值。如圖11所示。&lt;br /&gt;&lt;/p&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQu9im--ZeI/AAAAAAAAAgA/K6B1KAd7K1Q/s1600-h/10_Path_Content.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263508991790441954" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 208px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQu9im--ZeI/AAAAAAAAAgA/K6B1KAd7K1Q/s320/10_Path_Content.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;圖10 &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQu9t2qZHpI/AAAAAAAAAgI/DgbstsbRzK8/s1600-h/11_Edit_Path.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263509184977641106" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 120px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQu9t2qZHpI/AAAAAAAAAgI/DgbstsbRzK8/s320/11_Edit_Path.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖11&lt;br /&gt;&lt;br /&gt;接下來，就是下載與安裝Android SDK&lt;br /&gt;進入下載網址：&lt;a href="http://code.google.com/android/download.html"&gt;http://code.google.com/android/download.html&lt;/a&gt;，如圖12所示，勾選同意書選項，再按下「Continue」按鈕。進行下載動作，如圖13所示。儲存下載檔案到您指定的目錄。(如果有更新的版本，請下載最新版本。)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5263509407815074994" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 158px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQu960y-hLI/AAAAAAAAAgQ/SpEYVXnUSP4/s320/12_Android_SDK_Download.JPG" border="0" /&gt;&lt;br /&gt;圖12 &lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQu-EeDY6NI/AAAAAAAAAgY/0M17ReNBzVA/s1600-h/13_Download_Android_SDK.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263509573508589778" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 174px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQu-EeDY6NI/AAAAAAAAAgY/0M17ReNBzVA/s320/13_Download_Android_SDK.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖13&lt;br /&gt;&lt;br /&gt;用解壓縮軟體來解壓縮下載檔案，如圖14所示。解壓縮到您指定的路徑下。例如：解壓縮到C:\Android目錄，下一步設定所需的環境變數。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQu-0oWMLNI/AAAAAAAAAgg/vH1R-UlE6TA/s1600-h/14_Unzip_Android_SDK.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263510400905522386" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 146px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQu-0oWMLNI/AAAAAAAAAgg/vH1R-UlE6TA/s320/14_Unzip_Android_SDK.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖14&lt;br /&gt;&lt;br /&gt;依之前的步驟進入編輯環境變數，如圖10所示。選取「編輯」按鈕編輯環境變數，在編輯環境變數的變數值的最後，加入「;C:\Android\tools」變數值。如圖15所示。(依您解壓縮的目錄加上\tools即可。)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://3.bp.blogspot.com/_6sTixhigSrc/SQu--UY0T9I/AAAAAAAAAgo/gZ6094lRn8k/s1600-h/15_Setting_Android_SDK_Path.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263510567346524114" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 120px" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SQu--UY0T9I/AAAAAAAAAgo/gZ6094lRn8k/s320/15_Setting_Android_SDK_Path.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖15&lt;br /&gt;&lt;br /&gt;上述為安裝JDK及Android SDK的步驟，撰寫Android程式，可以用Eclipse所提供的IDE環境，方便進行程式畫面的設計及除錯。但是，Android SDK也有提供比較手動的方式來開發程式。&lt;br /&gt;在後續的章節中，我們會提到一些如何用Android SDK手動的方式來開發程式，但是會將重心放在Eclipse所提供的IDE環境。所以，下一個章節介紹如何安裝Eclipse及如何外掛Android的開發元件。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-3353941178605867856?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/3353941178605867856/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=3353941178605867856' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3353941178605867856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/3353941178605867856'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android7-android-sdk.html' title='深入淺出Android程式設計(7)-如何安裝Android SDK'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6sTixhigSrc/SQu8rNNIBaI/AAAAAAAAAfg/hJgJ69By3BA/s72-c/06_JDK_Download.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-7826883865689561196</id><published>2008-10-31T19:13:00.000-07:00</published><updated>2008-10-31T19:15:03.000-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(6)-什麼是Dalvik Virtual Machine?</title><content type='html'>在這個章節中，要來單獨討論什麼是Dalvik Virtual Machine，它是包含在Android Runtime中的元件，如圖５所示。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_6sTixhigSrc/SQu7f1MNZrI/AAAAAAAAAfY/XLYHgTX5iFQ/s1600-h/05_DVM.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263506745041184434" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 240px" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQu7f1MNZrI/AAAAAAAAAfY/XLYHgTX5iFQ/s320/05_DVM.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;圖5&lt;br /&gt;&lt;br /&gt;Dalvik Virtual Machine(Dalvik虛擬機器)是一種暫存器型態的虛擬機器。簡稱DVM，DVM在撰寫開發時就已經設想用最少的記憶體資源來執行，以及同時可執行多個VM為前提來開發的。&lt;br /&gt;&lt;br /&gt;不過，上述的特性需要Linux作業系統的協助才能實現，例如程序問執行的控制、多執行緒的支援、記憶體管理等。事實上不僅Dalvik虛擬機器如此，Java虛擬機器也一樣有作業系統相依性，不同的作業系統需要不同的Java虛擬機器，而虛擬機器會針對其支援的作業系統再進行各項調整，以便能最佳化執行。&lt;br /&gt;&lt;br /&gt;Dalvik虛擬機器有許多地方是參考Java虛擬機器設計，Dalvik虛擬機器所執行的中介碼並非是Java虛擬機器所執行的Java Bytecode，同時也不直接執行Java的類別檔(Java Class File)，而是執行一種特有的檔案格式，稱為.dex。&lt;br /&gt;&lt;br /&gt;Java的類別檔要先透過一套叫dx的編譯工具轉換成.dex檔後，才能讓Dalvik虛擬機器執行。而Delvik虛擬機器則改用Register Based的方式，變數皆存放於暫存器中，相較之下Delvik虛擬機器的指令就會少一點，速度也就會再加快一點。&lt;br /&gt;&lt;br /&gt;有興趣的讀者，可以參考今年在台灣Google Developer Day 2008中，有關程本中先生所講述的Android：Dalvik VM Internals。網址：&lt;br /&gt;&lt;a href="http://sites.google.com/site/developerdaytaiwan/google-developer-day-2008-taiwan/android-dalvik-vm-internals"&gt;http://sites.google.com/site/developerdaytaiwan/google-developer-day-2008-taiwan/android-dalvik-vm-internals&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;有關Android架構的部份就介紹到這個章節為止，下一個章節將要介紹有關如何下載安裝Android SDK、Eclipse、ADT套件等開發工具。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-7826883865689561196?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/7826883865689561196/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=7826883865689561196' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7826883865689561196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7826883865689561196'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android6-dalvik-virtual-machine.html' title='深入淺出Android程式設計(6)-什麼是Dalvik Virtual Machine?'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6sTixhigSrc/SQu7f1MNZrI/AAAAAAAAAfY/XLYHgTX5iFQ/s72-c/05_DVM.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-7046574919928336932</id><published>2008-10-31T19:09:00.000-07:00</published><updated>2008-10-31T19:11:54.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(5)-Android架構說明(下)</title><content type='html'>在這個章節中，最後要討論就是負責跟硬體溝通的底層核心同時也是最重要的Android Runtime(Android執行環境)及Linux Kernel(Linux核心)部份。&lt;br /&gt;Android Runtime(Android執行環境)及Linux Kernel(Linux核心)，如圖4所示。下述為各層級的描述。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_6sTixhigSrc/SQu6y2mo2FI/AAAAAAAAAfQ/UIlsH5ZiiYA/s1600-h/04_Android_Linux_Kernel.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263505972326357074" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 135px" alt="" src="http://1.bp.blogspot.com/_6sTixhigSrc/SQu6y2mo2FI/AAAAAAAAAfQ/UIlsH5ZiiYA/s320/04_Android_Linux_Kernel.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;圖4&lt;br /&gt;Android Runtime&lt;br /&gt;在Android SDK(軟體開發套件)的Android Runtime分成二個重要的元件來執行系統，雖然Android是用Java來開發、撰寫應用程式，但卻不使用Java Runtime來執行Java程式，而是自行研發Android Runtime來執行程式。&lt;br /&gt;這二個重要元件分別是Core Libraries(核心函式庫)，另一個是Dalvik Virtual Machine(Dalvik 虛擬機器)。&lt;br /&gt;&lt;br /&gt;A. Core Libraries(核心函式庫)&lt;br /&gt;Core Libraries(核心函式庫)裡頭已經包含了絕大多數Java所需要呼用的函式，接著每一個Android應用程式都會以自屬的process(程序)。而且Android不是用一個Dalvik虛擬機器來同時執行多個Android應用程式，而是每個Android應用程式都用一個自屬的Dalvik虛擬機器來執行。&lt;br /&gt;&lt;br /&gt;B.Dalvik Virtual Machine(Dalvik 虛擬機器)&lt;br /&gt;Dalvik Virtual Machine(Dalvik虛擬機器)是一種暫存器型態的虛擬機器。在撰寫開發時就已經設想用最少的記憶體資源來執行，以及前述的「同時可執行多個VM個體」。這樣的設計，讓系統在執行程式可以最佳化的方式來執行，節省更多的資源。有關Dalvik Virtual Machine(Dalvik虛擬機器)，會在下一個章節，做更詳細的說明。&lt;br /&gt;&lt;br /&gt;Linux Kernel(Linux核心)&lt;br /&gt;在Android SDK(軟體開發套件)的作業系統是用Linux，其版本為2.6版。而所提供的核心系統服務，如下所述：&lt;br /&gt;A.安全性(Security)&lt;br /&gt;B.記憶體管理(Memory Management)&lt;br /&gt;C.行程管理(Process Management)&lt;br /&gt;D.網路堆疊(Network Stack)&lt;br /&gt;E.驅動程式模型(Driver Model)包含下述這些常規的驅動程式：&lt;br /&gt;(1) Display Driver&lt;br /&gt;(2) Keypad Driver&lt;br /&gt;(3) Camera Driver&lt;br /&gt;(4) WiFi Driver&lt;br /&gt;(5) Flash Memory Driver&lt;br /&gt;(6) Audio Driver&lt;br /&gt;(7) Binder(IPC) Driver&lt;br /&gt;(8) Power Management&lt;br /&gt;&lt;br /&gt;此系統核心同樣是作為硬體與軟體架構之間的抽象層(Abstraction Layer)。來做為相互溝通的工作。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-7046574919928336932?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/7046574919928336932/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=7046574919928336932' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7046574919928336932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7046574919928336932'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android5-android.html' title='深入淺出Android程式設計(5)-Android架構說明(下)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_6sTixhigSrc/SQu6y2mo2FI/AAAAAAAAAfQ/UIlsH5ZiiYA/s72-c/04_Android_Linux_Kernel.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-1607789620045515842</id><published>2008-10-31T19:05:00.000-07:00</published><updated>2008-10-31T19:12:28.850-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(4)-Android架構說明(中)</title><content type='html'>在這個章節中，承接上一個章節，再來討論Libraries (函式庫)的部份。&lt;br /&gt;&lt;br /&gt;在這個章節中，承接上一個章節，再來討論Libraries (函式庫)的部份。而Libraries (函式庫)的圖形，如圖3所示。下述為各層級的描述。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_6sTixhigSrc/SQu6QE6-WNI/AAAAAAAAAfI/0llm2KMDJ-k/s1600-h/03_Android_Libraries.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263505374874327250" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 77px" alt="" src="http://4.bp.blogspot.com/_6sTixhigSrc/SQu6QE6-WNI/AAAAAAAAAfI/0llm2KMDJ-k/s320/03_Android_Libraries.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;圖3&lt;br /&gt;&lt;br /&gt;Libraries (函式庫)&lt;br /&gt;在Android SDK(軟體開發套件)包含一組系統元件，可以讓開發者呼叫來使用，而這一組系統元件使用的是C/C++的函式庫，開發者可以透過應用程式架構使用這些功能。&lt;br /&gt;而這些核心函式庫列表如下：&lt;br /&gt;&lt;div align="left"&gt;&lt;br /&gt;A. Surface Manager(外觀管理員)：主要的功能是讓開發者可以去存取顯示系統及管理的功能，在「顯示」與「存取操作」間的對應、互動以及實現無接縫的2D/3D多應用程式之間的整合。例如：在2D、2D顯示上的合成、疊合動作。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;B. Open GL ES：主要是依OpenGL ES 1.0規範所定義的3D繪圖引擎。可以將硬體的3D功能做最佳化的處理顯示。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;C. SGL：主要是處理有關顯示2D方面的繪圖引擎。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;D.Media Framework：主要是以PacketVideo公司的OpenCORE為基礎所發展成多媒體函式庫，有支援多種聲音及影像格式。例如：MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;E. Free Type：主要是處理有關顯示點陣圖及向量字形方面的處理。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;F.SSL：是Secure Socket Layer的縮寫，主要是處理有關保護網頁通訊的協定。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;G. SQLite：SQLite也是一套開放性原始碼的關連式資料庫，其特點在於輕量性方面的設計結構，更適合在手機上使用。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;H.Web Kit：是一個的網頁瀏覽器引擎，讓Android發展出專屬的瀏覽器，也可以讓開發者利用這個引擎來做不同的應用。&lt;br /&gt;&lt;br /&gt;I. libc：就是BSD標準系統C函式庫。但是，針對Linux嵌入式裝置進行過最佳化的調整。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-1607789620045515842?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/1607789620045515842/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=1607789620045515842' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1607789620045515842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1607789620045515842'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android4-android.html' title='深入淺出Android程式設計(4)-Android架構說明(中)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6sTixhigSrc/SQu6QE6-WNI/AAAAAAAAAfI/0llm2KMDJ-k/s72-c/03_Android_Libraries.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-937789120796277599</id><published>2008-10-31T18:27:00.000-07:00</published><updated>2008-10-31T19:04:44.465-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(3)-Android架構說明(上)</title><content type='html'>在Android架構，總共是由5個部份來組成。分別是：&lt;br /&gt;(1)Applications(應用程式)&lt;br /&gt;(2)Application Framework(應用程式架構)&lt;br /&gt;(3)Libraries(函式庫)&lt;br /&gt;(4)Android Runtime(Android執行環境)&lt;br /&gt;(5)Linux Kernel(Linux核心)&lt;br /&gt;&lt;br /&gt;在這個章節中，首先，依由上而下的順序來討論Applications(應用程式)及Application Framework(應用程式架構)，後續再討論Libraries(函式庫)、Android Runtime(Android執行環境)及Linux Kernel(Linux核心)。&lt;br /&gt;&lt;br /&gt;Applications(應用程式)及Application Framework(應用程式架構)的圖形，如圖2所示。下述為各層級的描述。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5263503863093153858" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 91px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_6sTixhigSrc/SQu44FGQUEI/AAAAAAAAAe4/OFVHjokb86A/s320/02_Android_Application.JPG" border="0" /&gt;&lt;br /&gt;圖2 &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;br /&gt;Application(應用程式)&lt;br /&gt;在Android SDK(軟體開發套件)所用的手機模擬器及未來實體的手機中，都會有一系列以Java語言撰寫的核心應用程式，包含電子郵件程式、簡訊程式、日曆、地圖、瀏覽器、聯絡人與其它應用程式。讓使用者一開始就可以使用這些基本的功能來操作應用手機。&lt;br /&gt;&lt;br /&gt;Application Framework (應用程式架構)&lt;br /&gt;在Android SDK(軟體開發套件)，也定義了能讓開發者可以完整使用與核心應用程式相同的應用程式標準介面(API)，應用程式架構是為了要簡化元件的重新利用而設計的，應用程式可以發佈功能並為其它應用程式所使用，但是，要受限於應用程式架構的安全限制，使用者也用同樣的機制用來新增、置換元件。&lt;br /&gt;&lt;br /&gt;目前所有的應用程式是由Services(服務)及Systems(系統)來組成，包含有：&lt;br /&gt;A.Views System(建構程式原件)：用來建構一個應用程式的基本原件，包含了在開發系統畫面時，常用的lists、grids、text boxes、buttons控制項，甚至是嵌入式的瀏覽器。有興趣想要看程式控制項的讀者可以參考下述網址：&lt;a href="http://code.google.com/android/reference/view-gallery.html"&gt;http://code.google.com/android/reference/view-gallery.html&lt;/a&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;B.Content Providers(內容提供者)：可以用來讓應用程式可以存取或分享資料給其它應用程式。&lt;br /&gt;C.Resource Manager(資源管理員)：提供各種非程式碼的資源讓應用程式去使用，例如：本地化字串、圖形或排版相關檔案。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;D.Notification Manager(訊息管理員)：提供應用程式在狀態列(Status Bar)的地方顯示應用程式自定的警示訊息(Alert)。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;E.Activity Manager(活動管理員)：管理所有應用程式的生命週期及一般性的回溯導航處理(navigation backstack)。例如：開啟應用程式要用到的資源準備及關閉應用程式時，釋放出記憶體及相關資源等工作。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;F. Window Manager(視窗管理員)：用來管理所有開啟的視窗程式。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;G. Location Manager：用來管理地圖服務的相關功能。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;H. Telephony Manager：用來管理有關使用者撥打與接收電話的相關功能。&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;I. Package Manager：管理所有安裝在Android系統內的程式。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-937789120796277599?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/937789120796277599/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=937789120796277599' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/937789120796277599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/937789120796277599'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android3-android.html' title='深入淺出Android程式設計(3)-Android架構說明(上)'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6sTixhigSrc/SQu44FGQUEI/AAAAAAAAAe4/OFVHjokb86A/s72-c/02_Android_Application.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-7236819329388494800</id><published>2008-10-09T02:11:00.000-07:00</published><updated>2008-10-09T02:14:32.657-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(2)-什麼是Android?</title><content type='html'>&lt;div&gt;首先，讓我們先來了解什麼是Android，Android是一個包含作業系統、中介架構層及應用程式所產生出來的軟體堆疊(Software Stack)架構。如圖1所示。&lt;br /&gt;&lt;br /&gt;由下而上，其核心為嵌入式Linux 2.6作業系統，向上搭配Google為Android開發的Libraries(函式庫)及Android Runtime，再配合Application Framework(應用程式架構)。來開發各種不同的Application(應用程式)。&lt;/div&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5255079803584420242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_6sTixhigSrc/SO3LPR76mZI/AAAAAAAAAK0/mM301VWgDDc/s320/01_Android_Color.JPG" border="0" /&gt;&lt;br /&gt;圖1 &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;    Android所發表的Android SDK(軟體開發套件)，提供必要的API(應用程式開發介面)與開發工具以使用Java語言為主體來開發在Android平台上開發應用軟體。&lt;br /&gt;&lt;br /&gt;目前所提供的功能如下：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;A. 應用程式架構：在應用程式架構內已經具備多種不同的基礎軟體元件(如圖1所示)，在開發應用程式時，就可以直接呼叫這些元件來使用，可以節省在開發應用程式的心力及時間。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;B. Dalvik虛擬機器：在Android平台上所使用虛擬機器，不是標準的Java虛擬機器(Java Virtual Machine)，雖然它是用Java語言來開發，而是使用Google為了要再節省手機上的資源而開發出獨有的Dalvik虛擬機器(Dalvik Virtual Machine)。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;C. 整合瀏覽器：整合瀏覽器是Android內建的瀏覽器，是用WebKit的瀏覽引擎為基礎所開發成的。配合Android手機的功能，可以在瀏覽網頁時，達到更好的效果，例如：局部性的縮放網頁上的資訊、觸控式的操作等效果。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;D. 最佳化的繪圖能力：在程式可以用到的繪圖功能分為2D與3D兩個方面，在2D方面，Android提供了一套特有的函式庫(SGL)，而在3D方面則是使用OpenGL ES 1.0(OpenGL for Embedded Systems)規範的函式庫。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;E. SQLite資料庫：SQLite也是一套開放性原始碼的關連式資料庫，其特點在於輕量性方面的設計結構，更適合在手機上使用。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;F. 多媒體的支援能力：在Android平台上支援多種不同的多媒體格式，例如：MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;G. GSM通話能力：GSM手機的通話能力是屬於手機硬體方面的展現，也是在開發Android應用程式可以強調的特點。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;H. Bluetooth、EDGE、3G及Wi-Fi：這些通訊能力也是屬於手機硬體方面的展現，也是在開發Android應用程式可以強調的特點。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;I. Camera、GPS、電子羅盤(compass)、加速度感測裝備(accelerometer)：這些同樣也是屬於手機硬體方面的展現，也是在開發Android應用程式可以強調的特點。&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;J. 豐富的開發環境：在Android SDK(軟體開發套件)提供相當完善的程式開發環境，其開發環境包括裝置模擬器(Emulator)、除錯工具、程式執行所耗用記憶體、效能等方面的評估功能，另外也有提供可用於Eclipse IDE的外掛程式(Plug-in)介面(ADT套件，後續會有詳細安裝說明)。&lt;br /&gt;&lt;br /&gt;上述為Android目前所提供的功能，目前Android SDK的版本已經到1.0的版本，在後續幾個章節會介紹Android的架構說明以及如何下載安裝Android SDK、Eclipse、ADT套件等開發工具。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-7236819329388494800?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/7236819329388494800/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=7236819329388494800' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7236819329388494800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/7236819329388494800'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android2-android.html' title='深入淺出Android程式設計(2)-什麼是Android?'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6sTixhigSrc/SO3LPR76mZI/AAAAAAAAAK0/mM301VWgDDc/s72-c/01_Android_Color.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8775243836814806446.post-1740001165082397251</id><published>2008-10-09T01:51:00.000-07:00</published><updated>2008-10-09T02:10:45.814-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>深入淺出Android程式設計(1)-前言</title><content type='html'>在去年11月，Google這一家讓人模不透的創新公司，又在市場上引爆了一顆震撼彈，聯合HTC、Motorola、T-Mobile、LG、Marvell、Intel與TI等33家在手機產業具影響力的業者一同組成開放手機聯盟，以發展開放平台的Android為目標。想要從目前成功的搜尋引擎龍頭再進一步進入手機這個比電腦平台更大的市場。&lt;br /&gt;&lt;br /&gt;在發表Android SDK(軟體開發套件)的同時，又為此舉辦了一場獎金高達一千萬美金的比賽，來尋找最有趣、最具創新的Android應用程式。詳細的比賽可以參考下述網址：&lt;a href="http://code.google.com/android/adc.html"&gt;http://code.google.com/android/adc.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;在最近看到iT邦幫忙在進行為期30天的分享知識鐵人賽(請參考網址：&lt;a href="http://ithelp.ithome.com.tw/event/ironmanvote"&gt;http://ithelp.ithome.com.tw/event/ironmanvote&lt;/a&gt;)。在希望能增加自己知識的同時，也能幫別人了解這個有趣平台的刺激下。報名參考這個比賽。在未來的30天中，將以Google目前所提供有關Android SDK文件(請參考網址：&lt;a href="http://code.google.com/android/documentation.html"&gt;http://code.google.com/android/documentation.html&lt;/a&gt; )為基礎上，加上實際操作的詳細步驟。圖文並茂來說明Android這個平台有提供了那些有趣的功能及機制。&lt;br /&gt;&lt;br /&gt;最近，成立了部落格。也會將鐵人賽的文章分享到部落格這邊。也會增加有關Eclipse這個開發平台的介紹。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8775243836814806446-1740001165082397251?l=estyleservice.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estyleservice.blogspot.com/feeds/1740001165082397251/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8775243836814806446&amp;postID=1740001165082397251' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1740001165082397251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8775243836814806446/posts/default/1740001165082397251'/><link rel='alternate' type='text/html' href='http://estyleservice.blogspot.com/2008/10/android1.html' title='深入淺出Android程式設計(1)-前言'/><author><name>lucius</name><uri>http://www.blogger.com/profile/05530924675345415584</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
