Material?Design折疊工具欄

Material Design里折疊工具欄

最近 在學(xué)習(xí)Material Design,今天先學(xué)習(xí)了一波CollapsingToolbarLayout瑟幕,現(xiàn)在這種類(lèi)型的工具欄是App的主流了。

       <?xml version="1.0" encoding="utf-8"?>
           <android.support.design.widget.CoordinatorLayout
           xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:app="http://schemas.android.com/apk/res-auto"
          android:orientation="vertical"
         android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.design.widget.AppBarLayout
       android:id="@+id/appbar_layout"
       android:layout_width="match_parent"
       android:layout_height="wrap_content">
       <android.support.design.widget.CollapsingToolbarLayout
           android:id="@+id/collapse_layout"
           android:layout_width="match_parent"
           android:layout_height="250dp"
           app:contentScrim="@color/colorPrimary"
           app:layout_scrollFlags="scroll|exitUntilCollapsed"
           >

            <ImageView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                android:src="@drawable/meizhi"
                app:layout_collapseMode="parallax"
                />

           <android.support.v7.widget.Toolbar
               android:id="@+id/appbar_layout_toolbar"
               android:layout_width="match_parent"
               android:layout_height="?attr/actionBarSize"
               app:title="9999999"
               app:titleTextColor="@color/white"
               app:navigationIcon="@mipmap/navigation_back_white"
               app:layout_collapseMode="pin"
               />
       </android.support.design.widget.CollapsingToolbarLayout>

   </android.support.design.widget.AppBarLayout>

<android.support.v4.widget.NestedScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="18dp"
        android:text="@string/large_text"/>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>

activity代碼:

    final Toolbar toolbar = (Toolbar) findViewById(R.id.appbar_layout_toolbar);
    StatusBarUtils.setTranslucentImageHeader(this,0,toolbar);
    toolbar.setTitleTextColor(Color.TRANSPARENT);
    toolbar.inflateMenu(R.menu.menu_search);
    AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar_layout);

    final CollapsingToolbarLayout collapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapse_layout);
    collapsingToolbarLayout.setTitle("");
    collapsingToolbarLayout.setCollapsedTitleTextColor(getResources().getColor(R.color.white));
    collapsingToolbarLayout.setExpandedTitleColor(getResources().getColor(R.color.white));
    collapsingToolbarLayout.setExpandedTitleColor(Color.TRANSPARENT);

    appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
        @Override
        public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                                 //這邊來(lái)判斷滑動(dòng)距離础嫡;
                        if(Math.abs(verticalOffset) >= appBarLayout.getTotalScrollRange()){
                toolbar.setTitleTextColor(getResources().getColor(R.color.white));
                toolbar.setTitle("Uustrong");
            }else{
                collapsingToolbarLayout.setTitle("");
            }
        }
    });

AppBarLayout是一種支持響應(yīng)滾動(dòng)手勢(shì)的app bar布局(比如工具欄滾出或滾入屏幕)挂谍,CollapsingToolbarLayout則是專(zhuān)門(mén)用來(lái)實(shí)現(xiàn)子布局內(nèi)不同元素響應(yīng)滾動(dòng)細(xì)節(jié)的布局。

與AppBarLayout組合的滾動(dòng)布局(Recyclerview繁堡、NestedScrollView等)需要設(shè)置app:layout_behavior="@string/appbar_scrolling_view_behavior"(上面代碼中NestedScrollView控件所設(shè)置的)沈善。沒(méi)有設(shè)置的話乡数,AppBarLayout將不會(huì)響應(yīng)滾動(dòng)布局的滾動(dòng)事件。

CollapsingToolbarLayout和ScrollView一起使用會(huì)有滑動(dòng)bug闻牡,注意要使用NestedScrollView來(lái)替代ScrollView瞳脓。

AppBarLayout的子布局有5種滾動(dòng)標(biāo)識(shí)(就是上面代碼CollapsingToolbarLayout中配置的app:layout_scrollFlags屬性):

1.scroll:將此布局和滾動(dòng)時(shí)間關(guān)聯(lián)。這個(gè)標(biāo)識(shí)要設(shè)置在其他標(biāo)識(shí)之前澈侠,沒(méi)有這個(gè)標(biāo)識(shí)則布局不會(huì)滾動(dòng)且其他標(biāo)識(shí)設(shè)置無(wú)效劫侧。

