先来段Behavior代码,网上关于FloatingActionButton(以下简称FAB)滑动的代码很多了,参考一下。
public class FabBehavior extends FloatingActionButton.Behavior{
private static final Interpolator INTERPOLATOR = new FastOutSlowInInterpolator();
private boolean mIsAnimatingOut = false;
public FabBehavior(Context context, AttributeSet attrs) {
super();
}
@Override
public boolean onStartNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child,
final View directTargetChild, final View target, final int nestedScrollAxes) {
// Ensure we react to vertical scrolling
return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL
|| super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes);
}
@Override
public void onNestedScroll(final CoordinatorLayout coordinatorLayout, final FloatingActionButton child,
final View target, final int dxConsumed, final int dyConsumed,
final int dxUnconsumed, final int dyUnconsumed) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
if (dyConsumed > 0 && !this.mIsAnimatingOut && child.getVisibility() == View.VISIBLE) {
// User scrolled down and the FAB is currently visible -> hide the FAB
animateOut(child);
} else if (dyConsumed < 0 && child.getVisibility() != View.VISIBLE) {
// User scrolled up and the FAB is currently not visible -> show the FAB
animateIn(child);
}
}
// Same animation that FloatingActionButton.Behavior uses to hide the FAB when the AppBarLayout exits
private void animateOut(final FloatingActionButton button) {
if (Build.VERSION.SDK_INT >= 14) {
ViewCompat.animate(button).translationY(button.getHeight() + getMarginBottom(button)).setInterpolator(INTERPOLATOR).withLayer()
.setListener(new ViewPropertyAnimatorListener() {
public void onAnimationStart(View view) {
FabBehavior.this.mIsAnimatingOut = true;
}
public void onAnimationCancel(View view) {
FabBehavior.this.mIsAnimatingOut = false;
}
public void onAnimationEnd(View view) {
FabBehavior.this.mIsAnimatingOut = false;
view.setVisibility(View.GONE);
}
}).start();
} else {
}
}
// Same animation that FloatingActionButton.Behavior uses to show the FAB when the AppBarLayout enters
private void animateIn(FloatingActionButton button) {
button.setVisibility(View.VISIBLE);
if (Build.VERSION.SDK_INT >= 14) {
ViewCompat.animate(button).translationY(0)
.setInterpolator(INTERPOLATOR).withLayer().setListener(null)
.start();
} else {
}
}
private int getMarginBottom(View v) {
int marginBottom = 0;
final ViewGroup.LayoutParams layoutParams = v.getLayoutParams();
if (layoutParams instanceof ViewGroup.MarginLayoutParams) {
marginBottom = ((ViewGroup.MarginLayoutParams) layoutParams).bottomMargin;
}
return marginBottom;
}
}
这是自定义的一个Behavior类,主要在onNestedScroll中自定义了出现和消失的动画。使用的时候,在xml文件中给FAB加一个包含完整behavior类名的layout_behavior属性
app:layout_behavior="com.normalframe.widgets.view.FabBehavior"
这样FAB就会随着列表上滑消失,下滑出现。这个功能主要是要处理FAB的位置会使列表最后一项被挡住的问题,当上滑时,FAB隐藏,这样当到达列表底部最后一项时,由于刚刚的动作是上滑动作,所以FAB处于隐藏状态,不会遮挡到列表。
在写这个功能时,发现了一个问题:
上滑时FAB能够正常隐藏,但是下拉列表时,FAB就不出现了。
而一样的代码如果放到其它项目中,有些又可以正常实现功能。Debug的时候发现,上拉时会调用onNestedScroll,于是其中自定义的隐藏方法可以被调用,但下滑时,不调用onNestedScroll。
以上所述是小编给大家介绍的Android自定义FloatingActionButton滑动行为只隐藏不出现的问题小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# floatingactionbutton
# android
# 滑动
# Android仿知乎悬浮功能按钮FloatingActionButton效果
# Android自定义可拖拽的悬浮按钮DragFloatingActionButton
# 修改Android FloatingActionButton的title的文字颜色及背景颜色实例详解
# Android中FloatingActionButton实现悬浮按钮实例
# Android悬浮按钮点击返回顶部FloatingActionButton
# Android 中FloatingActionButton(悬浮按钮)实例详解
# Android中Fab(FloatingActionButton)实现上下滑动的渐变效果
# Android中FloatingActionButton的显示与隐藏示例
# Android自定义APP全局悬浮按钮
# Android开发悬浮按钮 Floating ActionButton的实现方法
# Android开发之FloatingActionButton悬浮按钮基本使用、字体、颜色用法示例
# 自定义
# 小编
# 这是
# 就会
# 在此
# 就不
# 给大家
# 会使
# 一个问题
# 当上
# 所述
# 先来
# 给我留言
# 又可
# 感谢大家
# 出现了
# 主要是
# 表上
# 疑问请
# 有任何
相关文章:
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
如何在万网ECS上快速搭建专属网站?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
宝塔面板创建网站无法访问?如何快速排查修复?
网站制作网站,深圳做网站哪家比较好?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
建站OpenVZ教程与优化策略:配置指南与性能提升
建站之星伪静态规则如何设置?
建站之星如何快速更换网站模板?
如何通过VPS搭建网站快速盈利?
,怎么在广州志愿者网站注册?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
免费视频制作网站,更新又快又好的免费电影网站?
建站之星伪静态规则如何正确配置?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
一键网站制作软件,义乌购一件代发流程?
如何通过二级域名建站提升品牌影响力?
如何确保西部建站助手FTP传输的安全性?
如何高效利用亚马逊云主机搭建企业网站?
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何选择高效响应式自助建站源码系统?
重庆市网站制作公司,重庆招聘网站哪个好?
建站之星安装步骤有哪些常见问题?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
潮流网站制作头像软件下载,适合母子的网名有哪些?
较简单的网站制作软件有哪些,手机版网页制作用什么软件?
建站主机CVM配置优化、SEO策略与性能提升指南
香港服务器租用每月最低只需15元?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星安装模板失败:服务器环境不兼容?
javascript中对象的定义、使用以及对象和原型链操作小结
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
企业微网站怎么做,公司网站和公众号有什么区别?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
建站之星免费版是否永久可用?
济南专业网站制作公司,济南信息工程学校怎么样?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
微信小程序 input输入框控件详解及实例(多种示例)
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
建站之星ASP如何实现CMS高效搭建与安全管理?
网页设计网站制作软件,microsoft office哪个可以创建网页?
如何快速搭建虚拟主机网站?新手必看指南
网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何快速搭建个人网站并优化SEO?
*请认真填写需求信息,我们会在24小时内与您取得联系。