今天就跟大家聊聊有關(guān)CoordinatorLayout如何在android中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
城廂網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。
定義的布局文件如下:
代碼就很簡(jiǎn)單了,如下:
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); }
就是通過(guò)findViewById獲取FloatingActionButton,設(shè)置點(diǎn)擊事件,在onclick中讓Snackbar顯示一下即可。那么,效果圖就像下面展示的莪一樣:
接下來(lái)看一個(gè)高級(jí)點(diǎn)的效果,就是標(biāo)題欄,也就是ToolBar的擴(kuò)展與收縮效果。要想要ToolBar響應(yīng)滾動(dòng)事件,這里我們需要用到一個(gè)控件:AppBarLayout,這個(gè)控件必須作為CoordinatorLayout的直接子View,才會(huì)響應(yīng)滾動(dòng)事件。首先因?yàn)槲覀兊腡ooBar是需要響應(yīng)滾動(dòng)的視圖,所以需要為其配置一個(gè)屬性:layout_scrollFlags。然后呢,我們需要定義一下AppBarLayout與滾動(dòng)視圖(如RecyclerView,NestedScrollView等可以支持嵌套滾動(dòng)的控件)supportlibrary包含了一個(gè)特殊的字符串資源@string/appbar_scrolling_view_behavior,它和AppBarLayout.ScrollingViewBehavior相匹配,用來(lái)通知AppBarLayout 這個(gè)特殊的view何時(shí)發(fā)生了滾動(dòng)事件,這個(gè)behavior需要設(shè)置在觸發(fā)事件(滾動(dòng))的view之上。最終layout布局如下:
主布局(activity_main.xml):
appbar_main.xml布局:
content_main.xml布局:
效果圖如下:
通過(guò)效果顯示,當(dāng)視圖在滾動(dòng)的時(shí)候,ToolBar滾出了屏幕,為內(nèi)容區(qū)域留出了更大空間。其中控制ToolBar是否可以滾出屏幕的屬性是由app:layout_scrollFlags="scroll|enterAlways"。來(lái)說(shuō)一下這個(gè)屬性,要想滾出屏幕layout_scrollFlags必須設(shè)置scrll這個(gè)flag。剩下的幾個(gè)flag解釋如下:
enterAlways:只要滾動(dòng)視圖向下滾動(dòng),view就會(huì)顯示出來(lái)。
enterAlwaysCollapsed:顧名思義,這個(gè)flag定義的是何時(shí)進(jìn)入(已經(jīng)消失之后何時(shí)再次顯示)。假設(shè)你定義了一個(gè)最小高度(minHeight)同時(shí)enterAlways也定義了,那么view將在到達(dá)這個(gè)最小高度的時(shí)候開(kāi)始顯示,并且從這個(gè)時(shí)候開(kāi)始慢慢展開(kāi),當(dāng)滾動(dòng)到頂部的時(shí)候展開(kāi)完。
exitUntilCollapsed: 同樣顧名思義,這個(gè)flag時(shí)定義何時(shí)退出,當(dāng)你定義了一個(gè)minHeight,這個(gè)view將在滾動(dòng)到達(dá)這個(gè)最小高度的時(shí)候消失。
下面來(lái)通過(guò)flag為exitUntilCollapsed時(shí),來(lái)實(shí)現(xiàn)Toolbar的折疊顯示的效果。這個(gè)時(shí)候呢,我們把Toolbar直接放在CollapsingToolbarLayout下,先修改appbar_main.xml布局如下:
先appbar_main.xml的布局如下:
實(shí)現(xiàn)視覺(jué)差的屬性主要來(lái)自于app:layout_collapseMode="parallax",這個(gè)flag代表的是視差模式,即在折疊的時(shí)候會(huì)有視差折疊的效果,而“pin”,固定模式,就是在折疊的最后固定在最頂端。
上面說(shuō)了那么多,其實(shí)這些效果的實(shí)現(xiàn)都離不開(kāi)一個(gè)東西,那就是Behavior。CoordinatorLayout的工作原理是搜索定義了CoordinatorLayout Behavior的子view,不管是通過(guò)在xml中使用app:layout_behavior標(biāo)簽還是通過(guò)在代碼中對(duì)view類(lèi)使用@DefaultBehavior修飾符來(lái)添加注解。當(dāng)滾動(dòng)發(fā)生的時(shí)候,CoordinatorLayout會(huì)嘗試觸發(fā)那些聲明了依賴(lài)的子view。要自己定義CoordinatorLayoutBehavior,你需要實(shí)現(xiàn)layoutDependsOn() 和onDependentViewChanged()兩個(gè)方法。
看完上述內(nèi)容,你們對(duì)CoordinatorLayout如何在android中使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。