如何进行网站关键词优化,建筑工人招聘平台,网站模板及源码,WordPress同步自媒体一、CoordinatorLayout有什么作用 CoordinatorLayout作为“super-powered FrameLayout”基本实现两个功能#xff1a; 1、作为顶层布局 2、调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。CoordinatorLayout通过… 一、CoordinatorLayout有什么作用 CoordinatorLayout作为“super-powered FrameLayout”基本实现两个功能 1、作为顶层布局 2、调度协调子布局 CoordinatorLayout使用新的思路通过协调调度子布局的形式实现触摸影响布局的形式产生动画效果。CoordinatorLayout通过设置子View的 Behaviors来调度子View。系统Support V7提供了AppBarLayout.Behavior, AppBarLayout.ScrollingViewBehavior, FloatingActionButton.Behavior, SwipeDismissBehaviorV extends View 等。使用CoordinatorLayout需要在Gradle加入Support Design Library compile com.android.support:design:22.2.1 二、CoordinatorLayout与FloatingActionButton 定义布局文件 ?xml version1.0 encodingutf-8?
android.support.design.widget.CoordinatorLayoutxmlns:androidhttp://schemas.android.com/apk/res/android xmlns:apphttp://schemas.android.com/apk/res-auto android:layout_widthmatch_parent android:layout_heightmatch_parent android.support.design.widget.FloatingActionButton android:idid/fab android:layout_widthwrap_content android:layout_heightwrap_content android:layout_gravityend|bottom android:layout_margin16dp android:srcdrawable/ic_done / /android.support.design.widget.CoordinatorLayout 1CoordinatorLayout作为“super-powered FrameLayout”设置子视图的Android:layout_gravity属性控制位置。 Activity: public class MainActivity extends AppCompatActivity { Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() { Override public void onClick(View view) { Snackbar.make(view,FAB,Snackbar.LENGTH_LONG) .setAction(cancel, new View.OnClickListener() { Override public void onClick(View v) { //这里的单击事件代表点击消除Action后的响应事件 } }) .show(); } }); } } 2效果 FloatingActionButton是最简单的使用CoordinatorLayout的例子FloatingActionButton默认使用FloatingActionButton.Behavior。三、CoordinatorLayout与AppBarLayout 3.1 AppBarLayout嵌套TabLayout 布局文件代码
android.support.design.widget.CoordinatorLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-auto android:idid/main_content android:layout_widthmatch_parent android:layout_heightmatch_parent android.support.design.widget.AppBarLayout android:idid/appbar android:layout_widthmatch_parent android:layout_heightwrap_content android:themestyle/ThemeOverlay.AppCompat.Dark.ActionBar android.support.v7.widget.Toolbar android:idid/toolbar android:layout_widthmatch_parent android:layout_height?attr/actionBarSize android:background?attr/colorPrimary app:popupThemestyle/ThemeOverlay.AppCompat.Light app:layout_scrollFlagsscroll|enterAlways / android.support.design.widget.TabLayout android:idid/tabs android:layout_widthmatch_parent android:layout_heightwrap_content / /android.support.design.widget.AppBarLayout android.support.v4.view.ViewPager android:idid/viewpager android:layout_widthmatch_parent android:layout_heightmatch_parent app:layout_behaviorstring/appbar_scrolling_view_behavior / android.support.design.widget.FloatingActionButton android:idid/fab android:layout_widthwrap_content android:layout_heightwrap_content android:layout_gravityend|bottom android:layout_margindimen/fab_margin android:srcdrawable/ic_done / /android.support.design.widget.CoordinatorLayout 效果 效果显示视图滚动时Toolbar会隐藏这个效果是Android Support Library里面,新增的CoordinatorLayout, AppBarLayout实现的。通过AppBarLayout的子视图的属性控制。观察AppBarLayout的子布局Toobar有app:layout_scrollFlags属性这就是控制滑动时视图效果的属性。app:layout_scrollFlags有四个值scroll: 所有想滚动出屏幕的view都需要设置这个flag 没有设置这个flag的view将被固定在屏幕顶部。例如TabLayout 没有设置这个值将会停留在屏幕顶部。enterAlways: 设置这个flag时向下的滚动都会导致该view变为可见启用快速“返回模式”。enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时你的视图只能已最小高度进入只有当滚动视图到达顶部时才扩大到完整高度。exitUntilCollapsed: 滚动退出屏幕最后折叠在顶端。为了ToolBar可以滚动CoordinatorLayout里面,放一个带有可滚动的View.如上的例子,放的是ViewPager,而ViewPager里面是放了RecylerView的,即是可以滚动的View。CoordinatorLayout包含的子视图中带有滚动属性的View需要设置app:layout_behavior属性。例如示例中Viewpager设置了此属性。 app:layout_behaviorstring/appbar_scrolling_view_behavior 1 为了使得Toolbar有滑动效果必须做到如下三点: 1. CoordinatorLayout作为布局的父布局容器。 2. 给需要滑动的组件设置 app:layout_scrollFlags”scroll|enterAlways” 属性。 3. 给滑动的组件设置app:layout_behavior属性 3.2 AppBarLayout嵌套CollapsingToolbarLayout ?xml version1.0 encodingutf-8?
android.support.design.widget.CoordinatorLayout xmlns:androidhttp://schemas.android.com/apk/res/android xmlns:apphttp://schemas.android.com/apk/res-auto android:idid/main_content android:layout_widthmatch_parent android:layout_heightmatch_parent android:fitsSystemWindowstrue android.support.design.widget.AppBarLayout android:idid/appbar android:layout_widthmatch_parent android:layout_height256dp android:themestyle/ThemeOverlay.AppCompat.Dark.ActionBar android:fitsSystemWindowstrue android.support.design.widget.CollapsingToolbarLayout android:idid/collapsing_toolbar android:layout_widthmatch_parent android:layout_heightmatch_parent app:layout_scrollFlagsscroll|exitUntilCollapsed android:fitsSystemWindowstrue app:contentScrim?attr/colorPrimary app:expandedTitleMarginStart48dp app:expandedTitleMarginEnd64dp ImageView android:idid/backdrop android:layout_widthmatch_parent android:layout_heightmatch_parent android:scaleTypecenterCrop android:fitsSystemWindowstrue android:srcdrawable/header app:layout_collapseModeparallax / android.support.v7.widget.Toolbar android:idid/toolbar android:layout_widthmatch_parent android:layout_height?attr/actionBarSize app:popupThemestyle/ThemeOverlay.AppCompat.Light app:layout_collapseModepin / /android.support.design.widget.CollapsingToolbarLayout /android.support.design.widget.AppBarLayout android.support.v4.widget.NestedScrollView android:layout_widthmatch_parent android:layout_heightmatch_parent app:layout_behaviorstring/appbar_scrolling_view_behavior LinearLayout android:layout_widthmatch_parent android:layout_heightmatch_parent android:orientationvertical android:paddingTop24dp android.support.v7.widget.CardView android:layout_widthmatch_parent android:layout_heightwrap_content android:layout_margin16dp LinearLayout stylestyle/Widget.CardContent android:layout_widthmatch_parent android:layout_heightwrap_content TextView android:layout_widthmatch_parent android:layout_heightwrap_content android:textCardView android:textAppearancestyle/TextAppearance.AppCompat.Title / TextView android:layout_widthmatch_parent android:layout_heightwrap_content android:textstring/card_string / /LinearLayout /android.support.v7.widget.CardView …… /LinearLayout /android.support.v4.widget.NestedScrollView android.support.design.widget.FloatingActionButton android:layout_heightwrap_content android:layout_widthwrap_content app:layout_anchorid/appbar app:layout_anchorGravitybottom|right|end android:srcdrawable/ic_done android:layout_margindimen/fab_margin android:clickabletrue/ /android.support.design.widget.CoordinatorLayout 效果 这种效果在详情页面用的较多展示个性化内容图像有强烈的吸引力。这个效果重点使用了CollapsingToolbarLayout 。 CollapsingToolbarLayout可实现Toolbar的折叠效果。CollapsingToolbarLayout的子视图类似与LinearLayout垂直方向排放。 CollapsingToolbarLayout 提供以下属性和方法是用 1. Collapsing titleToolBar的标题当CollapsingToolbarLayout全屏没有折叠时title显示的是大字体在折叠的过程中title不断变小到一定大小的效果。你可以调用setTitle(CharSequence)方法设置title。 2. Content scrimToolBar被折叠到顶部固定时候的背景你可以调用setContentScrim(Drawable)方法改变背景或者 在属性中使用 app:contentScrim”?attr/colorPrimary”来改变背景。 3. Status bar scrim状态栏的背景调用方法setStatusBarScrim(Drawable)。还没研究明白不过这个只能在Android5.0以上系统有效果。 4. Parallax scrolling childrenCollapsingToolbarLayout滑动时子视图的视觉差可以通过属性app:layout_collapseParallaxMultiplier”0.6”改变。值de的范围[0.0,1.0]值越大视察越大。 5. CollapseMode 子视图的折叠模式在子视图设置有两种“pin”固定模式在折叠的时候最后固定在顶端“parallax”视差模式在折叠的时候会有个视差折叠的效果。我们可以在布局中使用属性app:layout_collapseMode”parallax”来改变。 CoordinatorLayout 还提供了一个 layout_anchor 的属性连同 layout_anchorGravity 一起可以用来放置与其他视图关联在一起的悬浮视图如 FloatingActionButton。本例中使用FloatingActionButton。 通过下面的参数设置了FloatingActionButton的位置两个属性共同作用使得FAB 浮动按钮也能折叠消失展现。 app:layout_anchorid/appbar
app:layout_anchorGravitybottom|right|end 使用CollapsingToolbarLayout实现折叠效果需要注意3点 1. AppBarLayout的高度固定 2. CollapsingToolbarLayout的子视图设置layout_collapseMode属性 3. 关联悬浮视图设置app:layout_anchorapp:layout_anchorGravity属性 四、自定义behavior CoordinatorLayout功能如此强大而他的神奇之处在于Behavior对象CoordinatorLayout自己并不控制View所有的控制权都在Behavior。前面写到了FloatingActionButton.BehaviorAppBarLayout.Behavior, AppBarLayout.ScrollingViewBehavior。 AppBarLayout中有两个Behavior一个是拿来给它自己用的另一个是拿来给它的兄弟结点用的。这些Behavior实现了复杂的控制功能。系统的Behavior毕竟有限我们可以通过自定义的方式来实现自己的Behavior。 通过 CoordinatorLayout.Behavior(YourView.Behavior.class) 来定义自己的Behavior并在layout 文件中设置 app:layout_behavior”com.example.app.YourView$Behavior” 来达到效果。 自定义Behavior 需要重写两个方法 public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) 1如下面的例子实现了点击FloatingActionButton点击旋转90度并适配Snackbar。 public class RotateBehavior extends CoordinatorLayout.BehaviorFloatingActionButton { private static final String TAG RotateBehavior.class.getSimpleName(); public RotateBehavior() { } public RotateBehavior(Context context, AttributeSet attrs) { super(context, attrs); } Override public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) { return dependency instanceof Snackbar.SnackbarLayout; } Override public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) { float translationY getFabTranslationYForSnackbar(parent, child); float percentComplete -translationY / dependency.getHeight(); child.setRotation(-90 * percentComplete); child.setTranslationY(translationY); return false; } private float getFabTranslationYForSnackbar(CoordinatorLayout parent, FloatingActionButton fab) { float minOffset 0; final ListView dependencies parent.getDependencies(fab); for (int i 0, z dependencies.size(); i z; i) { final View view dependencies.get(i); if (view instanceof Snackbar.SnackbarLayout parent.doViewsOverlap(fab, view)) { minOffset Math.min(minOffset, ViewCompat.getTranslationY(view) - view.getHeight()); } } return minOffset; } } android.support.design.widget.CoordinatorLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:apphttp://schemas.android.com/apk/res-auto android:idid/main_content android:layout_widthmatch_parent android:layout_heightmatch_parent android:fitsSystemWindowstrue android.support.design.widget.FloatingActionButton android:idid/fab android:layout_widthwrap_content android:layout_heightwrap_content android:layout_gravityend|bottom android:layout_margindimen/fab_margin android:srcdrawable/ic_done app:layout_behaviorcom.meizu.coordinatorlayoutdemo.RotateBehavior/ /android.support.design.widget.CoordinatorLayout 效果 综上基本覆盖了CoordinatorLayout的使用方式。 转载于:https://www.cnblogs.com/Free-Thinker/p/6807360.html