uso RecyclerView SnapHelper acumulación ViewPager

RecyclerView añadió SnapHelper esta clase de ayuda en la versión 24.2.0 para RecyclerView ayuda al final del desplazamiento de alineación de artículos a un lugar.

SnapHelper es una clase abstracta, subclase de las ofertas oficiales un LinearSnapHelper, se puede hacer la parada de artículo apropiado rodar cuando RecyclerView estancia posición neutral. 25.1.0 la versión oficial también proporciona una PagerSnapHelper subclase, puede hacer RecyclerView como ViewPager el mismo efecto, sólo se puede deslizar uno, y centrada.

Ejemplo:

diseño de escritura Actividad: activity_snap

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<androidx.recyclerview.widget.RecyclerView
    android:id="@+id/recycler"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

</LinearLayout>

diseño elemento escritura: item_list

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="500dp"
    android:background="#00ff00"
    android:gravity="center"
    android:orientation="vertical"
    android:layout_margin="5dp">

    <Button
        android:id="@+id/start"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="点击按钮跳转" />

</LinearLayout>

inicialización RecyclerView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_snap)

        recycler = findViewById(R.id.recycler)

        val manager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
        recycler.layoutManager = manager
        recycler.adapter = object : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
                val item = LayoutInflater.from(parent.context).inflate(R.layout.item_list, parent, false)
                item.setOnClickListener {
                    startActivity(Intent(parent.context, SwipeActivity::class.java))
                }
                return Holder(item)
            }

            override fun getItemCount(): Int {
                return 50
            }

            override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {

            }

            inner class Holder(itemView: View) : RecyclerView.ViewHolder(itemView) {
                init {

                }
            }

        }
        //LinearSnapHelper:使当前Item居中显示,可以惯性滑动
        val snapHelper = LinearSnapHelper()
        snapHelper.attachToRecyclerView(recycler)
    }

visualizar:

LinearSnapHelper

uso PagerSnapHelper

        //PagerSnapHelper:像ViewPager一样的效果,每次只能滑动一页。
        val snapHelper2 = PagerSnapHelper()
        snapHelper2.attachToRecyclerView(recycler)

visualizar:

PagerSnapHelper

Publicados 122 artículos originales · ganado elogios 238 · vistas 760 000 +

Supongo que te gusta

Origin blog.csdn.net/c__chao/article/details/97373094
Recomendado
Clasificación