[JAVA] [Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann

Einführung

Als ich das Tutorial beim ersten Start der App anzeigen wollte, suchte ich nach etwas, das intuitiv bedient und verstanden werden konnte, und stieß auf etwas mit dem Namen ** "View Pager" **.

Es scheint, dass Sie so etwas leicht erstellen können, indem Sie die Bibliothek einfügen, aber es kann unpraktisch sein, wenn Sie sie anpassen. Deshalb habe ich versucht, sie selbst zu erstellen, obwohl ich ein Amateur war.

page.gif

Vorbereitung

** "View Pager" ** wird von ** API 22 ** verwendet, also machen Sie CompileSdkVersion ** 22 ** oder höher. Wir möchten dieses Mal auch ** Indicator ** anzeigen, daher werden wir die design support library vorstellen.

app.build


apply plugin: 'com.android.application'

android {
  compileSdkVersion 26
  buildToolsVersion "26.0.1"
  defaultConfig {
    ...
  }
  buildTypes {
    release {
      ...
    }
    debug {
      ...
    }
  }
}

dependencies {
  compile fileTree(include: ['*.jar'], dir: 'libs')
  compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
  compile 'com.android.support:support-v4:26.0.0-alpha1'
  compile 'com.android.support:design:26.0.0-alpha1'
}

Machen Sie eine Grundlage

** "View Pager" ** hat mehrere * Fragmente * auf der Basis und wird verschoben, um sie nach Benutzerbedienung nacheinander anzuzeigen.

Also, diesmal, wenn Sie ** ViewPager ** und ** Indicator ** auf einer Basis platzieren * Aktivität * und Biss * Adapter *, der das * Fragment * so umschaltet, dass es entsprechend der aktuellen * Position * angezeigt wird. Ich denke es ist gut.

Jetzt erstellen wir tatsächlich die Basis * Aktivität *.

MainActivity.java


public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, View.OnClickListener {
  private final static int PAGE_NUM = 3;
  private ViewPager viewPager;
  private TextView textLeft;
  private TextView textRight;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    viewPager = (ViewPager) findViewById(R.id.pager);
    PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());  //Benutzerdefinierter Adapter
    viewPager.setAdapter(adapter);
    viewPager.addOnPageChangeListener(this);  //Listener nach Seitenübergang hinzugefügt

    TabLayout tabLayout = (TabLayout) findViewById(R.id.indicator);
    tabLayout.setupWithViewPager(viewPager, true);

    textLeft = (TextView) findViewById(R.id.text_left);
    textLeft.setOnClickListener(this);  //Fusszeile(links)Hinzufügen Klicken Sie auf Listener
    textRight = (TextView) findViewById(R.id.text_right);
    textRight.setOnClickListener(this);  //Fusszeile(richtig)Hinzufügen Klicken Sie auf Listener
  }

  @Override
  public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
  }

  @Override
  public void onPageSelected(int position) {  //Fußzeilentext wechseln
    if (position == 0) {
      textLeft.setText("Skip");
    } else {
      textLeft.setText("Back");
    }

    if (position == (PAGE_NUM - 1)) {
      textRight.setText("Go!");
    } else {
      textRight.setText("Next");
    }
  }

  @Override
  public void onPageScrollStateChanged(int state) {
  }

  @Override
  public void onClick(View view) {  //Verhalten beim Klicken auf Fußzeilentext
    switch (view.getId()) {
      case R.id.text_left:
        if (viewPager.getCurrentItem() != 0) {  //Wenn es nicht die erste Seite ist, gehen Sie eine zurück
          viewPager.setCurrentItem(viewPager.getCurrentItem() - 1, true);
        }
        break;
      case R.id.text_right:
        if (viewPager.getCurrentItem() != PAGE_NUM) {  //Wenn es nicht die letzte Seite ist, fahren Sie mit einem Blatt fort
          viewPager.setCurrentItem(viewPager.getCurrentItem() + 1, true);
        }
        break;
    }
  }

  private class PagerAdapter extends FragmentPagerAdapter {  //Benutzerdefinierter Adapter
    PagerAdapter(FragmentManager manager) {
      super(manager);
    }

    @Override
    public Fragment getItem(int position) {
      switch (position) {  //Schalten Sie das angezeigte Fragment entsprechend der aktuellen Position
        case 0:
          return new FirstFragment();
        case 1:
          return new SecondFragment();
        case 2:
          return new ThirdFragment();
      }
      return null;
    }

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

Erstellen Sie als Nächstes eine Ansicht.

activity_main.xml


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

  <android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id/footer"/>

  <RelativeLayout
    android:id="@+id/footer"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_alignParentBottom="true"
    android:background="#3F51B5">

    <TextView
      android:id="@+id/text_left"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentStart="true"
      android:layout_centerVertical="true"
      android:layout_marginStart="30dp"
      android:padding="15dp"
      android:text="Skip"
      android:textColor="#FFFFFF"
      android:textSize="18sp"/>

    <android.support.design.widget.TabLayout
      android:id="@+id/indicator"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      app:tabBackground="@drawable/indicator_selector"
      app:tabGravity="center"
      app:tabIndicatorHeight="0dp"/>

    <TextView
      android:id="@+id/text_right"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_alignParentEnd="true"
      android:layout_centerVertical="true"
      android:layout_marginEnd="30dp"
      android:padding="15dp"
      android:text="Next"
      android:textColor="#FFFFFF"
      android:textSize="18sp"/>

  </RelativeLayout>

</RelativeLayout>

Dieses Mal wird ** TabLayout ** der Design Support Library verwendet, um ** Indicator ** anzuzeigen. Außerdem wird ** Indikator ** durch Angabe von app: tabBackground =" @ drawable / indic_selector " implementiert. Unten ist der * Selektor *.

indicator_selector.xml


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_selected="true">
    <shape
      android:innerRadius="0dp"
      android:shape="ring"
      android:thickness="4dp"
      android:useLevel="false">
      <solid android:color="#DEDCDB"/>
    </shape>
  </item>
  <item>
    <shape
      android:innerRadius="0dp"
      android:shape="ring"
      android:thickness="2dp"
      android:useLevel="false">
      <solid android:color="#A59E99"/>
    </shape>
  </item>
</selector>

Erstellen Sie eine Seite zum Anzeigen

Alles was Sie tun müssen, ist Ihre Lieblingsseite zu erstellen, ** Fragment **! Also werde ich es hier weglassen ...

Am Ende

Dieses Mal habe ich es selbst gemacht, ohne eine zusätzliche Bibliothek einzuführen, aber die Welt ist praktisch, und wenn Sie danach suchen, gibt es viele solche Dinge (lacht). Wenn Sie immer noch nicht die finden, die Ihnen gefällt, beziehen Sie sich bitte darauf I würde es schätzen wenn du könntest.

Das nächste Mal möchte ich es mit einem reicheren Gefühl beenden ⊂ ((・ ⊥ ・)) ⊃ ・ Disparitätseffekt ·Animation · Input-Output Wo Sie diesen Bereich herausfordern wollen!

Recommended Posts

[Android] Ich möchte einen ViewPager erstellen, der für Tutorials verwendet werden kann
Ich möchte eine generische Anmerkung für einen Typ erstellen
Ich habe einen THETA API-Client erstellt, der für die Plug-Entwicklung verwendet werden kann
Erstellen Sie ein Seitensteuerelement, das mit RecyclerView verwendet werden kann
Ich habe eine Bibliothek zum Anzeigen von Tutorials auf Android erstellt.
Ich habe Docker als Anfänger für mein Portfolio verwendet, daher hoffe ich, dass sogar 1 mm für jemanden hilfreich ist.
Erstellen Sie eine JAR-Datei, die auf Gradle ausgeführt werden kann
Firebase-Realtime-Datenbank für Android, die mit Kopie verwendet werden kann
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Suchen Sie eine Switch-Anweisung, die in einen Switch-Ausdruck konvertiert werden kann
Ich möchte eine Parkettdatei auch in Ruby erstellen
Ich möchte rekursiv nach Dateien in einem bestimmten Verzeichnis suchen
Mechanismus zum Konvertieren in eine Sprache, die der Browser erkennen kann
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen
Ich möchte Swipeback auf einem Bildschirm verwenden, der XLPagerTabStrip verwendet
Die Geschichte von Collectors.groupingBy, die ich für die Nachwelt behalten möchte
Ich kann keine Verbindung mehr zu einer VM mit einem Docker-Container herstellen, der eine Verbindung über SSH herstellen kann
Ich möchte eine Webanwendung entwickeln!
Ich möchte ein schönes build.gradle schreiben
Glassfish Tuning List, die ich vorerst behalten möchte
Ich möchte einen Unit Test schreiben!
Zusammenfassung der Bibliotheken, die in der jüngsten Android-Entwicklung (2019/11) häufig verwendet zu werden scheinen
So erstellen Sie ein Maven-Repository für 2020
Ich möchte mit Jakarta EE 8 mit Java 11 ein dunkles Web-SNS erstellen
[Rails] "Pry-Rails", die beim Speichern mit der create-Methode verwendet werden können
Beachten Sie, dass VS Code + JUnit 5 unter Windows 10 verwendet werden kann
Eine Notiz, die ich aufgegeben habe, um eine benutzerdefinierte Anmerkung für Lombok zu erstellen
Technologie-Auszug, mit dem EC-Sites in Java-Schulungen erstellt werden können
Ich möchte in der Lage sein, Dateien mit refile mit administrate [rails6] zu lesen.
[Azure] Ich habe versucht, eine Java-App für die Erstellung von kostenlosen Web-Apps zu erstellen. [Anfänger]
[Android] Ich möchte die Qualitätssicherung vereinfachen ... Das stimmt! Lassen Sie uns ein Debug-Menü erstellen!
So erstellen Sie überall eine H2-Datenbank
[Android] Erstellen Sie eine neue Klasse, indem Sie ImageView erben
[Ruby] Ich möchte einen Methodensprung machen!
So erstellen Sie Pagenationen für das "Kaminari" -Array
So erstellen Sie eine Klasse, die Klasseninformationen erbt
Ich möchte eine einfache Wiederholung einer Zeichenkette schreiben
Ich habe versucht, eine LINE-Klon-App zu erstellen
Ich möchte eine Struktur für die Ausnahmebehandlung entwerfen
Organisieren Sie Methoden, die mit StringUtils verwendet werden können
Ich möchte irgendwann sogar in Kotlin sein
RSpec-Sammlung, die ich häufig verwendet habe
[MyBatis] Ich möchte eine Abfrageabfrage einer Tabelle zuordnen, die eine Eins-zu-Viele-Beziehung zu einer verschachtelten Bean hat.
Ich habe versucht, mit Wercker ein Docker-Image zu erstellen und zu veröffentlichen, mit dem GlassFish 5 gestartet wird
Ich möchte PowerMock in einer Klasse verwenden, die parametrisierte Tests und gewöhnliche Tests kombiniert
7 Dinge, die du behalten sollst, damit es kein verdammter Code wird
[Azure] Ich habe versucht, eine kostenlose Java-App zu erstellen ~ Mit FTP verbinden ~ [Anfänger]
Ich möchte eine Methode einer anderen Klasse aufrufen
Ich möchte NetBeans auf einem Mac verwenden → Ich kann es verwenden!
Schreiben einer Klasse, die in Java bestellt werden kann Ein kleines Standard-Memo
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
Ich möchte ein kleines Symbol in Rails verwenden
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen