引言
最近不是太忙,花了一些時間學習android的應用開發。經過兩個星期的學習,學習的同時還寫了很多的demo樣本,可以從基本控制項及基本動畫效果等樣本demo集合大放送,持續更新下載。
從這個星期開始,準備拿新浪微博開放平台做個實踐,開發一個功能簡單的android用戶端,會儘可能的完善功能。
今天的內容
是這個用戶端的主要介面。今天增加的功能。
簡單的樣式和皮膚,只是添加了按鈕。
啟動並執行系統是android2.2.
使用到的技術點包括ListView,自訂ListAdapter,多線程相關的Message,Handler,驗證相關的OAuth,使用者圖片的非同步載入。
新浪微博的驗證使用的是signpost的OAuth組件,沒有使用微博的SDK。
源碼下載:
SinaWeibo2
源碼下載之後,將尾碼改為rar,使用壓縮軟體解壓即可。
Style and Themey樣式和皮膚
通過樣式和皮膚可以美化我們的UI,經過美化的UI會更加吸引使用者,至少讓我們的應用看起來不至於很醜陋(當然了,也需要合理的樣式和皮膚,否則可能會更醜陋)。
樣式和皮膚有下面幾種使用情境:
1 給一個控制項添加獨立的樣式
定義一個樣式view sourceprint?1 <style name="Text">
2 <item name="android:textSize">20sp</item>
3 <item name="android:textColor">#00dd9a</item>
4 </style>
然後在布局檔案的控制項中使用設定樣式view sourceprint?1 <TextView android:text="新浪微博V2" style="@style/Text"
2 android:layout_width="wrap_content" android:layout_height="wrap_content" />
2 給幾個控制項添加同種樣式
定義一個樣式view sourceprint?1 <style name="Text">
2 <item name="android:textSize">20sp</item>
3 <item name="android:textColor">#00dd9a</item>
4 </style>
在幾個控制項中都是用設定樣式view sourceprint?1 <TextView android:text="新浪微博V2" style="@style/Text"
2 android:layout_width="wrap_content" android:layout_height="wrap_content" />
3 <TextView android:text="歡迎使用" style="@style/Text"
4 android:layout_width="wrap_content" android:layout_height="wrap_content" />
3 修改相同種類的控制項的樣式,例如所有的button的樣式,想實現這個效果,有兩個方法。
方法1:定義一個樣式,然後在每個button中使用style屬性應用這個樣式。view sourceprint?01 <style name="Button" parent="@android:style/Widget.Button">
02 <item name="android:gravity">center_vertical|center_horizontal</item>
03 <item name="android:textColor">#FFFFFFFF</item>
04 <item name="android:shadowColor">#FF000000</item>
05 <item name="android:shadowDx">0</item>
06 <item name="android:shadowDy">-1</item>
07 <item name="android:shadowRadius">0.2</item>
08 <item name="android:textSize">16dip</item>
09 <item name="android:textStyle">bold</item>
10 <item name="android:background">@drawable/com_sinaweibo2_list_button_selector</item>
11
12
13
14 </style>
view sourceprint?1 <Button android:text="Add" android:id="@+id/com_sinaweibo2_list_btnAdd"
2 style="@style/Button"
3 android:layout_toRightOf="@id/com_sinaweibo2_list_btnRefresh"
4 android:layout_height="wrap_content" android:layout_width="wrap_content" />
方法2:定義為皮膚,然後再manifest檔案中應用在application,或者是activity上。view sourceprint?01 <style name="Button" parent="@android:style/Widget.Button">
02 <item name="android:gravity">center_vertical|center_horizontal</item>
03 <item name="android:textColor">#FFFFFFFF</item>
04 <item name="android:shadowColor">#FF000000</item>
05 <item name="android:shadowDx">0</item>
06 <item name="android:shadowDy">-1</item>
07 <item name="android:shadowRadius">0.2</item>
08 <item name="android:textSize">16dip</item>
09 <item name="android:textStyle">bold</item>
10 <item name="android:background">@drawable/com_sinaweibo2_list_button_selector</item>
11
12
13
14 </style>
15 <style name="CustomButton" parent="@android:style/Theme.NoTitleBar">
16 <item name="android:buttonStyle">@style/Button</item>
17 </style>
view sourceprint?1 <application android:icon="@drawable/icon" android:label="@string/app_name"
2 android:theme="@style/CustomButton">
顯然使用第二種的好處是修改樣式,甚至是樣式的名字,只需要修改style的定義就可以了,不用在使用style的地方修改任何地方。第二種方法中樣式的應用範圍是一個activity或者是整個application,如果想做某幾個button的控制就只能用第一種方法了。
需要注意的地方
如果只是給文字用的話,直接定義一個一個樣式就可以了。
如果是給控制項用的話,就需要繼承一個基類的樣式,然後進行自己的修改,要不然控制項會只剩下你定義的樣式,其他的都沒有了,甚至一個button都可能不能點擊了,就是因為樣式定義的不完整。為了確保定義完整,你需要繼承系統的控制項樣式,然後進行自己的修改。
<item name="android:buttonStyle">@style/Button</item> 中的buttonStyle代表這個樣式或者皮膚應用在所有的button上面。每一種控制項都有這幾的style,例如listViewStyle、textViewStyle等等。可以在系統內建的皮膚中尋找。另外樣式和皮膚的使用和系統內建的樣式也是不錯的學習資源。
更多功能
接下來可能會支援的功能:
操作功能表,刪除,添加關注,取消追蹤,查看某個使用者的微博等等。
發表博文支援圖片。
UI的美化,效能的最佳化。
總結
學習的過程中看過兩本書,Pro.Android.2.pdf和Professional.Android.2.Application.Development.(Wrox,.2010,.0470565527).pdf,都是很不錯的入門書籍。書我沒有全看完,看完大部分吧,邊看邊寫demo。
同時每天泡論壇http://www.eoeandroid.com/forum.php,eoe的開發人員門戶。回答問題,解決問題,提出問題,發文章,總之就是鍛煉自己,強迫自己鍛煉基礎和思考。
在論壇上,有很多的中文pdf教程,但是發現大多都是翻譯android developer center的Dev Guide和Resources中的內容。所以覺得,如果英文不是很差,建議直接閱讀上面的兩個板塊,同時練習其中的樣本,保證兩個星期,你會有很大的進步。