Android 5.0/5.1開發問題專貼


注:非5.0特定的開發問題,可以在這個帖子里查:Android開發問題匯總

1、官方提供的例子android-support-v7-appcompat編譯時提示android:actionModeShareDrawable屬性不存在

官方例子里這個工程的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的版本不是最新,請通過sdk manager將support包全部升級到最新版(見下圖,圖片來自這里。國內用戶如果無法升級,可修改hosts文件將dl-ssl.google.com靜態解析到可訪問的ip地址,ip地址可參考這個帖子,在超級ping里獲取到)。

2、parseSDKContent failed問題

升級sdk到5.0以后,原來的Eclipse經常彈出parseSDKContent錯誤對話框,甚至有時會提示AndroidManifest file missing。

解決方法是刪除.android目錄(參考鏈接,在windows里這個目錄是C:\Documents and Settings\YOUR_USER_NAME\.android或C:\Users\YOUR_USER_NAME\.android),不過這樣會同時刪除掉debug.keystore文件。也有人說不需要刪除整個.android目錄,更新DDMS就可以了(是指更新ADT?),但我沒有試過。

3、谷歌開源的Material Design圖標

可以從GitHub上下載,鏈接在此。另外,materialdesignicons.comandroidicons.com這兩個網站也提供了一些不錯的material design圖標下載。

其他開源圖標庫:阿里巴巴提供的iconfont.cn,圖標社區NounProject

在線LowPoly生成器:Trianglify

4、PreferenceActivity不顯示actionbar

參考這個帖子,目前support包不支持PreferenceActivity(沒有PreferenceActionbarActivity這樣的類),所以解決方法要么是改用PreferenceFragment,要么使用第三方的補丁包(Fragment的方案),另一個補丁包(Activity的方案,但有缺陷——getPreferencesXmlId()只接受一個preference.xml文件)。

5、Dialog Theme的actionbar背景顏色顯示不全

如下圖所示,當使用Theme.AppCompat.Light.Dialog時發現actionbar背景色只顯示出一半。根據這個帖子的討論,可能是AppCompat的目前版本還沒有做好。

6、使用appcompat里RecyclerView和CardView時的問題

GitHub上的這個開源項目可以幫助解決一些問題,例如添加divider、點擊事件等等,但還遠遠不夠。

CardView的多狀態背景色問題,暫時沒有解決,參考鏈接

下拉刷新:可使用android原生的SwipeRefreshLayout解決;

上拉翻頁:方案1)仍使用SwipeRefreshLayout; 方案2)自己監聽事件實現Endless效果;

HeaderView:RecyclerView沒有像ListView那樣提供addHeaderView()方法,要實現類似效果,有兩種方法:1)將第一個item作為header,使用android-parallax-recyclerview這個庫; 2)讓第一個item完全透明,下層顯示一個同高的view作為header,使用ASOV這個庫。

7、實現Material Design(簡稱MD)的方方面面

MD是一系列UI特性的組合,阿里巴巴團隊的這個帖子介紹得清晰易懂,但要在我們的應用里逐一實現這些特性就不那么容易了,特別是要兼容Android 4.x甚至2.x的時候。Google官方AppCompat v21在這方面只提供了有限的支持,例如ActionBar和側滑菜單,而像FAB(Fixed Action Button)等等則沒有包含在內。

其實在GitHub上已經有不少第三方的實現,值得一提的是,這個名為MaterialDesignCenter的項目把大量相關項目匯總在了一起供開發者參考,值得一看。以下列出我認為值得使用的第三方實現:

FAB: FloatingActionButton

對話框: material-dialogs

各類UI控件: MaterialDesignLibrary

另外幾個匯集了android上各類交互效果的項目Interactive-animationawesome-android-uiandroid-open-project(300+項目,不僅限於MD),同樣值得參考。

8、使用SlidingTabLayout替代Actionbar的tab導航

v7包的Actionbar對象里,與navigation有關的方法(例如setNavigationMode)都不建議使用了,應使用googleio2014提供的SlidingTabLayout實現類似功能。

參考鏈接1參考鏈接2

9、Android 5.1將AlarmManager的setInterval()最小值限制為1分鍾

這個比較坑,畢竟有一些應用依賴AlarmManager機制進行更新,當設備升級到android 5.1后就會出現問題。由於開發文檔里並沒有提到,所以具體情況見googlecode上的討論。討論鏈接需翻牆,google主要回復如下:

“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實現定時任務,與AlarmManager的區別見 參考鏈接

10、使用Android Support Design開發包實現Material Design

Google在2015 I/O大會推出了Android Support Design開發包,方便開發者實現多種常用的MD效果。以下幾個有用鏈接:

INTRODUCTION TO COORDINATOR LAYOUT ON ANDROID

(譯)掌握 Coordinator Layout 

高逼格UI-ASD(Android Support Design)

NestedScrollView

CoordinatorLayout與滾動的處理

Android Design Support Library使用詳解

(未完待續)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM