Android 5.0/5.1開發(fā)問題專貼
注:非5.0特定的開發(fā)問題,可以在這個(gè)帖子里查:Android開發(fā)問題匯總。
1、官方提供的例子android-support-v7-appcompat編譯時(shí)提示android:actionModeShareDrawable屬性不存在
官方例子里這個(gè)工程的target是19,需要改為21才能正確編譯,否則提示“error: Error: No resource found that matches the given name: attr 'android:actionModeShareDrawable'.”。具體方法是修改project.properties文件,將target=19改為target=21,然后clean此工程或重啟eclipse即可。參考鏈接
若仍然無法編譯,可能是appcompat的版本不是最新,請(qǐng)通過sdk manager將support包全部升級(jí)到最新版(見下圖,圖片來自這里。國(guó)內(nèi)用戶如果無法升級(jí),可修改hosts文件將dl-ssl.google.com靜態(tài)解析到可訪問的ip地址,ip地址可參考這個(gè)帖子,在超級(jí)ping里獲取到)。

2、parseSDKContent failed問題
升級(jí)sdk到5.0以后,原來的Eclipse經(jīng)常彈出parseSDKContent錯(cuò)誤對(duì)話框,甚至有時(shí)會(huì)提示AndroidManifest file missing。

解決方法是刪除.android目錄(參考鏈接,在windows里這個(gè)目錄是C:\Documents and Settings\YOUR_USER_NAME\.android或C:\Users\YOUR_USER_NAME\.android),不過這樣會(huì)同時(shí)刪除掉debug.keystore文件。也有人說不需要?jiǎng)h除整個(gè).android目錄,更新DDMS就可以了(是指更新ADT?),但我沒有試過。
3、谷歌開源的Material Design圖標(biāo)

可以從GitHub上下載,鏈接在此。另外,materialdesignicons.com和androidicons.com這兩個(gè)網(wǎng)站也提供了一些不錯(cuò)的material design圖標(biāo)下載。
其他開源圖標(biāo)庫:阿里巴巴提供的iconfont.cn,圖標(biāo)社區(qū)NounProject
在線LowPoly生成器:Trianglify
4、PreferenceActivity不顯示actionbar
參考這個(gè)帖子,目前support包不支持PreferenceActivity(沒有PreferenceActionbarActivity這樣的類),所以解決方法要么是改用PreferenceFragment,要么使用第三方的補(bǔ)丁包(Fragment的方案),另一個(gè)補(bǔ)丁包(Activity的方案,但有缺陷——getPreferencesXmlId()只接受一個(gè)preference.xml文件)。
5、Dialog Theme的actionbar背景顏色顯示不全
如下圖所示,當(dāng)使用Theme.AppCompat.Light.Dialog時(shí)發(fā)現(xiàn)actionbar背景色只顯示出一半。根據(jù)這個(gè)帖子的討論,可能是AppCompat的目前版本還沒有做好。

6、使用appcompat里RecyclerView和CardView時(shí)的問題
GitHub上的這個(gè)開源項(xiàng)目可以幫助解決一些問題,例如添加divider、點(diǎn)擊事件等等,但還遠(yuǎn)遠(yuǎn)不夠。
CardView的多狀態(tài)背景色問題,暫時(shí)沒有解決,參考鏈接;
下拉刷新:可使用android原生的SwipeRefreshLayout解決;
上拉翻頁:方案1)仍使用SwipeRefreshLayout; 方案2)自己監(jiān)聽事件實(shí)現(xiàn)Endless效果;
HeaderView:RecyclerView沒有像ListView那樣提供addHeaderView()方法,要實(shí)現(xiàn)類似效果,有兩種方法:1)將第一個(gè)item作為header,使用android-parallax-recyclerview這個(gè)庫; 2)讓第一個(gè)item完全透明,下層顯示一個(gè)同高的view作為header,使用ASOV這個(gè)庫。
7、實(shí)現(xiàn)Material Design(簡(jiǎn)稱MD)的方方面面
MD是一系列UI特性的組合,阿里巴巴團(tuán)隊(duì)的這個(gè)帖子介紹得清晰易懂,但要在我們的應(yīng)用里逐一實(shí)現(xiàn)這些特性就不那么容易了,特別是要兼容Android 4.x甚至2.x的時(shí)候。Google官方AppCompat v21在這方面只提供了有限的支持,例如ActionBar和側(cè)滑菜單,而像FAB(Fixed Action Button)等等則沒有包含在內(nèi)。
其實(shí)在GitHub上已經(jīng)有不少第三方的實(shí)現(xiàn),值得一提的是,這個(gè)名為MaterialDesignCenter的項(xiàng)目把大量相關(guān)項(xiàng)目匯總在了一起供開發(fā)者參考,值得一看。以下列出我認(rèn)為值得使用的第三方實(shí)現(xiàn):
FAB: FloatingActionButton
對(duì)話框: material-dialogs
各類UI控件: MaterialDesignLibrary
另外幾個(gè)匯集了android上各類交互效果的項(xiàng)目Interactive-animation、awesome-android-ui、android-open-project(300+項(xiàng)目,不僅限于MD),同樣值得參考。
8、使用SlidingTabLayout替代Actionbar的tab導(dǎo)航
v7包的Actionbar對(duì)象里,與navigation有關(guān)的方法(例如setNavigationMode)都不建議使用了,應(yīng)使用googleio2014提供的SlidingTabLayout實(shí)現(xiàn)類似功能。
9、Android 5.1將AlarmManager的setInterval()最小值限制為1分鐘
這個(gè)比較坑,畢竟有一些應(yīng)用依賴AlarmManager機(jī)制進(jìn)行更新,當(dāng)設(shè)備升級(jí)到android 5.1后就會(huì)出現(xiàn)問題。由于開發(fā)文檔里并沒有提到,所以具體情況見googlecode上的討論。討論鏈接需FQ,google主要回復(fù)如下:
“If you are trying to run more often than every 5 seconds, alarms are the wrong way to go about it. Waking up the device that often is extremely bad for battery life. If you have live UI that needs to be updated continually, use a wakelock and then schedule your activity on a handler. This is actually *more* battery efficient than setting an alarm every second.”
替代方法是在Service里使用ScheduledExecutorService實(shí)現(xiàn)定時(shí)任務(wù),與AlarmManager的區(qū)別見 參考鏈接
10、使用Android Support Design開發(fā)包實(shí)現(xiàn)Material Design
Google在2015 I/O大會(huì)推出了Android Support Design開發(fā)包,方便開發(fā)者實(shí)現(xiàn)多種常用的MD效果。以下幾個(gè)有用鏈接:
INTRODUCTION TO COORDINATOR LAYOUT ON ANDROID
高逼格UI-ASD(Android Support Design)
Android Design Support Library使用詳解
(未完待續(xù))

浙公網(wǎng)安備 33010602011771號(hào)