天天看點

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裡擷取到)。

Android 5.0/5.1開發問題專貼

2、parseSDKContent failed問題

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

Android 5.0/5.1開發問題專貼

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

3、谷歌開源的Material Design圖示

Android 5.0/5.1開發問題專貼

可以從GitHub上下載下傳,連結在此。另外,materialdesignicons.com和androidicons.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的目前版本還沒有做好。

Android 5.0/5.1開發問題專貼

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-animation、awesome-android-ui、android-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上的讨論。讨論連結需FQ,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使用詳解

(未完待續)

如果覺得本文内容有幫助:試試我開發的Android應用

應用計時

折扣君

推薦+1

(需登入)

繼續閱讀