[JAVA] Principes de base de ViewPager

Environnement de vérification

Le contenu de cet article a été vérifié dans l'environnement suivant.

Aperçu

Une vue qui peut être changée en utilisant Fragment comme page. Comme ListView, ViewPager doit être utilisé en combinaison avec Adapter.

Une vue qui hérite de cette vue vous permet également de faire glisser l'écran pour changer de page et d'onglet. Cette fois, je vais expliquer l'utilisation de base de ViewPager.

ViewPager_01 .png

App à créer

Une application qui vous permet de basculer entre les pages d'auto-introduction en faisant glisser

Image complète

ViewPager_02 .png

Liste des fichiers créés

nom de fichier La description
MainActivity.java
activity_main.xml
ViewPager Disposition de l'écran contenant les vues et les boutons et leur activité
NameFragment.java
fragment_name.xml
Disposition de la première page et de son fragment (page de nom)
AgeFragment.java
fragment_age.xml
Disposition de la deuxième page et de son fragment (page d'âge)
FoodFragment.java
fragment_food.xml
Mise en page de la 3ème page et de son Fragment (page de nourriture préférée)
UserInfoViewPagerAdapter.java Adaptateur générant un fragment lors du balayage

Détails de la page de nom

Le code de la page de nom ressemble à ceci:

Fichier de mise en page

fragment_name.xml


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="jp.co.casareal.sample.viewpagersample.fragment.NameFragment">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="La première page"
        android:textSize="20sp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Le nom est Casa Real Taro."
        android:textSize="20sp" />

</LinearLayout>

Code source Java

NameFragment.java


package jp.co.casareal.sample.viewpagersample.fragment;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import jp.co.casareal.sample.viewpagersample.R;

/**
 * A simple {@link Fragment} subclass.
 */
public class NameFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_name, container, false);
    }

}

Détails de l'adaptateur

Il existe deux types d'adaptateurs. «FragmentPagerAdapter» et «FragmentStatePagerAdapter». Chaque opération étant différente, il est nécessaire de la sélectionner en fonction de l'application à créer. Lorsque la page est commutée, «FragmentPagerAdapter» conserve le fragment affiché dans la mémoire. «FragmentStatePagerAdapter» rejette Fragment lorsque la page est commutée. Comme le nombre de pages est faible cette fois, j'ai utilisé "FragmentPagerAdapter".

UserInfoViewPagerAdapter.java


package jp.co.casareal.sample.viewpagersample.adapter;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import jp.co.casareal.sample.viewpagersample.fragment.AgeFragment;
import jp.co.casareal.sample.viewpagersample.fragment.FoodFragment;
import jp.co.casareal.sample.viewpagersample.fragment.NameFragment;

/**
 * Created by naoi on 2017/04/24.
 */

public class UserInfoViewPagerAdapter extends FragmentPagerAdapter {
    private static final int PAGE_NUM = 3;

    public UserInfoViewPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        Fragment fragment = null;
        switch (position){
            case 0:
                fragment = new NameFragment();
                break;
            case 1:
                fragment = new AgeFragment();
                break;
            default:
                fragment = new FoodFragment();
        }
        return fragment;
    }

    @Override
    public int getCount() {
        return PAGE_NUM;
    }
}

Détails de l'activité qui contient le ViewPager

Fichier de mise en page

activity_main.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="jp.co.casareal.sample.viewpagersample.MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:onClick="onClickGoToTop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Vers la première page"/>
        <Button
            android:onClick="onClickNext"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="à la page suivante"/>
    </LinearLayout>
    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

Code source Java

Le point ici est que si vous voulez changer la page avec le code source Java, vous pouvez le changer avec la méthode setCurrentItem () de Adapter.

 MainActivity.java


package jp.co.casareal.sample.viewpagersample;

import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

import jp.co.casareal.sample.viewpagersample.adapter.UserInfoViewPagerAdapter;

public class MainActivity extends AppCompatActivity {

    private ViewPager pager;

    private FragmentPagerAdapter adapter;

    private int currentPage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        pager = (ViewPager) findViewById(R.id.pager);

        adapter = new UserInfoViewPagerAdapter(getSupportFragmentManager());
        pager.setAdapter(adapter);
        currentPage = 0;

    }

    public void onClickNext(View view) {
        currentPage ++;
        pager.setCurrentItem(currentPage);
    }

    public void onClickGoToTop(View view) {
        currentPage = 0;
        pager.setCurrentItem(currentPage);
    }
}

référence

https://developer.android.com/reference/android/support/v13/app/FragmentPagerAdapter.html

https://developer.android.com/training/implementing-navigation/lateral.html

Recommended Posts

Principes de base de ViewPager
Notions de base sur les rails
Bases de Ruby
Notions de base sur les fragments
Principes de base de JPA 1
Principes de base de Docker
Les bases de Java
Les bases de Java
Bases de JavaScript
Principes de base de JPA 2
Les bases de Java
Principes de base de RecyclerView
Rails CSV Basic
Principes de base du routage des rails
Principes de base de la base de données Rails
Principes de base de l'enregistreur de rails
bases de la programmation Java
Bases de Ruby
Principes de base de Java JAR
Notions de base orientées objet (Java)
bases de vim (gitbush)
Bases des expressions régulières
Principes de base du traitement parallèle Java
Principes de base de Rspec [Rails]
Principes de base de l'API Stream