引言
最近不是太忙,花瞭一些時間學習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中的內容。所以覺得,如果英文不是很差,建議直接閱讀上面的兩個板塊,同時練習其中的示例,保證兩個星期,你會有很大的進步。