All Projects → luiing → Adsorbent

luiing / Adsorbent

Licence: MIT license
Adsorbent of RecyclerView , RecyclerView吸顶

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Adsorbent

Scrollingpagerindicator
Pager indicator inspired by Instagram. Lightweight and easy to set up.
Stars: ✭ 419 (+1576%)
Mutual labels:  recyclerview, viewpager
Verticalviewpager
A vertical scroll ViewPager implementation. Use with scrollable views(ListView, ScrollView, RecyclerView).
Stars: ✭ 64 (+156%)
Mutual labels:  recyclerview, viewpager
Discretescrollview
A scrollable list of items that centers the current element and provides easy-to-use APIs for cool item animations.
Stars: ✭ 5,533 (+22032%)
Mutual labels:  recyclerview, viewpager
Cardslideview
一行代码实现ViewPager卡片效果,比ViewPager2更强大,底层同样是RecyclerView
Stars: ✭ 301 (+1104%)
Mutual labels:  recyclerview, viewpager
Gridpagersnaphelper
A powerful tools to impl grid paging layout by RecyclerView
Stars: ✭ 228 (+812%)
Mutual labels:  recyclerview, viewpager
Corbind
Kotlin Coroutines binding APIs for Android UI widgets from the platform and support libraries
Stars: ✭ 357 (+1328%)
Mutual labels:  recyclerview, viewpager
Base Mvvm
App built to showcase basic Android View components like ViewPager, RecyclerView(homogeneous and heterogeneous items), NavigationDrawer, Animated Vector Drawables, Collapsing Toolbar Layout etc. housed in a MVVM architecture
Stars: ✭ 18 (-28%)
Mutual labels:  recyclerview, viewpager
Gallerylayoutmanager
New way to implements ViewPager/Gallery in Android with RecycleView
Stars: ✭ 684 (+2636%)
Mutual labels:  recyclerview, viewpager
Banner
Android Viewpager rotation control, application guide page controls, support vertical, horizontal cycle scrolling, extended from view support animation, indicator extension and so on;Android viewpager轮播图控件、app引导页控件,支持垂直、水平循环滚动,扩展自viewpager 支持动画,指示器扩展等。
Stars: ✭ 96 (+284%)
Mutual labels:  recyclerview, viewpager
Recyclerpager
Using RecyclerView and SnapHelper replace ViewPager
Stars: ✭ 73 (+192%)
Mutual labels:  recyclerview, viewpager
Transformerslayout
🔥 App金刚区导航菜单,类似淘宝、QQ音乐等APP导航,方格布局横向多行滑动翻页带滚动条
Stars: ✭ 258 (+932%)
Mutual labels:  recyclerview, viewpager
Pageindicator
An Instagram like page indicator compatible with RecyclerView and ViewPager.
Stars: ✭ 236 (+844%)
Mutual labels:  recyclerview, viewpager
Antonio
Android library for the adapter view (RecyclerView, ViewPager, ViewPager2)
Stars: ✭ 89 (+256%)
Mutual labels:  recyclerview, viewpager
Adapter
A quick adapter library for RecyclerView, GridView, ListView, ViewPager, Spinner
Stars: ✭ 376 (+1404%)
Mutual labels:  recyclerview, viewpager
SlideView
🔖 Card RecycleViewManager, to make your interface cool.Use recyclerView to add cool effects to the view.
Stars: ✭ 16 (-36%)
Mutual labels:  recyclerview, viewpager
Collapsingrefresh
AppBarLayout+ViewPager+RecyclerView的刷新功能
Stars: ✭ 69 (+176%)
Mutual labels:  recyclerview, viewpager
Overscroll Decor
Android: iOS-like over-scrolling effect applicable over almost all scrollable Android views.
Stars: ✭ 2,671 (+10584%)
Mutual labels:  recyclerview, viewpager
MetalRecyclerPagerView
RecyclerView implementation for Android which makes it look and feel like ViewPager with item margins support (mutliple views effect).
Stars: ✭ 26 (+4%)
Mutual labels:  recyclerview, viewpager
IndicatorView
IndicatorView Library For Android
Stars: ✭ 41 (+64%)
Mutual labels:  viewpager
TheGreatAdapter
Multiple items adapter made too easy, including headers and footers.
Stars: ✭ 46 (+84%)
Mutual labels:  recyclerview

吸顶终极版

1. Single RecyclerView:简单模式
【利用RecyclerView.OnScrollListener监听滑动位置,吸顶View被 ViewHolder和Activity复用】

2. Double RecyclerView:RecyclerView嵌套RecyclerView
【事件分发,吸顶View是个单独ViewHolder,无须做其他处理】

