自定义Behavior,最外层布局必须是CoordinatorLayout

实现的效果,上滑隐藏TextView,下滑显示TextView

效果如下:

GIF.gif

public class BottomShowBehavior extends CoordinatorLayout.Behavior{

public BottomShowBehavior(Context context, AttributeSet attrs) {

super(context,attrs);

}

// 这个方法的回调时机 : 即将发生嵌套滚动时 nestedScrollAxes 用于判断滑动的方向

@Override

public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, TextView child, View directTargetChild, View target, int nestedScrollAxes) {

return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL;

}

//发生嵌套滚动的时候 回调

@Override

public void onNestedScroll(CoordinatorLayout coordinatorLayout, TextView child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {

//向下滑动

if (dyConsumed + dyUnconsumed > 0) {

//隐藏child

if (child.getVisibility() == View.VISIBLE) {

Anim.bottomHide(child);

}

//向上滑动

} else {

//展示child

if (child.getVisibility() != View.VISIBLE) {

Anim.bottomShow(child);

}

}

}

}

public class Anim {

public static void bottomShow(View show) {

//展示的动画

show.clearAnimation();

Animation animationShow = AnimationUtils.loadAnimation(show.getContext(), R.anim.main_tab_bottom_show);

show.startAnimation(animationShow);

show.setVisibility(View.VISIBLE);

}

public static void bottomHide(View gone) {

//消失的动画

gone.clearAnimation(); //清楚自身动画

Animation animationGone = AnimationUtils.loadAnimation(gone.getContext(), R.anim.main_tab_bottom_hide);

gone.startAnimation(animationGone);

gone.setVisibility(View.INVISIBLE);

}

}

main_tab_bottom_hide.xml

android:duration="300"

android:fromYDelta="0"

android:toYDelta="100%" />

main_tab_bottom_show.xml

android:duration="300"

android:fromYDelta="100%"

android:toYDelta="0" />

别忘了在string里面设置behavior属性

BehaviorLibrary

com.sloop.behaviorlibrary.design.BottomShowBehavior

使用app:layout_behavior="@string/bottom_show_behavior" 设置即可

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"

tools:context=".MainActivity">

android:id="@+id/rv"

android:layout_width="match_parent"

android:layout_height="match_parent"

app:layout_behavior="@string/appbar_scrolling_view_behavior" />

android:id="@+id/tv_bottom"

android:layout_width="match_parent"

android:layout_height="40dp"

android:layout_gravity="bottom"

android:background="#f00"

android:gravity="center"

android:text="我是底部"

android:textColor="#fff"

app:layout_behavior="@string/bottom_show_behavior" />

android安卓定义,安卓自定义Behavior相关推荐

  1. android弹出框自定义按钮,安卓(kotlin)自定义弹出框

    在安卓开发中,我们经常会遇到这种情况,就是可爱的UI们设计了一套属于我们自己风格的弹出框,为了彰显我们自己的风格,使用自动的dialog当然满足不了我们的需求,所以还是得这基础上写出我们自己的提示框, ...

  2. Android怎么自定义充电铃声,安卓手机怎么自定义充电提示音_自定义安卓充电提示音教程_3DM手游...

    安卓手机其实也是可以设置充电提示音的,我们只需要下载一个第三方软件,然后在APP中进行一些简单的设置,就可以实现自定义更换手机充电提示音了.安卓手机怎么自定义充电提示音?下面小编就为大家带来了详细的教 ...

  3. 安卓学习随笔 -- 自定义标题栏

    在安卓中不喜欢系统默认的标题栏,那么如何让自定义一个自己的标题栏呢. 自定义后的标题栏如下: 首先这里需要定义一个自定义的标题栏布局 title.xml文件 (里边需要两个图片这个很简单) <R ...

  4. 国内支持原生android吗,定制安卓和原生Android到底有哪些不同之处?彻底真相了...

    相信大家都知道最近在搞机圈有个大新闻,就是小米即将于8月份推出MIUI 9.近日小米MIUI市场副总监@黄龙中 就在微博上征求米粉意见,暗示MIUI 9可能长下面这样. 小米最新官方主题<几何& ...

  5. Android Studio 下安卓 jni 开发错误 undefined reference to AndroidBitmap_getInfo

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 又掉坑里了 今天开发 uvc,又遇到了坑: 和之前的这个坑类似:Android Studio 下安卓 jni 开发错误 ...

  6. Android Platform Architecture 安卓平台架构

    Android Platform Architecture 安卓平台架构 Android is an open source, Linux-based software stack created f ...

  7. android11电视,适用于Android TV的安卓11更新:提高性能与隐私

    你知道智能电视也有适配的安卓11吗?在前几日,手机上的安卓11终于更新,紧接着,适用于Android TV的安卓11也发布了更新推送,更多信息和XDA小编一起往下看吧! 昨日,谷歌Pixel5有了最新 ...

  8. Android自定义Behavior第十六式之空中楼阁

    前言 & 初步分析 上个月鸿神在群里推荐一位同学的Flutter版WanAndroid项目的时候发现了一个炫酷的效果: 嗯,就是一个下拉进入二楼的效果,但因为这个项目是用Flutter做的,无 ...

  9. 原生android 定制,定制安卓和原生Android到底有哪些不同之处?

    ­ 相信大家都知道最近在搞机圈有个大新闻,就是小米即将于 8 月份推出 MIUI 9.近日小米 MIUI 市场副总监 @黄龙中 就在微博上征求米粉意见,暗示 MIUI 9 可能长下面这样. ­ 小米最 ...

最新文章

  1. 使用git命令上传本地文件到GitHub上
  2. not exists 跟not in 纪念一下
  3. HTML的标签描述5
  4. mysql语句中的sum(if(exp1,exp2,exp3))
  5. 静态布局、自适应布局、流式布局、响应式布局、弹性布局简析、BFC
  6. windows怎么下载安装python-windows下numpy下载与安装图文教程
  7. 25 | 基础篇:Linux 磁盘I/O是怎么工作的(下)
  8. LinkdedList
  9. java广度优先遍历
  10. C#与halcon联合开发——内存溢出
  11. 我们边吃曲奇边聊——Cookie与Session那些事
  12. VS Code 直接跳到下一行编辑快捷键
  13. 20190501-整数翻转
  14. Mac上编译Qt源码教程
  15. 学计算机是为了什么演讲稿,求大学计算机协会职位申请书和演讲稿
  16. 怎么看软件的编写代码
  17. 智力题解题报告 No.4 9个点10个线
  18. Python编程要点:列表操作和Python的Fraction类(代码实现和练习)
  19. 数学建模复习——代码记录
  20. 拼多多败诉,砍价始终差0.9%一案宣判;​微信内测同一手机号可注册两个账号功能;2022年度菲尔兹奖公布|极客头条

热门文章

  1. 【2022年终总结】会者定离,一期一祈
  2. html各种日期正则表达式,日期正则表达式_常用的日期时间正则表达式
  3. 在Visual Studio中构建编译FFmpeg
  4. Android 数据库和存储文件(第十五 十六 十七节课)
  5. 不擅于社交的原因?如何提高社交能力?
  6. taro框架 Switch组件不兼容android手机
  7. 如何快速提高英语的词汇量
  8. 制作网格化专题地图(不一样的专题地图)——2000年石家庄土地利用程度网格化图
  9. 计算机二级预测卷谁的比较好,2017年计算机二级考试《MSOffice》预测试题及答案...
  10. Linux常用命令(日常操作这一篇就够了)