Aanmeldingsschermen maken voor Android-apps

Wat je gaat creëren

Invoering

Er is geen genie voor nodig om te begrijpen dat een app die ervoor zorgt dat nieuwe gebruikers zich welkom en comfortabel voelen, waarschijnlijk veel populairder zal zijn dan een app die hen verloren en verward laat. Het gevolg is dat veel ontwikkelaars tegenwoordig proberen ervoor te zorgen dat hun gebruikers een leuke onboarding-ervaring hebben.

Als u een innovatieve app ontwikkelt waarvan de functionaliteit en het gebruik mogelijk niet voor de hand ligt voor nieuwe gebruikers, kunt u overwegen een paar onboarding-schermen aan uw app toe te voegen. In deze zelfstudie laat ik u een eenvoudige manier zien om snel dergelijke schermen te maken en toe te voegen aan uw Android-app.

1. Voeg gradiënt afhankelijkheden toe

Voeg eerst de Material Design Library toe als een compileren afhankelijkheid van de build.gradle bestand van de app module zodat u gebruikersinterface-elementen van Android L kunt gebruiken in oudere versies van Android.

java compileer 'com.github.navasmdc: MaterialDesign: 1.5@aar'

Voeg vervolgens een toe compileren afhankelijkheid voor SmartTabLayout, een bibliotheek die een aangepast titelstrookelement biedt voor de ViewPager bestanddeel.

java compileer 'com.ogaclejapan.smarttablayout: bibliotheek: 1.2.1@aar'

We gebruiken ook klassen die behoren tot de Android Support v4-bibliotheek. U hoeft het echter niet handmatig toe te voegen, omdat Android Studio dit standaard toevoegt.

2. Definieer de lay-out van de inboarding Activiteit

Het aan boord gaan Activiteit zal verantwoordelijk zijn voor het weergeven van alle onboarding-schermen. Daarom dit Activiteit zal de volgende widgets hebben:

  • EEN ViewPager Zo kunnen de gebruikers de veeggebaar gebruiken om van het ene onboardingscherm naar het volgende te gaan.
  • EEN ButtonFlat geëtiketteerd Overspringen, waarmee ongeduldige gebruikers het onboarding-proces kunnen overslaan.
  • EEN ButtonFlat geëtiketteerd volgende, die de gebruiker naar het volgende onboarding-scherm brengt.
  • EEN SmartTabLayout die dient als een pagina-indicator voor de ViewPager bestanddeel.

Na het plaatsen van deze widgets in een Relatieve layout en positionering ervan, de code in het lay-out XML-bestand van de onboarding Activiteit zou er als volgt uit moeten zien:

"xml

"

U kunt de opmaak aanpassen aan uw voorkeuren. Ik zal dit lay-outbestand aanroepen activity_onboarding.xml.

3. Definieer de lay-outs van de onboarding-schermen

Voor deze zelfstudie maakt u drie onboarding-schermen. Om de tutorial eenvoudig te houden, hebben de schermen er maar twee Tekstweergave widgets. In een echte app moet je er ook naar streven de onboarding-schermen zo eenvoudig mogelijk te houden om te voorkomen dat nieuwe gebruikers overweldigd raken wanneer ze je app voor de eerste keer openen.

Het lay-out XML-bestand van het eerste scherm heeft een naam onboarding_screen1.xml en heeft de volgende inhoud:

"xml

"

Gebruik dezelfde XML in de lay-outbestanden van de andere twee schermen en geef ze een naam onboarding_screen2.xml en onboarding_screen3.xml. Natuurlijk moet u de tekst eigendom van elk Tekstweergave widget zodat elk onboarding-scherm uniek is.

4. Maak een Fragment voor elk onboarding-scherm

Maak een nieuwe Java-klasse en geef deze een naam OnboardingFragment1.java. Maak er een subklasse van Fragment en negeer het onCreateView methode. Bel vervolgens de opblazen methode om een ​​te maken Uitzicht met behulp van de lay-out die we hebben gedefinieerd in onboarding_screen1.xml en retourneer de Uitzicht. Je klas zou er als volgt uit moeten zien:

"java public class OnboardingFragment1 breidt Fragment uit