3. Viewpager RecyclerView:RecyclerView嵌套ViewPager(其中包含的页面内容是RecyclerView)
【事件分发,吸顶View是个单独ViewHolder,无须做其他处理】

4. 拓展View需要调用ParentRecyclerView接口OnFlingListener,并实现OnChildFlingListener
 【拓展View支持下拉刷新parent.onScrollBottom(false),支持联动onChildFling(speed: Int)】

USE by Kotlin

implementation 'com.uis:adsorbent:0.5.7
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.android.support:recyclerview-v7:$supportVer"

项目中使用的是compileOnly,使用者需自行加入外部依赖库

VERSION

Version Descipt Fixed Time
0.1.1 初始版本 2019/5
0.1.2 新增 快速滑动联动效果 2019/5
0.1.3 更改 快速滑动联动处理 2019/5
0.2.0 优化 联动平滑过渡,冲突后重新分发 2019/5
0.2.1 优化 联动支持fling 2019/5
0.3.0 优化 冲突事件分发优化,更简单易懂 2019/6
0.3.2 fixed The specified child already has a parent. You must call removeView() on the child's parent first 2019/10
0.3.3 fixed 联动子view效果 2020/2
0.3.4 fixed 吸顶后子view不在顶部时父类在动 2020/2
0.3.5 fixed 吸顶后对view滑动事件放行处理 2020/3
0.3.6 fixed 纵向滑动判断 2020/3
0.4.0 优化 优化事件分发 2020/5
0.4.2 优化 优化fling联动速度,支持拓展 2020/5
0.5.0 新增 支持吸顶部分下拉刷新 2020/6
0.5.1 fixed 吸顶部分下拉刷新事件冲突 2020/7
0.5.5 fixed 内容在一个屏幕内支持下拉刷新 2020/7
0.5.6 优化 要吸顶View与Parent交集以外区域,parent事件不传递给吸顶View 2020/7
0.5.7 优化 刚吸顶时横向滑动和纵向冲突 2020/7

USE

事件分发ParentRecyclerView设置
/** true 开启滑动冲突处理(默认true)*/
recyclerView.enableConflict = true
/** 开启快速滚动parent带动child联动效果(默认false)*/
recyclerView.enableParentChain = false
/** 开启快速滚动child带动parent联动效果(默认true)*/
recyclerView.enableChildChain = true
/** 开启child下拉刷新(默认false)*/
recyclerView.enableChildSwipeRefresh = true
Single
recyclerView.addOnScrollListener(object : SingleAdsorbentListener(){
        /** 获取被吸顶ViewGroup*/
        override fun getUiViewGroup(): ViewGroup = relative
        /** 获取吸顶View*/
        override fun getPinView(): View = pin
        /** 获取吸顶View在RecyclerView中的位置*/
        override fun getPinViewPosition(): Int = 15
        /** 吸顶的时候 true:停止滚动并定位在吸顶位置,false:可以继续fling*/
        override fun stopWhenAdsorbent(): Boolean = false
    })
Double
//recyclerView is ParentRecyclerView
manager = LinearLayoutManager(this)
recyclerView.layoutManager = manager
recyclerView.adapter = adapter

//itemView.recyclerview is ChildRecyclerView as ViewHolder
init {
    val p = itemView.recyclerview.layoutParams
    /** 吸顶高+child recyclerView高 = recyclerView高*/
    val height = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50f, parent.resources.displayMetrics) + 0.5f
    p.height = parent.measuredHeight - height.toInt()
    itemView.recyclerview.layoutParams = p

    val adapter = DemoGroupAdapter()
    for(i in 0 until 50) {
        adapter.addEntity(GroupEntity(VT_TXT, "Child RecyclerView item $i"))
    }
    val recycler = itemView.recyclerview
    recycler.layoutManager = LinearLayoutManager(parent.context)
    recycler.adapter = adapter
}
Viewpager
//recyclerView is ParentRecyclerView
manager = LinearLayoutManager(this)
recyclerView.layoutManager = manager
recyclerView.adapter = adapter

//ViewPager as ViewHolder,ChildRecycler is ViewPager Item
    override fun instantiateItem(container: ViewGroup, position: Int): Any {
    var view :RecyclerView? = null
    while(views.size > 0 && view == null){
        view = views.removeLast()
    }
    if(view == null){
        view = ChildRecyclerView(container.context)
        view.layoutManager = LinearLayoutManager(container.context)
    }
    if(view.adapter == null){
        val adapter = DemoGroupAdapter()
        for(i in 0 until 50) {
            adapter.addEntity(GroupEntity(VT_TXT, "ViewPager嵌套RecyclerView item $i"))
        }
        view.adapter = adapter
    }
    container.addView(view)
    return view
}

LICENSE

MIT License

Copyright (c) 2019 uis

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].