CoordinatorLayout、AppBarLayout本讥、Toolbar使用詳解

又到周末了珊泳,小編在這里祝大家周末愉快哦,android開(kāi)發(fā)的童鞋們我們交流學(xué)習(xí)機(jī)會(huì)又來(lái)啦拷沸,今天跟大家交流一下我們常用的標(biāo)題欄Toolbar的使用色查,并且配合一些Material Design風(fēng)格的其他控件實(shí)現(xiàn)一些簡(jiǎn)單的標(biāo)題動(dòng)畫(huà)效果,Toolbar撞芍、AppBarLayout的出現(xiàn)雖然很久了秧了,但是在我們項(xiàng)目開(kāi)發(fā)中還是很多地方都用到了,所以簡(jiǎn)單記錄一下自己的理解序无,話不多說(shuō)验毡,我們進(jìn)入正題咯......

先把我們會(huì)用到的幾個(gè)實(shí)現(xiàn)標(biāo)題欄效果的控件列舉一下(請(qǐng)看標(biāo)題 ^ _ ^),我們那么我們先從CoordinatorLayout講起帝嗡,晶通,,

1)什么是CoordinatorLayout哟玷?? 如何使用

CoordinatorLayout組件是AndroidMaterial Design風(fēng)格重要控件狮辽,通過(guò)協(xié)調(diào)調(diào)度子布局的形式實(shí)現(xiàn)觸摸影響布局的形式產(chǎn)生動(dòng)畫(huà)效果。CoordinatorLayout通過(guò)設(shè)置子View的Behaviors來(lái)調(diào)度子View巢寡,實(shí)現(xiàn)各控件之間的聯(lián)動(dòng)喉脖,達(dá)到動(dòng)畫(huà)效果。

系統(tǒng)提供了AppBarLayout.Behavior,AppBarLayout.ScrollingViewBehavior,FloatingActionButton.Behavior,SwipeDismissBehavior 等抑月。首先我們需要在項(xiàng)目的build.gradle中引入Support Design Library ,具體如下:

compile 'com.android.support:design:26.1.0'

如果design有更新的話要進(jìn)行響應(yīng)的更新动看,目前最新的是26.1.0

那么我們?cè)诓季种幸隒oordinatorLayout的控件,還有一點(diǎn)需要注意:

public class CoordinatorLayout extends ViewGroup implements NestedScrollingParent2 {

CoordinatorLayout直接繼承自ViewGroup是增強(qiáng)版的FramLayout,運(yùn)行一下結(jié)果是這樣的爪幻,

FloatActionButton被從底部彈出的SnackActionBar頂上去菱皆,而不是遮住FloatActionBar须误,這里FloatActionBar一般都會(huì)使用上androido:src屬性加上圖片,這里注意了我們默認(rèn)是帶有ActionBar效果仇轻,這里我們?nèi)サ鬉ctionBar京痢,

android:theme="@style/Theme.AppCompat.Light.NoActionBar">

或者直接在代碼中加上supportRequestWindowFeature(Window.FEATURE_NO_TITLE)//Activity繼承自AppCompatActivity

這里我們需要注意 supportRequestWindowFeature()需要放到setContentView()之前,不然會(huì)報(bào)錯(cuò)篷店,另外如果我們的Activity我們可以調(diào)用

requestWindowFeature(Window.FEATURE_NO_TITLE),那么現(xiàn)在我們運(yùn)行的效果就是不帶ActionBar的祭椰。

當(dāng)我們向上滑動(dòng)內(nèi)容的時(shí)候,標(biāo)題會(huì)跟著滾出屏幕進(jìn)行隱藏疲陕,本應(yīng)該跟大家錄制一個(gè)gif動(dòng)圖效果但是我的studio里面目前有點(diǎn)問(wèn)題方淤,總是錄制失敗,后面我會(huì)抽出事件看看這方面的問(wèn)題蹄殃,

android:id="@+id/tb_toolbar"

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:layout_scrollFlags="scroll|enterAlways">

2)ToolBar簡(jiǎn)單使用

