Android PagerSnapHelper改造RecyclerView为ViewPage,kotlin

冷不防 2023-10-12 16:38 151阅读 0赞

Android PagerSnapHelper改造RecyclerView为ViewPage,kotlin

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:id="@+id/recycler_view"
  5. android:layout_width="match_parent"
  6. android:layout_height="wrap_content"
  7. tools:context=".MainActivity" />
  8. import android.graphics.Color
  9. import android.os.Bundle
  10. import android.view.LayoutInflater
  11. import android.view.View
  12. import android.view.ViewGroup
  13. import android.widget.TextView
  14. import androidx.appcompat.app.AppCompatActivity
  15. import androidx.recyclerview.widget.LinearLayoutManager
  16. import androidx.recyclerview.widget.PagerSnapHelper
  17. import androidx.recyclerview.widget.RecyclerView
  18. class MainActivity : AppCompatActivity() {
  19. override fun onCreate(savedInstanceState: Bundle?) {
  20. super.onCreate(savedInstanceState)
  21. setContentView(R.layout.activity_main)
  22. var rv = findViewById<RecyclerView>(R.id.recycler_view)
  23. var layoutManager: LinearLayoutManager = LinearLayoutManager(this).apply {
  24. this.orientation = LinearLayoutManager.HORIZONTAL
  25. }
  26. rv.layoutManager = layoutManager
  27. var adapter = MyAdapter()
  28. rv.adapter = adapter
  29. //这将会让RecyclerView滚动时候完整展示一个item
  30. //val snapHelper = LinearSnapHelper()
  31. //snapHelper.attachToRecyclerView(rv)
  32. //这将会使RecyclerView滚动的效果如图ViewPager2一样
  33. val snapHelper = PagerSnapHelper()
  34. snapHelper.attachToRecyclerView(rv)
  35. //启动后将RecyclerView移到到指定位置。
  36. layoutManager.scrollToPositionWithOffset(5, 0)
  37. }
  38. class MyAdapter : RecyclerView.Adapter<MyVH>() {
  39. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyVH {
  40. var view = LayoutInflater.from(parent.context)
  41. .inflate(android.R.layout.simple_list_item_2, parent, false)
  42. view.setBackgroundColor(Color.LTGRAY)
  43. view.minimumHeight = 800
  44. return MyVH(view)
  45. }
  46. override fun getItemCount(): Int {
  47. return Int.MAX_VALUE
  48. }
  49. override fun onBindViewHolder(holder: MyVH, position: Int) {
  50. holder.t1.text = "$position"
  51. holder.t2.text = "@$position"
  52. }
  53. }
  54. class MyVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
  55. var t1: TextView = itemView.findViewById(android.R.id.text1)
  56. var t2: TextView = itemView.findViewById(android.R.id.text2)
  57. init {
  58. t1.textSize = 50.0f
  59. t2.textSize = 30.0f
  60. }
  61. }
  62. }

43d55ec70f614e37b6cde36a99595e3c.png

Android:GestureDetector.SimpleOnGestureListener,onFling,onScroll,velocityX,Y&distanceX,Y,kotlin_zhangphil的博客-CSDN博客Android不用OnScrollListener采用GestureDetector结合OnTouchListener实现ListView下拉/上拉刷新通常Android的ListView的下拉/上拉刷新实现,使用OnScrollListener比较简单,比如如果要实现下拉见顶刷新,思路是在OnScrollListener判断当前ListView的滚动状态,如果滚动停止,则将此时Lis。favicon32.icohttps://blog.csdn.net/zhangphil/article/details/130812011

Android RecyclerView measureTimeMillis Glide GridLayoutManager,kotlin_zhangphil的博客-CSDN博客基于Android官方Paging Library的RecyclerView分页加载框架我之前写了一篇RecyclerView分页加载机制的文章,是基于Android官方的AsyncListUtil实现的,详情见附录文章1。基于Android官方Paging Library的RecyclerView分页加载框架我之前写了一篇RecyclerView分页加载机制的文章,是基于Android官方的AsyncListUtil实现的,详情见附录文章1。【代码】Android Paging 3,kotlin(1)favicon32.icohttps://blog.csdn.net/zhangphil/article/details/131051138Android ViewPager2嵌套RecyclerView性能优化RecycledViewPool,kotlin_zhangphil的博客-CSDN博客ViewPager2和Fragment新的可见性及懒加载解决方案,旨在解决ViewPager(ViewPager2)只有当前Fragment唯一可见时候网络刷新或绘图。注意:过去的setUserVisibleHint()已被废弃,开发者不要再使用基于setUserVisibleHint()解决Fragment可见性和懒加载(或延迟加载)的场景。ViewPager2和Fragment可见性及懒加载解决方案_viewpager2 懒加载_zhangphil的博客-CSDN博客。favicon32.icohttps://blog.csdn.net/zhangphil/article/details/131231747

发表评论

表情:
评论列表 (有 0 条评论,151人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Android RecyclerView

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列。该系列引用了《Android开发艺术探索》以及《深入理解