Android tiene 4 buscapersonas en una pantalla, cada uno de los cuales se puede deslizar, ¿cómo implementarlo?

Android tiene 4 buscapersonas en una pantalla, cada uno de los cuales se puede deslizar, ¿cómo implementarlo?

Puede anidar un ViewGroup deslizable (como RecyclerView o ViewPager) dentro de cada buscapersonas y luego usar un contenedor (como ViewPager) para contener cada buscapersonas. De esta manera, el ViewGroup dentro de cada buscapersonas se puede deslizar de forma independiente, y todo el contenedor (ViewPager) también se puede deslizar para cambiar entre diferentes buscapersonas.

Aquí hay un código de muestra simple:

// 假设有四个 Pager,分别对应四个 RecyclerView
RecyclerView p1 = new RecyclerView(this);
RecyclerView p2 = new RecyclerView(this);
RecyclerView p3 = new RecyclerView(this);
RecyclerView p4 = new RecyclerView(this);

// 设置每个 RecyclerView 的布局和数据适配器

// 将每个 Pager 放入一个集合中便于管理
List<RecyclerView> pagerList = new ArrayList<>();
pagerList.add(p1);
pagerList.add(p2);
pagerList.add(p3);
pagerList.add(p4);

// 创建并配置 ViewPager
ViewPager viewPager = findViewById(R.id.view_pager);
viewPager.setAdapter(new PagerAdapter() {
    @Override
    public int getCount() {
        return pagerList.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        RecyclerView pager = pagerList.get(position);
        container.addView(pager);
        return pager;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        RecyclerView pager = pagerList.get(position);
        container.removeView(pager);
    }
});

En este código de muestra, creamos cuatro RecyclerViews como buscapersonas y los colocamos en una colección. Luego, usamos un contenedor ViewPager para contener estos cuatro buscapersonas y usamos PagerAdapter para asociar ViewPager y Pager. En los métodos instantiateItem y destroyItem de PagerAdapter, agregamos y eliminamos Pager al contenedor ViewPager.

De esta forma se consigue el efecto de cuatro páginas en una pantalla, cada una de las cuales se puede deslizar. Sólo necesitas implementar la lógica deslizante dentro de cada buscapersonas.

Entonces, ¿cómo utilizar un contenedor ViewPager para contener estos cuatro buscapersonas?

Por supuesto, puede utilizar un contenedor ViewPager predeterminado para contener estos cuatro buscapersonas. Este enfoque no es muy diferente del uso de un contenedor ViewPager independiente, pero requiere alguna configuración adicional.

Supongamos que ha definido cuatro buscapersonas, correspondientes a cuatro fragmentos u otras vistas. Ahora puede definir un contenedor ViewPager predeterminado de la siguiente manera:

<androidx.viewpager.widget.ViewPager
    android:id="@+id/view_pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

A continuación, debe definir un PagerAdapter para asociar este contenedor ViewPager con los cuatro buscapersonas, como se muestra a continuación:

public class MyPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> fragments;

    public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
        super(fm);
        this.fragments = fragments;
    }

    @Override
    public int getCount() {
        return fragments.size();
    }

    @Override
    public Fragment getItem(int position) {
        return fragments.get(position);
    }
}

En este PagerAdapter, pasamos una colección de Fragmentos, que contiene los cuatro Buscapersonas que queremos mostrar (si usa otros tipos de Vista, puede modificarlos adecuadamente). En el método getItem, devolvemos el Fragmento correspondiente según la posición.

Finalmente, en su Actividad o Fragmento, debe asociar este PagerAdapter con el contenedor ViewPager, de la siguiente manera:

ViewPager viewPager = findViewById(R.id.view_pager);
List<Fragment> fragments = new ArrayList<>();
fragments.add(new MyFragment1());
fragments.add(new MyFragment2());
fragments.add(new MyFragment3());
fragments.add(new MyFragment4());
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(), fragments);
viewPager.setAdapter(adapter);

En este código de muestra, primero obtenemos el contenedor ViewPager y luego creamos una colección de Fragmentos, que contiene los cuatro buscapersonas que queremos mostrar. A continuación, creamos un PagerAdapter y lo asociamos con el contenedor ViewPager. Finalmente, configuramos el PagerAdapter creado en el contenedor ViewPager.

De esta forma se consigue el efecto de cuatro páginas en una pantalla, cada una de las cuales se puede deslizar. Sólo necesitas implementar la lógica deslizante dentro de cada buscapersonas.

Supongo que te gusta

Origin blog.csdn.net/ck3345143/article/details/130081663
Recomendado
Clasificación