2.enterAlways:任何向下滾動(dòng)操作都會(huì)使此布局可見(jiàn)。這個(gè)標(biāo)識(shí)通常被稱(chēng)為“快速返回”模式哨啃。

3.enterAlwaysCollapsed:假設(shè)你定義了一個(gè)最小高度(minHeight)同時(shí)enterAlways也定義了烧栋,那么view將在到達(dá)這個(gè)最小高度的時(shí)候開(kāi)始顯示,并且從這個(gè)時(shí)候開(kāi)始慢慢展開(kāi)拳球,當(dāng)滾動(dòng)到頂部的時(shí)候展開(kāi)完审姓。

4.exitUntilCollapsed:當(dāng)你定義了一個(gè)minHeight,此布局將在滾動(dòng)到達(dá)這個(gè)最小高度的時(shí)候折疊祝峻。

5.snap:當(dāng)一個(gè)滾動(dòng)事件結(jié)束魔吐,如果視圖是部分可見(jiàn)的,那么它將被滾動(dòng)到收縮或展開(kāi)莱找。例如酬姆,如果視圖只有底部25%顯示,它將折疊奥溺。相反辞色,如果它的底部75%可見(jiàn),那么它將完全展開(kāi)浮定。

CollapsingToolbarLayout可以通過(guò)app:contentScrim設(shè)置折疊時(shí)工具欄布局的顏色相满,通過(guò)app:statusBarScrim設(shè)置折疊時(shí)狀態(tài)欄的顏色。默認(rèn)contentScrim是colorPrimary的色值桦卒,statusBarScrim是colorPrimaryDark的色值立美。這個(gè)后面會(huì)用到。

CollapsingToolbarLayout的子布局有3種折疊模式(Toolbar中設(shè)置的app:layout_collapseMode)

1.off:這個(gè)是默認(rèn)屬性方灾,布局將正常顯示建蹄,沒(méi)有折疊的行為。

2.pin:CollapsingToolbarLayout折疊后迎吵,此布局將固定在頂部躲撰。

3.parallax:CollapsingToolbarLayout折疊時(shí),此布局也會(huì)有視差折疊效果击费。

當(dāng)CollapsingToolbarLayout的子布局設(shè)置了parallax模式時(shí)拢蛋,我們還可以通過(guò)app:layout_collapseParallaxMultiplier設(shè)置視差滾動(dòng)因子,值為:0~1蔫巩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谆棱,一起剝皮案震驚了整個(gè)濱河市快压,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌垃瞧,老刑警劉巖蔫劣,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異个从,居然都是意外死亡脉幢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)嗦锐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嫌松,“玉大人,你說(shuō)我怎么就攤上這事奕污∥幔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵碳默,是天一觀的道長(zhǎng)贾陷。 經(jīng)常有香客問(wèn)我,道長(zhǎng)嘱根,這世上最難降的妖魔是什么髓废? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮儿子,結(jié)果婚禮上瓦哎,老公的妹妹穿的比我還像新娘。我一直安慰自己柔逼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布割岛。 她就那樣靜靜地躺著愉适,像睡著了一般。 火紅的嫁衣襯著肌膚如雪癣漆。 梳的紋絲不亂的頭發(fā)上维咸,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音惠爽,去河邊找鬼癌蓖。 笑死,一個(gè)胖子當(dāng)著我的面吹牛婚肆,可吹牛的內(nèi)容都是我干的租副。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼较性,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼用僧!你這毒婦竟也來(lái)了结胀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤责循,失蹤者是張志新(化名)和其女友劉穎糟港,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體院仿,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡秸抚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歹垫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剥汤。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖县钥,靈堂內(nèi)的尸體忽然破棺而出秀姐,到底是詐尸還是另有隱情,我是刑警寧澤若贮,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布省有,位于F島的核電站,受9級(jí)特大地震影響谴麦,放射性物質(zhì)發(fā)生泄漏蠢沿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一匾效、第九天 我趴在偏房一處隱蔽的房頂上張望舷蟀。 院中可真熱鬧,春花似錦面哼、人聲如沸野宜。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匈子。三九已至,卻和暖如春闯袒,著一層夾襖步出監(jiān)牢的瞬間虎敦,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工政敢, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留其徙,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓喷户,卻偏偏與公主長(zhǎng)得像唾那,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子摩骨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354