上面已經(jīng)介紹了部分ToolBar使用携茂,這里主要介紹toobar隱藏效果實(shí)現(xiàn)的重要屬性,其他用法跟ActionBar大同小異诅岩,我們簡(jiǎn)單的看一下這個(gè)toolbar讳苦,重點(diǎn)就在layout_scrollFlags這個(gè)屬性上面,屬性具體作用看下面:

scroll: 所有想滾動(dòng)出屏幕的view都需要設(shè)置這個(gè)flag吩谦, 沒(méi)有設(shè)置這個(gè)flag的view將被固定在屏幕頂部鸳谜。例如,TabLayout 沒(méi)有設(shè)置這個(gè)值式廷,將會(huì)停留在屏幕頂部咐扭。

enterAlways: 設(shè)置這個(gè)flag時(shí),向下的滾動(dòng)都會(huì)導(dǎo)致該view變?yōu)榭梢?jiàn)滑废,啟用快速“返回模式”草描。

enterAlwaysCollapsed: 當(dāng)你的視圖已經(jīng)設(shè)置minHeight屬性又使用此標(biāo)志時(shí),你的視圖只能已最小高度進(jìn)入策严,只有當(dāng)滾動(dòng)視圖到達(dá)頂部時(shí)才擴(kuò)大到完整高度穗慕。

exitUntilCollapsed: 滾動(dòng)退出屏幕,最后折疊在頂端妻导。

3) AppBarLayout嵌套CollapsingToolbarLayout

android:id="@+id/collapsing_toolbar"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

app:contentScrim="?attr/colorPrimary" ‘

app:expandedTitleMarginEnd="64dp"

app:expandedTitleMarginStart="48dp"

app:layout_scrollFlags="scroll|exitUntilCollapsed">

android:id="@+id/backdrop"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:fitsSystemWindows="true"

android:scaleType="centerCrop"

android:src="@drawable/liu"

app:layout_collapseMode="parallax" />

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="?attr/actionBarSize"

app:layout_collapseMode="pin"

app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

android:id="@+id/sv_scrollview"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_margin="20dp"

app:layout_behavior="@string/appbar_scrolling_view_behavior">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/content"

android:textColor="#ffffff"

android:textSize="16sp" />

android:id="@+id/fab_floatactionbutton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="16dp"

android:clickable="true"

android:src="@drawable/right"

app:layout_anchor="@id/appbarlayout"

app:layout_anchorGravity="bottom|right|end" />


圖片是可以跟隨著手指滑動(dòng)逛绵,遺憾的是沒(méi)能給大家上一個(gè)gif動(dòng)圖,在這里感到抱歉倔韭,大家可以在手機(jī)里面跑起來(lái)看看术浪,大家可以把下賣弄NestScrollView做的更好看,這里就不對(duì)這些UI做詳細(xì)說(shuō)明寿酌,主要為了跟大家看看這些效果怎么實(shí)現(xiàn)胰苏,那么下面我們來(lái)看一下具體屬性:

CollapsingToolbarLayout可實(shí)現(xiàn)Toolbar的折疊效果。CollapsingToolbarLayout的子視圖類似與LinearLayout垂直方向排放醇疼,

CollapsingToolbarLayout 提供以下屬性和方法是用:

1. Collapsing title:ToolBar的標(biāo)題硕并,當(dāng)CollapsingToolbarLayout全屏沒(méi)有折疊時(shí)法焰,title顯示的是大字體,在折疊的過(guò)程中倔毙,title不斷變小到一定大小的效果埃仪。你可以調(diào)用setTitle(CharSequence)方法設(shè)置title。

2. Content scrim:ToolBar被折疊到頂部固定時(shí)候的背景陕赃,你可以調(diào)用setContentScrim(Drawable)方法改變背景或者 在屬性中使用 app:contentScrim=”?attr/colorPrimary”來(lái)改變背景卵蛉。

3. Status bar scrim:狀態(tài)欄的背景,調(diào)用方法setStatusBarScrim(Drawable)么库。

4. Parallax scrolling children:CollapsingToolbarLayout滑動(dòng)時(shí)傻丝,子視圖的視覺(jué)差,可以通過(guò)屬性app:layout_collapseParallaxMultiplier=”0.6”改變诉儒。值de的范圍[0.0,1.0]葡缰,值越大視察越大。

