Android Material Design簡單使用

吐槽

作為一個 Android developer澈魄,沒有什么比拿著 UI 設(shè)計的一堆 iOS 風(fēng)格的設(shè)計 來做需求更惡心的了痪署,基本所有空間都要照著 iOS 來畫一遍典奉,Material Design 辣么酷炫 為什么 UI在設(shè)計的階段不設(shè)計成 Material Design風(fēng)格呢问潭?

今天試了幾個比較Support包中比較典型的Material Design控件情组,后期會在學(xué)習(xí)下Material Design的設(shè)計思想和理念,希望能拉著 UI 做一次Material Design 分享益涧,改變我們 APP 的 iOS 風(fēng)格啊。

最終效果如下


Android Design Support 庫依賴

在build.gradle中加入support 包

1?compile'com.android.support:appcompat-v7:23.1.1'

Design Support Library 中包含了 Support v4 和 AppCompat v7

Floating Action Button


我們希望FloatingActionButton懸浮在頁面的右下方驯鳖,所以我們父節(jié)點(diǎn)應(yīng)使用Flowlayout

和普通 button 一樣可以設(shè)置其點(diǎn)擊事件

Android:elevation屬性為 view 在空閑狀態(tài)下的陰影深度闲询, 需要在 api 21以上才能使用,使用 support 包可以使用app:elevation來表示空閑狀態(tài)高度浅辙,app:pressedTanslationZ為按下狀態(tài)的高度

按鈕的顏色一般為主題的強(qiáng)調(diào)色扭弧,也可以使用 ”app:backgroundTint“修改

Snackbar

和 Toast 很像,snackbar 可以展示一段簡單的信息记舆,不同點(diǎn)是它的展示更像是整體 UI 的一部分鸽捻,不是想 toast 一樣是浮在 UI 上的,并且可以有簡單的交互

在點(diǎn)擊 floatingActionButton時顯示Snackbar


但是可以看到泽腮,Snackbar 遮擋住了我們的 view御蒲,這時候需要一個CoordinatorLayout來協(xié)調(diào) view 布局

CoordinatorLayout

將父布局中的framelaout換成CoordinatorLayout,其他不變诊赊,再來看看效果


Toolbar

Toolbar 比傳統(tǒng)的 ActionBar 更靈活厚满,功能也更多,我們可以看到現(xiàn)在市面上很多的 APP 已經(jīng)用 Toolbar 替代了 actionbar碧磅,在 Desgin Support 的組件中碘箍,很多設(shè)計都可以和 Toolbar 協(xié)同工作,而不是和 actionbar鲸郊,所以還是建議使用新的 toolbar 替換以前的 actionbar

CoordinatorLayout中的 view 必須是能一同協(xié)作的 view丰榴,就像 Snackbar 一樣,但是 toolbar 并不是這樣能協(xié)同作戰(zhàn)的 view秆撮,所以我們需要用一個可以協(xié)同作戰(zhàn)的 view 來包裹上Toolbar四濒,這就是AppBarLayout

現(xiàn)在我們的布局文件結(jié)構(gòu)是這樣的

注意

根據(jù)官方的谷歌文檔,AppBarLayout目前必須是第一個嵌套在CoordinatorLayout里面的子view

在 toolbar 中加入屬性,app:layout_collapseMode=”pin”峻黍,使得 Toolbar 中的按鈕能固定在頂部

在布局中加入內(nèi)容

在布局中嘗試加入一些按鈕


我們定義三個按鍵复隆,卻被 toolbar 遮住了一個,原因是LinearLayout并沒有被設(shè)計成在CoordinatorLayout協(xié)同工作的模式姆涩,為了使他們能在CoordinatorLayout協(xié)同工作挽拂,我們需要在LinearLayout加上一條屬性,來告訴它的滾動屬性()

TabLayout

根據(jù)官網(wǎng)的知道骨饿,TabLayout通常應(yīng)該是放在頂部亏栈,(iOS 的 tab 好像基本在底部),

他應(yīng)該在陰影部分上面宏赘,所以應(yīng)該放在AppBarlayout中

