CoordinatorLayout 使用综述系列(一)

在 gradle 文件中引入 meterial design 库:

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

CoordinatorLayout 实现了多种Material Design中提到的滚动效果

1 CoordinatorLayout 与 FloatingActionButton 结合使用

<android.support.design.widget.CoordinatorLayoutxmlns: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.support.design.widget.FloatingActionButtonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="16dp"android:src="@mipmap/ic_launcher" /></android.support.design.widget.CoordinatorLayout>

activity 中

findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {Snackbar.make(view, "Hello Snackbar", Snackbar.LENGTH_LONG).show();}
});

2 CoordinatorLayout 与 其他控件(例如 Button) 结合使用

<android.support.design.widget.CoordinatorLayoutxmlns: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"><Buttonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="16dp"android:text="click"/></android.support.design.widget.CoordinatorLayout>

弹出的Snackbar会将Button覆盖,也就是CoordinatorLayout 不能正常工作。这是因为 View 没有默认的CoordinatorLayout.Behavior 的实现,
那么我们的解决方案就是自定义一个CoordinatorLayout.Behavior来控制Button的响应

import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;/*** class infation*/
public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<Button> {public FloatingActionButtonBehavior() {}public FloatingActionButtonBehavior(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean layoutDependsOn(CoordinatorLayout parent, Button child, View dependency) {//如果我们想监听改变,就让方法返回 true。在例子中,我们只想监听 Snackbar 对象的改变return dependency instanceof Snackbar.SnackbarLayout;}@Overridepublic boolean onDependentViewChanged(CoordinatorLayout parent, Button child, View dependency) {/*** 当 CoordinatorLayout 中的 view 每次发生变化时,onDependentViewChanged 方法都会被调用。* 在这个方法中,我们要读取当前 Snackbar 的状态。* 当Snackbar 显示的时候,我们想把 Button 也移上来。* 要实现这样的目的,我们需要把 Button 的 Y 坐标设置为Snackbar 的高度。要得到正确的转换值,我们需要从转化的 Y 值中减去 Snackbar 的高度*/float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());child.setTranslationY(translationY);return true;}
}

然后将写好的 FloatingActionButtonBehavior 设置给我们所要变动的Button

<android.support.design.widget.CoordinatorLayoutxmlns: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"><Buttonandroid:id="@+id/fab"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="16dp"android:text="click"/></android.support.design.widget.CoordinatorLayout>

所有通过上述的自定义Behavior  我们就可以做到定义任想要改变的控件移动

CoordinatorLayout 使用综述系列(一)相关推荐

  1. CoordinatorLayout 使用综述系列(二)与AppBarLayout结合上下联动效果

    CoordinatorLayout 使用综述系列(二) 在 gradle 文件中引入 meterial design 库: compile 'com.android.support:design:22 ...

  2. 综述系列 | 多标签学习的新趋势

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 随着Deep learning领域的不断发展,我们面对的问题 ...

  3. Paper Reading - 综述系列 - Hyper-Parameter Optimization(下)

    更多可见计算机视觉-Paper&Code - 知乎 目录 搜索策略 网格搜索 随机搜索 贝叶斯优化 结论 接着上一篇继续说 搜索策略 网格搜索 将每个超参数的搜索空间离散化为笛卡尔积.然后使用 ...

  4. 搜索推荐中的召回匹配模型综述(二):基于表示学习的深度学习方法

    " 本文是搜索推荐中的召回匹配模型综述系列的第二篇,上一篇为搜索推荐中的召回匹配模型综述(一)--传统方法. 本文主要介绍了搜索推荐中基于representation learning的深度 ...

  5. 指纹识别综述(3): 特征提取

    指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...

  6. 指纹识别综述(1): 导论

    指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...

  7. 指纹识别综述(5): 分类与检索

    指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...

  8. 指纹识别综述(7): 指纹合成

    指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...

  9. 指纹识别综述(8): 唯一性

    指纹识别综述系列 1.导论:2.指纹传感器:3.特征提取:4.匹配:5.分类与检索:6.现场指纹识别: 7.指纹合成: 8.唯一性: 9.指纹系统安全:10.深度学习方法:11.专利. 本文主要基于& ...

最新文章

  1. 7.1 TensorFlow笔记(基础篇):加载数据之预加载数据与填充数据
  2. 域名解析可以带端口吗_带互感器的三相电表接线,S2可以不接地吗?ABC相序可以错吗?...
  3. 编写一个爬虫类库——(一)想法
  4. oracle两个约束,Oracle中的约束介绍(2)
  5. android --- fastboot 协议学习
  6. python symbols函数,Python
  7. flutter 的像素尺寸
  8. 边境的悍匪—机器学习实战:第三章 分类
  9. 通俗易懂奈奎斯特定理和香农定理
  10. 个人网站搭建,个人网站需要什么软件
  11. 登录令牌 Token 介绍
  12. sqlserver java驱动_sqlserver jdbc驱动
  13. Java基础 课后作业错题集
  14. 自考英语和计算机可以替代,自考本科学位英语用什么可以替代?
  15. 2.ipv6苹果上线 新网域名不支持AAAA 域名DNS解析AAAA -----如何将DNS从新网转到DNSPod?
  16. Loj #2585. 「APIO2018」新家
  17. SQL Server 数据库设计(ER图)
  18. 如何使用正规seo技术做网站排名?
  19. 重磅!《2022中国开源发展蓝皮书》正式发布
  20. 银行项目外包专题系列之一:经常遇到的外包/驻场/实施/To B/POC这些概念

热门文章

  1. CV Papers|计算机视觉论文推荐周报20200501期
  2. 最强开源OCR!印刷体古籍文字识别超越著名商业软件ABBYY
  3. 注意!Python开发中最容易掉进去的10个坑!你遇到过那些
  4. 【OpenCV】OpenCV实战从入门到精通之 -- 常用数据结构和函数(Point、Scalar、Size、Rect、cvtColor)
  5. CVPR 2020 | 中科院、商汤联合提出大规模多标签目标检测新算法
  6. jsp页面适应手机屏幕_HTML5之页面缩放 viewport
  7. 动手学pytorch之tensor数据(一)
  8. 关于numpy mean函数的axis参数
  9. TensorFlow官方教程翻译:导入数据
  10. Python 新手入门引导