5. CollapseMode :子視圖的折疊模式允睹,在子視圖設(shè)置运准,有兩種“pin”:固定模式幌氮,在折疊的時(shí)候最后固定在頂端缭受;“parallax”:視差模式,在折疊的時(shí)候會(huì)有個(gè)視差折疊的效果该互。我們可以在布局中使用屬性app:layout_collapseMode=”parallax”來(lái)改變米者。

CoordinatorLayout

還提供了一個(gè) layout_anchor 的屬性,連同 layout_anchorGravity一起宇智,可以用來(lái)放置與其他視圖關(guān)聯(lián)在一起的懸浮視圖(如FloatingActionButton)蔓搞。本例中使用FloatingActionButton。android:id="@+id/fab_floatactionbutton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_margin="16dp"

android:clickable="true"

android:src="@drawable/right"

app:layout_anchor="@id/appbarlayout"

app:layout_anchorGravity="bottom|right|end" />

在這里大家需要注意三點(diǎn):

使用CollapsingToolbarLayout實(shí)現(xiàn)折疊效果随橘,需要注意3點(diǎn)

1. AppBarLayout的高度固定

2. CollapsingToolbarLayout的子視圖設(shè)置layout_collapseMode屬性

3. 關(guān)聯(lián)懸浮視圖設(shè)置app:layout_anchor喂分,app:layout_anchorGravity屬性

今天就到這兒了,感謝小伙伴么你的關(guān)注机蔗,其實(shí)還有很多效果沒(méi)有實(shí)現(xiàn)蒲祈,本打算做的更詳細(xì)一點(diǎn),后來(lái)發(fā)現(xiàn)時(shí)間有點(diǎn)不夠用萝嘁,所以匆忙把一些見(jiàn)簡(jiǎn)單效果實(shí)現(xiàn)了一下梆掸,我們的CoordinatorLayout、AppBatLayout還可以與DrawLayout,ViewPage等使用牙言,目前很多App在這塊都有應(yīng)用酸钦,所以大家以后看到類似效果不妨思考一下或者更深入了解這幾個(gè)控件,周末愉快咱枉,周末愉快卑硫,周末愉快M搅怠!拔恰!

GitHub地址:https://github.com/Scus5761/CoordinatorLayout-AppBarLayout-ToolBar

如有疏漏因谎,歡迎大家指正并提出意見(jiàn)哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末颜懊,一起剝皮案震驚了整個(gè)濱河市财岔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌河爹,老刑警劉巖匠璧,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異咸这,居然都是意外死亡夷恍,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門媳维,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)酿雪,“玉大人,你說(shuō)我怎么就攤上這事侄刽≈咐瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵州丹,是天一觀的道長(zhǎng)醋安。 經(jīng)常有香客問(wèn)我,道長(zhǎng)墓毒,這世上最難降的妖魔是什么吓揪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮所计,結(jié)果婚禮上柠辞,老公的妹妹穿的比我還像新娘。我一直安慰自己主胧,他們只是感情好叭首,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著讥裤,像睡著了一般放棒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上己英,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天间螟,我揣著相機(jī)與錄音,去河邊找鬼。 笑死厢破,一個(gè)胖子當(dāng)著我的面吹牛荣瑟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播摩泪,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼笆焰,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了见坑?” 一聲冷哼從身側(cè)響起嚷掠,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎荞驴,沒(méi)想到半個(gè)月后不皆,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡熊楼,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年霹娄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲫骗。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡犬耻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出执泰,到底是詐尸還是另有隱情枕磁,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布坦胶,位于F島的核電站透典,受9級(jí)特大地震影響晴楔,放射性物質(zhì)發(fā)生泄漏顿苇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一税弃、第九天 我趴在偏房一處隱蔽的房頂上張望纪岁。 院中可真熱鬧,春花似錦则果、人聲如沸幔翰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)遗增。三九已至,卻和暖如春款青,著一層夾襖步出監(jiān)牢的瞬間做修,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饰及,地道東北人蔗坯。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像燎含,于是被迫代替她去往敵國(guó)和親宾濒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353