java 中設(shè)置這些 tab 屬性


背景會設(shè)置為主題色绒北,導(dǎo)航線是強(qiáng)調(diào)色。但是字還是黑色的察署,因?yàn)槲覀儧]有為 tablayout 定義主題闷游,

通常 tablayout 會和ViewPager一起使用 ,這時候使用

public void setupWithViewPager (ViewPager viewPager)

一張圖看的比較清晰

內(nèi)容滾動時贴汪,AppBarLayout隱藏

當(dāng)滑檔內(nèi)容時脐往,為了騰出跟多的空間展示內(nèi)容可以將AppBarLayout隱藏

1.用 scrollView 包裹 LinearLayout,記得加上app:layout_behavior屬性

scrollView 也不能喝 CoordinatorLayout 協(xié)同工作,同上面一樣扳埂,要用別的 view 包裹或者直接使用 NestedSrollView替換scrollView


如果希望 tablayout 也消失业簿,只需要和 tablayout 加上相同的屬性就行了

滑動內(nèi)容 和 AppBarLayout是如何進(jìn)行聯(lián)系的?

我們需要定義AppBarLayout與滾動視圖之間的聯(lián)系阳懂。在RecyclerView或者任意支持嵌套滾動的view比如NestedScrollView上添加app:layout_behavior梅尤。support library包含了一個特殊的字符串資源@string/appbar_scrolling_view_behavior,它和AppBarLayout.ScrollingViewBehavior相匹配岩调,用來通知AppBarLayout 這個特殊的view何時發(fā)生了滾動事件巷燥,這個behavior需要設(shè)置在觸發(fā)事件(滾動)的view之上

當(dāng)CoordinatorLayout發(fā)現(xiàn)scrollView中定義了這個屬性,它會搜索自己所包含的其他view号枕,看看是否有view與這個behavior相關(guān)聯(lián)矾湃。AppBarLayout.ScrollingViewBehavior描述了RecyclerView與AppBarLayout之間的依賴關(guān)系。RecyclerView的任意滾動事件都將觸發(fā)AppBarLayout或者AppBarLayout里面view的改變堕澄。

AppBarLayout里面定義的view只要設(shè)置了app:layout_scrollFlags屬性邀跃,就可以在RecyclerView滾動事件發(fā)生的時候被觸發(fā):

app:layout_scrollFlags屬性里面必須至少啟用scroll這個flag,這樣這個view才會滾動出屏幕蛙紫,否則它將一直固定在頂部拍屑。可以使用的其他flag有:

enterAlways: 一旦向上滾動這個view就可見坑傅。

enterAlwaysCollapsed: 顧名思義僵驰,這個flag定義的是何時進(jìn)入(已經(jīng)消失之后何時再次顯示)。假設(shè)你定義了一個最小高度(minHeight)同時enterAlways也定義了,那么view將在到達(dá)這個最小高度的時候開始顯示蒜茴,并且從這個時候開始慢慢展開星爪,當(dāng)滾動到頂部的時候展開完。

exitUntilCollapsed: 同樣顧名思義粉私,這個flag時定義何時退出顽腾,當(dāng)你定義了一個minHeight,這個view將在滾動到達(dá)這個最小高度的時候消失诺核。

記住抄肖,要把帶有scroll flag的view放在前面,這樣收回的view才能讓正常退出窖杀,而固定的view繼續(xù)留在頂部漓摩。

可折疊的 Toolbar

用 CollapsingToolbarLayout 包裹 Toolbar,但仍然在 AppBarLayout 中

刪除 Toolbar 中的 layout_scrollFlags

為 CollapsingToolbarLayout 聲明 layout_scrollFlags入客,并且將 layout_scrollFlags 設(shè)置成 scroll|exitUntilCollapsed

注意 CollapsingToolbarLayout 的高度是android:layout_height="match_parent"

CollapsingToolbarLayout在展開和收縮時管毙,標(biāo)題的文字會自動過度的,可以通過 app:expandedTitleMargin 等來改變文字位置

為 appBar 添加背景圖片


