MaterialDesign--(1)Google精心準備的Appcompat

weixin_34290000發表於2017-07-17

為什麼要使用 appcompat,因為裡面是 google 精心準備得--解決 android 碎片化開發蛋疼的問題,讓我們的 app 編譯出來在各種高低版本之間、不同的廠商生產的 ROM 之間顯示出來的效果 UI 控制元件等有比較一致的體驗。

怎麼用?

1、引入 appcompat-v7專案,在 gradle檔案裡面新增 compile 'com.android.support:appcompat-v7:25.3.1'的依賴(25.3.1只是其中一個版本),studio 會在建立專案的時候自動新增這個。如果在引用的時候報錯,則一般是由於 SDK、Appcompat-v7、build 版本新舊不相容引起的,調整為合適的版本重新 build 即可。
2、開啟 res/value/styles.xml檔案定義如下主題:

 <!--actionBar欄顏色 不能新增透明通道-->
    <item name="colorPrimary">@color/colorPrimary</item>
    <!--狀態列顏色-->
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <!--editText線條、radioButton按鈕顏色-->
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowTranslucentStatus">true</item>
    <!--actionBar文字顏色-->
    <item name="android:textColorPrimary">#afaf00</item>
    <!--主背景顏色-->
    <item name="android:windowBackground">@color/windowBackground</item>
    <!--虛擬按鈕顏色需要api21-->
    <item name="android:navigationBarColor">@color/navigationBarColor</item>

可能上面每條屬性的文字描述不夠明確,一張圖看懂:

3093005-fac6bf5dfa887085

3、Activity 繼承 AppcompatActivity

MaterialDesign 相容性控制元件及主題

  • 在 Appcompat-v7包裡面有很多為相容而生的控制元件
  • 使用這些控制元件可以做到高低版本和不同的 ROM 之間體驗一致。還可以配合 Appcompat 的主題使用達到體驗一致性

1、相容控制元件

先感受一下API16和 API23的 dialog,撇開顏值不說,你們產品能接受 app 在不同的系統之間對話方塊這麼大的差異麼

3093005-fd205619b63981a6.png
dialog.png

所以在開發當中,dialog 一般用的是 v7包下的相容類android.support.v7.app.AlertDialog,點進原始碼裡面,我們可以看到 AlertDialog 繼承的是AppCompatDialog。

其實 Appcompat-v7包給我們準備了很多很多相容控制元件,具體有哪些,同學們可以點開原始碼自行閱讀。

3093005-0974616651c8dced.png
Appcompat 相容控制元件.png

2、Appcompat 相容主題
Appcompat 包的 res 裡面有很多定義好的主題,有興趣的同學也可以好好研究一下,常用的控制元件都有。

3093005-3df93792eb885234.png
Appcompat 相容 style.png

有話說

做了幾年的 Android 開發,平時也都有學習充電,掘金簡書的技術文章更是從最終的每篇必讀、每個程式碼都會下載下來看一看到現在的看到標題,就大致知道作者想要寫什麼東西,大致是怎樣實現的,然後點進去看一下,如果和自己猜想一樣,就直接略過了。聽起來好像成長了,但是實際開發中,遇到同樣的問題,還是得去翻別人的部落格 copy 程式碼,雖然並不是盲目的copy,但是終究不是自己純手擼出來的。

做了幾年開發,一路上走過來也和不少程式設計師打過交道,他們當中大部分都是 Coder,但也有不少 Developer。而我,也只是一個自命不凡的 Coder。

做為一個自命不凡的 Coder,還是要有點夢想的。這次的夢想就是準備把這兩年學習的零零碎碎知識點重新梳理一遍,整理出自己的知識體系,鞏固基礎。記得有個前輩一直是這樣教導我的:這些都是基礎,你不會?知識一點要成體系,成了體系才能進階;要有自己的思想,別僅僅停留在程式碼實現需求。

說了很多廢話,說說重點。本次規劃的知識體系有:高階 UI、效能優化、資料結構和演算法、移動架構四個模組。在整理的過程中,我會做下筆記並整理分享出來。準備用六個月左右的時間完成這件事,如果中途停更了,歡迎打臉。

最後,有些東西可能被我一筆帶過了,如果給讀者同學造成困惑,可以在下面留言提問,我看到會第一時間回覆的。

相關文章