@Nullable @Override openbaar View onCreateView (LayoutInflater inflater, ViewGroup-container, Bundel s) return inflater.inflate (R.layout.onboarding_screen1, container, false);  "

De Fragment want je eerste onboarding-scherm is nu klaar. Volg hetzelfde proces om er nog twee te maken Fragment subklassen, OnboardingFragment2.java en OnboardingFragment3.java, die de lay-outs gebruiken die zijn gedefinieerd in onboarding_screen2.xml en onboarding_screen3.xml respectievelijk.

5. Maak de Onboarding Activiteit

Maak een nieuwe Java-klasse en geef deze een naam OnboardingActivity.java. Maak er een subklasse van FragmentActivity en negeer het onCreate methode.

"java public class OnboardingActivity breidt FragmentActivity uit

@Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState);  "

Vervolgens, verklaar a ViewPager, een SmartTabLayout, en twee ButtonFlat widgets als lidvariabelen van de klasse.

java private ViewPager-pager; privé SmartTabLayout-indicator; privé ButtonFlat overslaan; private ButtonFlat volgende;

In de onCreate methode, bel setContentView om de lay-out weer te geven die is gedefinieerd in activity_onboarding.xml en gebruik de findViewById methode om de ledvariabelen te initialiseren.

"java setContentView (R.layout.activity_onboarding);

pager = (ViewPager) findViewById (R.id.pager); indicator = (SmartTabLayout) findViewById (R.id.indicator); skip = (ButtonFlat) findViewById (R.id.skip); next = (ButtonFlat) findViewById (R.id.next); "

U moet nu een maken FragmentStatePagerAdapter dat de ViewPager kan gebruiken om de onboarding-schermen weer te geven. Maak een nieuwe variabele van het type FragmentStatePagerAdapter en noem het adapter. Initialiseer het door het resultaat van de getSupportFragmentManager methode voor zijn constructor. Omdat het een abstracte klasse is, genereert Android Studio automatisch code voor de abstracte methoden, zoals hieronder weergegeven.

"java FragmentStatePagerAdapter-adapter = new FragmentStatePagerAdapter (getSupportFragmentManager ()) @Override openbaar Fragment getItem (int-positie)

@Override public int getCount () ; "

In de getCount methode, stuur het aantal onboarding-schermen terug.

java @Override public int getCount () return 3;

Voeg een ... toe schakelaar verklaring aan de getItem methode om het goede terug te geven Fragment op basis van de waarde van positie.

java @Override openbaar Fragment getItem (int positie) switch (positie) case 0: return onboardingFragment1 (); case 1: return onboardingFragment2 (); case 2: return onboardingFragment3 (); standaard: return null;

Nog steeds in de onCreate methode, associeer de FragmentStatePagerAdapter met de ViewPager door het te bellen setAdapter methode.

java pager.setAdapter (adapter);

Nu dat het ViewPager is klaar, wijs de SmartTabLayout ernaar door het setViewPager methode.

java indicator.setViewPager (pager);

Het is nu tijd om click handlers toe te voegen aan de ButtonFlat widgets. U kunt dit doen met behulp van de setOnClickListener methode, een nieuw exemplaar van de View.OnClickListener klasse eraan.

In de handler van de overspringen knop, bel een methode met de naam finishOnboarding. We zullen deze methode in de volgende stap implementeren.

In de handler van de volgende knop, gebruik setCurrentItem samen met getCurrentItem om naar het volgende onboardingscherm te gaan. Ook als getCurrentItem geeft als resultaat het laatste onboarding-scherm, noem een ​​methode genaamd finishOnboarding. We zullen deze methode in een oogwenk implementeren.

De code voor de handlers van de knoppen zou er als volgt uit moeten zien:

"java skip.setOnClickListener (new View.OnClickListener () @Override public void onClick (View v) finishOnboarding (););