由于 CollapsingToolbarLayout 是繼承 Framelayout 的桌硫,所以我們可以直接添加一個 ImageView 作為背景圖片

此時雖然背景已經(jīng)出來了夭咬,但是藍(lán)色的導(dǎo)航條依舊存在,需要在 toolbar 去掉這條屬性

android:background="?attr/colorPrimary"


給 Imageview 加上視差模式會更帥

app:layout_collapseMode="parallax"

app:layout_collapseParallaxMultiplier="0.5"

也可以在最后恢復(fù)成主題色


Navigation Drawer

在AppBarLayout布局下鞍泉,增DrawerLayout

DrawerLayout中分兩部分組成,一部分是content 就是我們需要的主布局內(nèi)容肮帐,另一部分是我們的抽屜的布局咖驮,NavigationView中有頂部頭,和標(biāo)簽

創(chuàng)建菜單训枢。

菜單元素是放在group標(biāo)簽之下托修,同時聲明每次只能有一個item被選中

為了防止頁面被遮蓋,同樣要使得DrawerLayout協(xié)調(diào)恒界。加入app:layout_behavior="@string/appbar_scrolling_view_behavior"屬性

java初始化


SwipeRefreshLayout

在NestedScrollView外在包裹一層SwipeRefreshLayout睦刃,

初始化監(jiān)聽器


失敗是什么?沒有什么十酣,只是更走近成功一步涩拙;成功是什么?就是走過了所有通向失敗的路耸采,只剩下一條路兴泥,那就是成功的路。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末虾宇,一起剝皮案震驚了整個濱河市搓彻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖旭贬,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怔接,死亡現(xiàn)場離奇詭異,居然都是意外死亡稀轨,警方通過查閱死者的電腦和手機(jī)扼脐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來靶端,“玉大人谎势,你說我怎么就攤上這事⊙蠲” “怎么了脏榆?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長台谍。 經(jīng)常有香客問我须喂,道長,這世上最難降的妖魔是什么趁蕊? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任坞生,我火速辦了婚禮,結(jié)果婚禮上掷伙,老公的妹妹穿的比我還像新娘是己。我一直安慰自己,他們只是感情好任柜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布卒废。 她就那樣靜靜地躺著,像睡著了一般宙地。 火紅的嫁衣襯著肌膚如雪摔认。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天宅粥,我揣著相機(jī)與錄音参袱,去河邊找鬼。 笑死秽梅,一個胖子當(dāng)著我的面吹牛抹蚀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播企垦,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼况鸣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了竹观?” 一聲冷哼從身側(cè)響起镐捧,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤潜索,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后懂酱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竹习,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年列牺,在試婚紗的時候發(fā)現(xiàn)自己被綠了整陌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞎领,死狀恐怖泌辫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情九默,我是刑警寧澤震放,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站驼修,受9級特大地震影響殿遂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乙各,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一墨礁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耳峦,春花似錦恩静、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冠句,卻和暖如春轻掩,著一層夾襖步出監(jiān)牢的瞬間幸乒,已是汗流浹背懦底。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罕扎,地道東北人聚唐。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像腔召,于是被迫代替她去往敵國和親杆查。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,116評論 25 707
  • CoordinatorLayout與滾動的處理 CoordinatorLayout實(shí)現(xiàn)了多種Material De...
    cxm11閱讀 6,583評論 1 15
  • 參考:從零開始 Code Review讓 Code Review成為一種習(xí)慣
    hanjun閱讀 205評論 0 1
  • 文/鹿小妮 妮妮崖蜜,你一定是上帝派來的! 就在昨天客峭,我剪了一個美不過三秒的發(fā)型豫领,我和理發(fā)師的故事稍后再寫,總之那個發(fā)...
    鹿小妮在南非閱讀 589評論 4 6
  • 經(jīng)三秋飽雨淅瀝 我踏著斷柯殘枝 那等在山中的模樣應(yīng)如初時的草木翁郁 踏上征途 尋你舔琅,彎彎曲曲是我的方向 逢你等恐,朝來...
    玩偶和木偶的悄悄話閱讀 277評論 0 1