全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android自定义FloatingActionButton滑动行为只隐藏不出现的问题小结

先来段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小时内与您取得联系。