android 应用置顶到最前端_【五种方式实现Android吸顶效果 最全总结!】列表滑动到顶部 固定顶部栏效果...

本文详细介绍了五种实现Android应用吸顶效果的方法,包括通过ScrollView、ListView、动态增删顶部栏、使用CoordinatorLayout+AppbarLayout+CollapsingToolbarLayout以及重写RecyclerView的分割线ItemDecoration。每种方式都有其特点和适用场景,适用于各种列表滑动到顶部时固定顶部栏的设计需求。
摘要由CSDN通过智能技术生成

如今许多app都会应用到的一种UI交互形式,列表滑动到顶部,固定顶部栏效果,我们也可以称作其为吸顶效果。比如微博 、各大浏览器的首页信息流模块、我的页面的设计等。

微博评论的吸顶效果

本文将循序渐进的通过多种方式实现吸顶效果。大家择优选取适合自己的实现方式。 实现效果如图:

demo实现

一、两个相同的顶部栏

写两个一模一样的固定悬浮栏,在一开始把外层固定栏先隐藏,当内层固定栏滑动到外层固定位置时,把内层固定栏隐藏,外层固定栏显示。

头部+内层悬浮栏+list 组成了scrollview

主要代码 监听scrollview的滑动,隐藏显示内外悬浮窗

scrollView.setScrollChangeListener(new MyScrollView.ScrollChangedListener() {

@Override

public void onScrollChangedListener(int x, int y, int oldX, int oldY) {

if (y >= topHeight) {

//重点 通过距离变化隐藏内外固定栏实现

llOutsideFixed.setVisibility(View.VISIBLE);

insideFixedBar.setVisibility(View.GONE);

recyclerView.setNestedScrollingEnabled(true);

} else {

llOutsideFixed.setVisibility(View.GONE);

insideFixedBar.setVisibility(View.VISIBLE);

recyclerView.setNestedScrollingEnabled(false);

}

}

});

二、通过ListView

通过listview添加头部,当listview滑动到顶部将原本隐藏的头部布局显示出来。

listView.setOnScrollListener(new AbsListView.OnScrollListener() {

@Override

public void onScrollStateChanged(AbsListView view, int scrollState) {

}

@Override

public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {

/* 判断ListView头部(mHeaderView)当前是否可见

* 来决定隐藏或显示浮动栏(mFloatBar)*/

if (firstVisibleItem >= 1) {

flOutSideBar.setVisibility(View.VISIBLE);

} else {

flOutSideBar.setVisibility(View.GONE);

}

}

});

这种方式需要写重复布局,事件监听,当固定布局带有状态时,还要将两个状态同这种方式实现的根本其实也是很方式一相同,也需要引入两个相同的顶部固定栏,相比方式一不同的是:

方式二滑动监听通过listview自带的setOnScrollListener即可,方式一需要暴露接口提供滑动位移变化值。

当存在滑动的view时,方式二不需要处理冲突,方式一需要冲突处理。

布局的引入:外部悬浮窗和头部布局,listview通过addHeaderView引入即可。管理起来方便。

方式一和方式二的缺点就是:<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对你的问题,我可以提供一些思路和参考代码。 首先,实现 Android 中的自定义吸顶,可以采用两种方式: 1. 使用固定顶部控件 + ScrollView + ViewPager 的方式实现。 这种方式比较常见,具体实现思路如下: (1)在布局文件中定义一个固定顶部的控件,例如 LinearLayout,将其设置为可见性为 gone,即不可见。 (2)在 ScrollView 中添加 ViewPager,将其填充满整个布局,用于滑动切换不同的子页面。 (3)监听 ScrollView 的滑动事件,在滑动到一定位置时,将顶部控件设置为可见,实现吸顶效果。 具体实现代码可以参考以下链接: - https://www.jianshu.com/p/4f28a4d0c3b1 - https://www.cnblogs.com/xiaohuafice/p/11050662.html 2. 使用 CoordinatorLayout + AppBarLayout 实现。 这种方式相对来说比较简单,具体实现思路如下: (1)在布局文件中使用 CoordinatorLayout 作为根布局,并添加一个 AppBarLayout 作为子布局。 (2)在 AppBarLayout 中添加一个 Toolbar 控件作为顶部固定控件,将其设置为可见性为 gone。 (3)在子页面中,使用 NestedScrollView 作为滑动的容器,并将其放在 AppBarLayout 的下面。 (4)监听 NestedScrollView 的滑动事件,在滑动到一定位置时,将 Toolbar 设置为可见,实现吸顶效果。 具体实现代码可以参考以下链接: - https://www.jianshu.com/p/5d0f7e7e7c97 - https://www.jianshu.com/p/5d0f7e7e7c97 希望以上内容能够帮助到你,有什么问题可以再和我交流哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值