安卓AppBarLayout和Toolbar和CollapsingToolbarLayout详解及设置图片透明状态栏

来源:互联网 发布:opengl es shader编程 编辑:程序博客网 时间:2024/05/22 18:56

1.Toolbar

1>Toobar主要是用来替换ActionBar的,可以隐藏ToolBar,在style.xml的AppTheme中加入

<item name="windowActionBar">false</item><item name="windowNoTitle">true</item>2>ToolBar的布局文件
 <android.support.v7.widget.Toolbar        android:id="@+id/toolbar"        android:layout_width="match_parent"        android:background="?attr/colorPrimary"        android:layout_height="?android:attr/actionBarSize"  />

3>ToolBar的java文件相关设置
 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);        toolbar.setTitle("这里是Title");        toolbar.setSubtitle("这里是子标题");        toolbar.setLogo(R.drawable.icon);         setSupportActionBar(toolbar);
4>关于ToolBar  hongyang大神有篇博客写的挺好的《 Android 5.x Theme 与 ToolBar 实战 》可以去参考一下。


5>ToolBar和ActionBar感觉差不多,为什么要代替ActionBar呢?

正如你所看的这样,Toolbar根本就不够看的,一点都不复杂。接下来我们继续学习在Toolbar上面再套一层父View,让Toolbar更有互动性。


2.AppBarLayout


1>关于AppBarLayout

AppBarLayout继承自LinearLayout,布局方向为垂直方向。所以你可以把它当成垂直布局的LinearLayout来使用。AppBarLayout是在LinearLayou上加了一些材料设计的概念,它可以让你定制当某个可滚动View的滚动手势发生变化时,其内部的子View实现何种动作。

解释:某个可滚动View假设为ScrollView

也就是说ScrollView发生滚动时,你可以定制你的“顶部栏”应该执行哪些动作(如跟着一起滚动、保持不动等等)。那某个可移动的View到底是哪个可移动的View呢?这是由你自己指定的

2>AppBarLayout子View的属性设置


内部的子View通过在布局中加app:layout_scrollFlags设置执行的动作

1) scroll:值设为scroll的View会跟随滚动事件一起发生移动。

2) enterAlways:值设为enterAlways的View,当ScrollView往下滚动时,该View会直接往下滚动。而不用考虑ScrollView是否在滚动。

3) exitUntilCollapsed:值设为exitUntilCollapsed的View,当这个View要往上逐渐“消逝”时,会一直往上滑动,直到剩下的的高度达到它的最小高度后,再响应ScrollView的内部滑动事件。

4) enterAlwaysCollapsed:是enterAlways的附加选项,一般跟enterAlways一起使用,它是指,View在往下“出现”的时候,首先是enterAlways效果,当View的高度达到最小高度时,View就暂时不去往下滚动,直到ScrollView滑动到顶部不再滑动时,View再继续往下滑动,直到滑到View的顶部结束。


3> 将AppBarLayout与ScrollView结合使用

Android帮我们写好啦,我们直接用就是了,这个ScrollView就是NestedScrollView

把NestedScrollView放入到我们的layout文件里面就可以啦

 <android.support.v4.widget.NestedScrollView        android:layout_width="match_parent"        android:layout_height="wrap_content"        app:layout_behavior="@string/appbar_scrolling_view_behavior">       <!--将你的内容放在这里-->    </android.support.v4.widget.NestedScrollView>

3 CollapsingToolbarLayout

CollapsingToolbarLayout是用来对Toolbar进行再次包装的ViewGroup

主要是用于实现折叠(其实就是看起来像伸缩~)的App Bar效果

它需要放在AppBarLayout布局里面,并且作为AppBarLayout的直接子View

1>CollapsingToolbarLayout主要包括几个功能


(1) 折叠Title(Collapsing title):当布局内容全部显示出来时,title是最大的,但是随着View逐步移出屏幕顶部,title变得越来越小。你可以通过调用setTitle函数来设置title。

(2)内容纱布(Content scrim):根据滚动的位置是否到达一个阀值,来决定是否对View“盖上纱布”。可以通过setContentScrim(Drawable)来设置纱布的图片.

(3)状态栏纱布(Status bar scrim):根据滚动位置是否到达一个阀值决定是否对状态栏“盖上纱布”,你可以通过setStatusBarScrim(Drawable)来设置纱布图片,但是只能在LOLLIPOP设备上面有作用。

(4)视差滚动子View(Parallax scrolling children):子View可以选择在当前的布局当时是否以“视差”的方式来跟随滚动。(PS:其实就是让这个View的滚动的速度比其他正常滚动的View速度稍微慢一点)。将布局参数app:layout_collapseMode设为parallax

(5)将子View位置固定(Pinned position children):子View可以选择是否在全局空间上固定位置,这对于Toolbar来说非常有用,因为当布局在移动时,可以将Toolbar固定位置而不受移动的影响。 将app:layout_collapseMode设为pin


2>CollapsingToolbarLayout使用ImageView实现透明状态栏

如何实现?其实很简单,只需要给CollapsingToolbarLayout里面的背景图片(ImageView)设置个属性就可以了Android:fitsSystemWindows="true"




阅读全文
0 0