首發:我的博客,更新&糾錯&回覆html
項目源碼在這裏,由於github上傳速度太差,傳到了oschina的git託管上。java
1.項目結構及技術點jquery
主頁面
使用FragmentTabHost,5個標籤各對應一個fragment,一個fragment便是一個具體的標籤頁。如「博客」標籤對應的標籤頁爲BlogFragment。android
博客標籤頁
技術點:ListView的使用
技術點:經過Intent啓動一個Activity
技術點:使用httpClient和JSON包訪問rest api
博客顯示頁
技術點:使用webview展現網頁,網頁的html是編程指定的字符串git
收藏標籤頁
收藏顯示頁
技術點:使用webview展現頁面,指定網頁的url來加載程序員
書單標籤頁github
便籤標籤頁
技術點:本地數據庫的查改操做
技術點:ListView的自定義adapter
技術點:相對佈局
便籤表單頁
技術點:本地數據庫的增刪操做
技術點:系統服務的調用web
管理標籤頁
技術點:登陸頁使用本地配置文件保存用戶名密碼
技術點:登陸頁的表格佈局
收藏管理列表頁
技術點:訪問rest api的刪除操做
收藏管理表單頁
技術點:訪問rest api的增改操做ajax
2.關於技術點的體會數據庫
佈局文件是與調用者無關的一個單純的xml文件,表明一個控件樹,相似寫在<script type="text/plain">標籤中的html片斷,只是一段靜態文本,被動地等待被調用。調用者會根據這段xml文本中聲明的樹狀結構,在程序中生成控件對象樹,控件對象樹纔是與用戶打交道的。
佈局方式最經常使用的是線性佈局,能夠跨屏幕分辨率良好顯示,縱向線性佈局嵌套橫向嵌套佈局,則很像網頁的div佈局,先從上到下,再從左到右。表格佈局很像網頁中的table佈局,確保同列元素的對齊。相對佈局對應的就是網頁中脫離文檔流的元素,與之不一樣的是它能夠要求控件相對一個兄弟節點。
FragmentTabHost實現的標籤頁效果做爲主頁面,其各個標籤頁都是Fragment,在標籤頁中進行操做顯示的新頁面,則是Activity。新頁面操做完後在代碼中關閉,或者在新頁面時用戶點擊後退,都會讓該新頁面出棧,返回到上一個頁面,若是關閉的頁面是表單頁,其上一個頁面是列表頁,則列表頁須要在從新顯示的時候刷新數據,使用Activity生命週期中的方法。
使用ListView顯示列表頁,可使用原始的Adapter,每行顯示一段字符串,若是要顯示更豐富的信息,須要自定義Adapter和自定義行內佈局樣式,Adapter使用實體類名做爲佈局參數,在響應函數裏方便地使用下標得到實體作想作的一切。
使用WebView顯示網頁,能夠本身指定網頁內容字符串,或者指定一個url讓WebView直接加載,前者就像xxDiv.innerHTML="xx",後者則像xxIFrame.src="xx"。相比之下,前者比後者更細膩一點,能夠編程決定字符串的內容。固然,能想到的最細膩的方式,是使用Jsoup庫控制dom節點,最後產生html字符串給WebView加載。
本地數據,除了最暴力的文件讀寫外,本地配置文件和本地數據庫是可用的選擇。前者適合存儲一些相似全局變量的數據,可是是持久化的(非持久化的存在public static就行了,例如登陸時的token,也能夠存在全局上下文裏);後者適合存儲有類和實體性質的數據,由於能夠寫SQL,操做方式無限相似jdbc。
遠程數據,rest api的訪問採用自帶的httpClient和JSON庫能夠方便實現,本身封裝了一個簡單的工具類,參數很是相似jquery.post等方法,接受路徑、參數、成功失敗兩個callback函數,其中失敗指的是服務器返回4xx或5xx狀態碼,而不是程序中拋出Exception。
關於線程和回調,java web程序員可能不太習慣,在ajax成功後修改頁面顯示是天然而然的,可是在安卓中,耗時操做如訪問api的請求必須放到新線程進行,而新線程不容許修改UI,必須在主線程聲明一個Handler,新線程調用該Handler的sendMessage,能夠把這個Handler看作回調函數。
3.自學感想和下週任務
在java web的自學時,使用servlet和jdbc實現了增刪改查的那天,對本身是個質變,這意味着以後的任何進展,都是在這天的基礎上的優化和封裝。由於這天的成績意味着三點,一是具有了對UI的控制力,二是打通了與數據庫之間的通道,三是掌握了重要的原生API。(最重要的是,有了控制感和信心)有了這個底子,往後的各類類庫和框架,只會愈來愈簡單。
因此這周的進展是比較滿意的,雖然頁面依然很醜,數據鏈接方法還沒有重構到最優,不少參數和方法還不瞭解。但達到了戰略目的:以原生API實現增刪改查的功能,以及對最經常使用的技術進行摸底。目前項目中沒有引入任何第三方庫,下個星期的任務,就是把玩最流行的最好的第三方庫,經過使用之和閱讀源碼,來反過來加強對基礎API的瞭解。我java web的學習就是這麼過來的。
下個星期的週末,會在github上有個思而勤工做室app2.0版的源碼,其中包含對一些好用的第三方庫的使用的代碼。
上個圖?嗯,歡迎點擊戰國那篇——
apk安裝包在這裏下載。