android 折叠式布局,[Android] Android利用Coordinatorlayout+AppbarLayout实现折叠式布局

折叠式布局在App中相当常见,给人一种科技感,充满良好的用户体验。

本文就以两个简单的例子,来举例说明基本折叠式布局:

首先需要在app/build.gradle下添加如下依赖:

compile 'com.android.support:support-v4:23.4.0'

compile 'com.android.support:design:23.4.0'

一、实现Toolbar + menu 菜单

布局文件activity_toolbar.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".activity.ToolbarActivity">

android:id="@+id/toolbar"

android:layout_width="match_parent"

android:layout_height="53dp"

android:background="#cccccc">

Java代码文件:

package com.jack.mymdfull.activity;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.widget.Toolbar;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.Toast;

import com.jack.mymdfull.R;

public class ToolbarActivity extends AppCompatActivity implements Toolbar.OnMenuItemClickListener{

private Toolbar toolbar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_toolbar);

initView();

}

private void initView(){

toolbar = (Toolbar)findViewById(R.id.toolbar);

setSupportActionBar(toolbar);

toolbar.setTitle("Title");

toolbar.setOnMenuItemClickListener(this);

}

@Override

public boolean onMenuItemClick(MenuItem item) {

switch (item.getItemId()){

case R.id.menu_1:

Toast.makeText(getApplicationContext(),"菜单1",Toast.LENGTH_SHORT).show();

break;

case R.id.menu_2:

Toast.makeText(getApplicationContext(),"菜单2",Toast.LENGTH_SHORT).show();

break;

}

return true;

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

//引入options菜单

getMenuInflater().inflate(R.menu.menu,menu);

return true;

}

}

R.menu.menu.xml 文件

xmlns:app="http://schemas.android.com/apk/res-auto">

android:id="@+id/menu_1"

android:icon="@mipmap/***"

android:title="菜单1"

app:showAsAction="collapseActionView" />

android:id="@+id/menu_2"

android:icon="@mipmap/**"

android:title="菜单2"

app:showAsAction="collapseActionView" />

显示效果如下:

9082d77f215fb75bc6693782e8a89e4b.gif

二、CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout + NestedScrollView 实现单页面 滚动 + 顶部

实现方法:

布局文件 acvity_col1.xml

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

tools:context=".activity.Col1Activity">

android:layout_width="match_parent"

android:layout_height="wrap_content">

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:layout_scrollFlags="scroll|exitUntilCollapsed">

android:layout_width="match_parent"

android:layout_height="200dp"

android:background="@mipmap/bg"

app:layout_collapseMode="parallax" />

android:id="@+id/col1_toolbar"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="#000"

android:minHeight="50dp"

app:layout_collapseMode="pin">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="文本标题" />

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:layout_behavior="@string/appbar_scrolling_view_behavior">

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:padding="10dp"

android:text="@string/col1_text"

android:textColor="#000"

android:textSize="20sp" />

java代码文件:

package com.jack.mymdfull.activity;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.support.v7.widget.Toolbar;

import com.jack.mymdfull.R;

public class Col1Activity extends AppCompatActivity {

private Toolbar col1_toolbar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_col1);

initView();

}

protected void initView(){

col1_toolbar = (Toolbar)findViewById(R.id.col1_toolbar);

setSupportActionBar(col1_toolbar);

col1_toolbar.setTitle("标题");

}

}

显示效果如下:

496a193412d534d5e112896c35c89fb0.gif

转载请著名出处!谢谢~~

Android学习之CoordinatorLayout+AppBarLayout

•AppBarLayout 简介 AppbarLayout 是一种支持响应滚动手势的 app bar 布局: 基本使用 新建一个项目,命名为 TestAppBarLayout: 修改 activity ...

Android CoordinatorLayout + AppBarLayout(向上滚动隐藏指定的View)

在新的Android Support Library里面,新增了CoordinatorLayout, AppBarLayout等. 实现的效果: 向下滚动RecylerView,Tab会被隐藏,向上滚 ...

Android中利用ViewHolder优化自定义Adapter的典型写法

利用ViewHolder优化自定义Adapter的典型写法 最近写Adapter写得多了,慢慢就熟悉了. 用ViewHolder,主要是进行一些性能优化,减少一些不必要的重复操作.(WXD同学教我的. ...

(转)android中利用 ViewPage 实现滑动屏

最近实现了这样的一个效果:滑动界面出现拖拽效果,可翻动3屏,也可点击按钮翻动页面. 主要利用android.support.v4.view.ViewPager控件来实现. 第一个界面: 滑动屏幕: 换 ...

Android之利用HTTP网络通信实现与PHP的交互(三)

Android与PHP的交互是通过Http网络编程来实现的,利用php访问数据库,并且操作数据库中的数据,利用php作为接口,使Android连接数据库. 一般情况下,我们使用Json格式进行传输,利 ...

android 下 利用webview实现浏览器功能

android 下 利用webview实现浏览器功能(一): 1.界面添加WEBVIEW控件. 2.在界面.JAVA代码页面(protected void onCreate(Bundle savedI ...

【Android】7.6 FrameLayout(帧布局)

分类:C#.Android.VS2015: 创建日期:2016-02-11 一.简介 帧布局是显示多个层次图的有效手段.比如第3章介绍的百度地图就是利用帧布局来实现的,它将图层分为22级分别缓存到指定 ...

【Android】7.3 GridLayout(网格布局)

分类:C#.Android.VS2015: 创建日期:2016-02-10 一.简介 Android 4.0(API 14)开始提供的GridLayout布局使用虚细线将布局划分为行.列和单元格,也支 ...

随机推荐

JAVA中使用FTPClient实现文件上传下载实例代码

一.上传文件 原理就不介绍了,大家直接看代码吧 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

centos6.6 安装cacti监控服务器

整理一份cacti的安装步骤.留作笔记和以后参考用. 环境: centos 6.6 -x64 cacti-0.8.8b-cn.tar.gz mysql yum安装即可 yum服务使用centos自带的 ...

SQLServer语句执行效率及性能测试

写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置STATISTICS我们可以查看执行SQL时的 ...

MySQL查询本周、上周、本月、上个月份数据的sql代码(转)

感谢:http://www.jb51.net/article/32277.htm ----------------------------------------------------------- ...

C# 验证码识别基础方法及源码

先说说写这个的背景 最近有朋友在搞一个东西,已经做的挺不错了,最后想再完美一点,于是乎就提议把这种验证码给K.O.了,于是乎就K.O.了这个验证码.达到单个图片识别时间小于200ms,500个样本人工 ...

使用XRDP实现Windows远程桌面Linux系统

一般情况下我们用ssh客户端远程登陆Linux系统,至于图形界面下的linux远程登陆工具,我们一般都会想到vnc,但它的安全性不够,在这里,我将介绍XRDP的安装配置方法.我们可以很方便的通过Win ...

Squid--hash代码分析

#ifndef SQUID_HASH_H #define SQUID_HASH_H //几个函数和变量的别名 typedef void HASHFREE(void *); typedef int HA ...

升级linux python

# python -V # 查看python 版本 # cd /home/centos/Downloads # 进入存放目录 # wget https://www.python.org/ftp/pyt ...

安装mitmproxy

https://www.jianshu.com/p/1dd40826113b 先连接到同一个局域网,再访问官网下载描述文件

【转载】Sqlserver中查询窗口显示行号

在Sqlserver中编写语句的时候,有时候因为业务逻辑比较复杂,编写的语句会比较多,此时如果编辑器中显示代码的行号,则对于我们的语句编写有很好的辅助作用.sqlserver默认未开启行号显示功能,可 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值