next.setOnClickListener (nieuwe View.OnClickListener () @Override public void onClick (View v) if (pager.getCurrentItem () == 2) // Het laatste scherm eindigtOnboarding (); else pager.setCurrentItem (pager .getCurrentItem () + 1, waar);); "

Misschien wilt u een paar wijzigingen aanbrengen in de lay-out van de onboarding Activiteit, zoals het verwijderen van de overspringen knop en het wijzigen van het label van de volgende knop naar Gedaan wanneer de gebruiker het laatste onboarding-scherm bereikt. U kunt dit doen door een SimpleOnPageChangeListener naar de SmartTabLayout en het overschrijven ervan onPageSelected methode.

java indicator.setOnPageChangeListener (new ViewPager.SimpleOnPageChangeListener () @Override public void onPageSelected (int position) if (position == 2) skip.setVisibility (View.GONE); next.setText ("Done"); else skip.setVisibility (View.VISIBLE); next.setText ("Volgende"););

6. De onboarding-ervaring beëindigen

Wanneer de gebruiker alle onboarding-schermen heeft gezien of ervoor heeft gekozen deze over te slaan, moet u de onboarding-ervaring beëindigen door de finishOnboarding methode (dat is de naam die we in de vorige stap hebben gebruikt).

In de finishOnboarding methode, krijg een verwijzing naar de Gedeelde voorkeuren object van de app en stel a boolean voor de sleutel onboarding_complete naar waar de ... gebruiken putBoolean methode. We zullen deze sleutel in de volgende stap gebruiken om ervoor te zorgen dat gebruikers de onboarding-schermen alleen zien als ze het onboarding-proces niet hebben voltooid.

Maak vervolgens een nieuw voornemen en bel de startActivity methode om de main te starten Activiteit (de Activiteit dat moet openen wanneer de gebruiker op het pictogram van de app klikt).

Tot slot, bel af hebben sluiten OnboardingActivity. Het is wat de implementatie van de finishOnboarding methode moet er als volgt uitzien:

"java private void finishOnboarding () // Krijg de gedeelde voorkeuren SharedPreferences preferences = getSharedPreferences (" my_preferences ", MODE_PRIVATE);

// Stel onboarding_complete in op true preferences.edit () .putBoolean ("onboarding_complete", true) .apply (); // Start de hoofdactiviteit MainActivity Intent main = new Intent (this, MainActivity.class); startActivity (hoofd); // Sluit de OnboardingActivity-afwerking (); "

7. Aan boord gaan Activiteit

Het aan boord gaan Activiteit moet zo vroeg mogelijk worden gestart als een gebruiker die het onboarding-proces niet heeft voltooid, de app opent. Dit betekent dat u de code voor het detecteren van nieuwe gebruikers en het starten ervan gaat toevoegen OnboardingActivity in de onCreate methode van de hoofd van uw app Activiteit.

Door te controleren of de Gedeelde voorkeuren object heeft een sleutel genaamd onboarding_complete waarvan de waarde is waar, u kunt bepalen of de gebruiker het onboarding-proces heeft voltooid. Als de waarde van de sleutel is vals, sluit de main Activiteit onmiddellijk en maak een nieuwe aan voornemen lanceren OnboardingActivity. Bekijk het volgende codeblok om dit concept beter te begrijpen.

"java // De gedeelde voorkeuren ophalen SharedPreferences preferences = getSharedPreferences (" my_preferences ", MODE_PRIVATE);

// Controleer of onboarding_complete onwaar is als (! Preferences.getBoolean ("onboarding_complete", false)) // Start onboarding Activity Intent onboarding = new Intent (this, OnboardingActivity.class); startActivity (onboarding);

// Sluit de hoofdactiviteitsafwerking (); terug te keren; "

8.Update de App Manifest

Als je het nog niet gedaan hebt, verklaar het dan OnboardingActivity in het manifest van de app.

"xml

"

9. Compileren en uitvoeren

U kunt uw app nu compileren en uitvoeren op een Android-apparaat. Omdat dit je eerste run is, zou je de onboarding-schermen moeten zien in plaats van de main Activiteit.

Conclusie

In deze zelfstudie leer je hoe je eenvoudige onboarding-schermen kunt maken en deze kunt toevoegen aan je Android-app. Gebruik deze schermen om heel bondig vragen te beantwoorden, zoals wat uw app kan doen en wanneer deze moet worden gebruikt.

Voor een optimale gebruikerservaring moet het onboarding-proces zo kort mogelijk zijn en moet de gebruiker het op elk gewenst moment kunnen overslaan.