学习使用Material Design控件(四)Android实现标题栏自动缩放、放大效果

本文要实现内容移动时,标题栏自动缩放/放大的效果,效果如下:

控件介绍

这次需要用到得新控件比较多,主要有以下几个:

CoordinatorLayout
组织它的子views之间协作的一个Layout,它可以给子View切换提供动画效果。
AppBarLayout
可以让包含在其中的控件响应被标记了ScrollingViewBehavior的View的滚动事件
CollapsingToolbarLayout
可以控制包含在CollapsingToolbarLayout其中的控件,在响应collapse时是移除屏幕和固定在最上面
TabLayout
结合ViewPager,实现多个TAB的切换的功能
NestedScrollView
与ScrollView基本相同,不过包含在NestedScrollView中的控件移动时才能时AppBarLayout缩放

Layout布局

<?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:layout_width=“match_parent” android:layout_height=“match_parent” android:fitsSystemWindows=“true”> <android.support.design.widget.AppBarLayout android:layout_width=“match_parent” android:layout_height=“256dp” android:fitsSystemWindows=“true” android:theme=“@style/ThemeOverlay.AppCompat.Dark.ActionBar”> <android.support.design.widget.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”> <ImageView android:id=“@+id/ivImage” android:layout_width=“match_parent” android:layout_height=“match_parent” android:fitsSystemWindows=“true” android:scaleType=“centerCrop” android:src=“@drawable/book1” app:layout_collapseMode=“parallax” app:layout_collapseParallaxMultiplier=“0.7” /> <android.support.v7.widget.Toolbar 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.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <LinearLayout android:layout_width=“match_parent” android:layout_height=“match_parent” android:orientation=“vertical” app:layout_behavior=“@string/appbar_scrolling_view_behavior”> <android.support.design.widget.TabLayout android:id=“@+id/sliding_tabs” android:layout_width=“match_parent” android:layout_height=“wrap_content” app:tabGravity=“fill” app:tabMode=“fixed” /> <android.support.v4.view.ViewPager android:id=“@+id/viewpager” android:layout_width=“match_parent” android:layout_height=“match_parent” /> </LinearLayout> </android.support.design.widget.CoordinatorLayout>

CollapsingToolbarLayout和TabLayout的使用说明可以参考探索新的Android Material Design支持库

代码实现

//Toolbar Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { onBackPressed(); } }); //使用CollapsingToolbarLayout后,title需要设置到CollapsingToolbarLayout上 CollapsingToolbarLayout collapsingToolbar = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar); collapsingToolbar.setTitle("失控"); //设置ViewPager mViewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(mViewPager); //给TabLayout增加Tab, 并关联ViewPager TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); tabLayout.addTab(tabLayout.newTab().setText("内容简介")); tabLayout.addTab(tabLayout.newTab().setText("作者简介")); tabLayout.addTab(tabLayout.newTab().setText("目录")); tabLayout.setupWithViewPager(mViewPager);

详细代码参见这里

项目源码已发布到Github,Material Design新控件基本介绍完了,
下篇文章会结合豆瓣读书的API,整合一下这些控件,做一个Demo。
源码地址:MaterialDesignExample

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-10 14:09:24

学习使用Material Design控件(四)Android实现标题栏自动缩放、放大效果的相关文章

学习使用Material Design控件(三)使用CardView实现卡片效果

本文主要介绍CardView的使用,CardView是继承自FrameLayout,使用比较简单,只需要用CardView包含其他View就可以实现卡片效果了. 实现效果如下: 加入依赖库 dependencies { -. compile 'com.android.support:cardview-v7:22.2.0' } Layout布局 <android.support.v7.widget.CardView android:layout_width="match_parent&quo

学习使用Material Design控件(一)

Google 发布的Material Design支持库,对我们的APP设计有很大的影响,如果重新设计APP,支持库应该直接用V4提升到V7了,我们可以用Toolbar代替ActionBar,以及引入了RecycleView, SnakeBar等新控件. 我写了一个Demo来学习使用这些新控件. 新建项目,加入依赖包 我们使用Android Studio来开发这个Demo,在Android Studio新建一个项目,修改App Module的build.gradle文件,把compileSdkV

学习使用Material Design控件(二)使用DrawerLayout实现侧滑菜单栏效果

本文介绍如何使用DrawerLayout和NavigationView实现侧滑菜单栏的效果. 效果如下: Layout布局 <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+

Android Material Design控件学习(三)——使用TextInputLayout实现酷市场登录效果

前言 前两次,我们学习了 Android Material Design控件学习(一)--TabLayout的用法 Android Material Design控件学习(二)--NavigationView的学习和使用 今天我们继续MD控件的学习和使用.在学习之前,我们先来看一下酷市场的登录效果. 实现这种效果的正是我们今天的主角--TextInputLayout. 学习 不管学习什么,首先看它的官方文档.这是最权威,最高效的学习途径. 文档地址:http://developer.androi

Android Material Design控件学习(一)——TabLayout的用法

前言 Google官方在14年Google I/O上推出了全新的设计语言--Material Design.一并推出了一系列实现Material Design效果的控件库--Android Design Support Library.其中,有TabLayout, NavigationView,Floating labels for editing text,Floating Action Button,Snackbar, CoordinatorLayout, CollapsingToolbar

Android Material Design控件学习(二)——NavigationView的学习和使用

前言 上次我们学习了TabLayout的用法,今天我们继续学习MaterialDesign(简称MD)控件--NavigationView. 正如其名,NavigationView,导航View.一般我们用它和DrawerLayout实现抽屉式导航设计,效果如下图. 学习 文档地址:http://developer.android.com/reference/android/support/design/widget/NavigationView.html 通过学习官方文档,我们知道Naviga

Material Design 开发利器:Android Design Support Library 介绍

转自:https://blog.leancloud.cn/3306/   Android 5.0 Lollipop 是迄今为止最重大的一次发布,很大程度上是因为 material design -- 这是一门新的设计语言,它刷新了整个 Android 的用户体验.但是对于开发者来说,要设计出完全符合 material design 哲学的应用,是一个很大的挑战.Android Design Support Library 对此提供了很好的支持,里面汇集了很多重要的 material design

孙鑫VC学习笔记:ActiveX 控件 .

孙鑫VC学习笔记:ActiveX 控件 作者:华仔 | 录入时间:2007-12-26 | 点击:313 次    打印此文章 | 字体:大 中 小 基本概念: 容器和服务器程序       容器应用程序时可以嵌入或链接对象的应用程序.Word 就是容器应用程序.服务器应用程序是创建对象并且当对象被双击时,可以被启动的应用程序.Excel 就是服务器应用程序.ActiveX 控件不能独立运行,它必须被嵌入容器应用程序中,和容器应用程序一起运行. -------------------------

winform 窗体中用datagridview控件如何实现编辑时自动匹配相应数据

问题描述 如上图是textbox文本框实现的输入自动补全,但是我想在datagridview控件中实现编辑时自动补全,该如何做(非数据库) 解决方案 解决方案二:在EditingControlShowing事件获取e.Control,转换成TextBox,后面和TextBox补全是一样的解决方案三:引用1楼shingoscar的回复: 在EditingControlShowing事件获取e.Control,转换成TextBox,后面和TextBox补全是一样的 有代码吗?不是很懂这些解决方案四: