首页 > 其他分享 >Android RecyclerView实现ViewPager效果,用LinearSnapHelper

Android RecyclerView实现ViewPager效果,用LinearSnapHelper

时间:2023-02-04 12:01:58浏览次数:43  
标签:LinearSnapHelper val ViewPager binding Android RecyclerView layoutManager snapHe


文章目录

  • ​​LinearSnapHelper效果​​

LinearSnapHelper效果

SnapHelper是RecyclerView功能的一种拓展,使RecyclerView滑动行为类似ViewPager,无论怎么滑动最终停留在某页正中间。ViewPager一次只能滑动一页,RecyclerView+SnapHelper方式可以一次滑动好几页,且最终都停留在某页正中间。非常实用和酷炫。

SnapHelper的实现原理是监听RecyclerView.OnFlingListener中的onFling接口。LinearSnapHelper是抽象类SnapHelper的具体实现

Android RecyclerView实现ViewPager效果,用LinearSnapHelper_抽象类

上面的效果只需下面几行代码即可

val snapHelper = LinearSnapHelper()
//保证recyclerView滚动停止是,可以停在中间位置,类似于viewPager效果
snapHelper.attachToRecyclerView(binding.recycler)

整体代码非常少,如下:

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

val layoutManager = LinearLayoutManager(this, RecyclerView.HORIZONTAL, false)
binding.recycler.layoutManager = layoutManager
binding.recycler.adapter = MyAdapter(listOf("1", "2", "3", "4", "5", "6", "7", "8"))

val snapHelper = LinearSnapHelper()
//保证recyclerView滚动停止是,可以停在中间位置,类似于viewPager效果
snapHelper.attachToRecyclerView(binding.recycler)

binding.btn.setOnClickListener {
//获取中间位置的position
val view = snapHelper.findSnapView(layoutManager)
if (view != null) {
val position = layoutManager.getPosition(view)
Toast.makeText(this, " $position", Toast.LENGTH_SHORT).show()
}
}
}
}


标签:LinearSnapHelper,val,ViewPager,binding,Android,RecyclerView,layoutManager,snapHe
From: https://blog.51cto.com/zhaoyanjun/6037095

相关文章

  • Android 动画
    在App中合理地使用动画能够获得友好愉悦的用户体验,Android中的动画有View动画、属性动画、帧动画、布局动画、转场动画等,在5.x以后有又新增了矢量动画,这些动画在平常开发中......
  • 65Android 调试桥 (adb)命令
    Android调试桥(adb)网络连接通过TCP/IP连接设备adbconnect<ip:port>断开已有的TCP/IP连接adbdisconnect<ip:port>监听设备上指定的端口号adbtcpip<port>......
  • Android笔记--Room增删改查
    添加查询删除修改......
  • Android笔记--Jetpack Room
    JetpackRoom使用Room简化数据库操作:(基于SQLite)在使用Room之前:使用Room框架有以下几个步骤:1、实体类加@Entity注解@PrimaryKey(autoGenerate=true)是自动增长的意......
  • Android集成并开启手写笔识别
    1、首先,需要下载PdfxchangeViewSDK,然后将其集成到Android项目中;2、在Android项目中,添加以下依赖:implementation'com.github.PDF-XChange-Labs:PDF-XChange-View-A......
  • Android笔记--Application
    Application生命周期在APP运行过程中有且仅有一个Application对象贯穿整个生命周期Application全局变量实例化:声明全局变量:......
  • Android笔记--外部存储空间
    存储文件的操作外部存储空间私有存储空间和公共存储空间外部存储空间分为私有+公有保存文件到外部存储空间的相关代码操作:私有空间:公有空间:记得增加权限(Android......
  • uniapp不介入第三方,Android调用各种权限
    代码:onLaunch:function(){console.log('onLaunch')//监听底部中间菜单的事件uni.onTabBarMidButtonTap(()=>{......
  • 【android】四种常见的POST提交数据方式
    HTTP/1.1协议规定的HTTP请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT这几种。其中POST一般用来向服务端提交数据,本文主要讨论POST提交数据......
  • 【android】Android 网络框架--Retrofit
    1、导入Jar包compile'com.google.code.gson:gson:2.8.0'compile'com.squareup.retrofit2:retrofit:2.1.0'compile'com.squareup.okhttp3:okhttp:3.4.2'......