Sample App:
AppIntro is an Android Library that helps you make a cool intro for your app, like the ones in Google apps.
Watch YouTube video here.
##How to use Add this to your build.gradle:
repositories {
mavenCentral()
}
dependencies {
compile 'com.github.paolorotolo:appintro:4.0.0'
}
Create a new Activity that extends AppIntro:
public class IntroActivity extends AppIntro {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Add your slide fragments here.
// AppIntro will automatically generate the dots indicator and buttons.
addSlide(firstFragment);
addSlide(secondFragment);
addSlide(thirdFragment);
addSlide(fourthFragment);
// Instead of fragments, you can also use our default slide
// Just set a title, description, background and image. AppIntro will do the rest.
addSlide(AppIntroFragment.newInstance(title, description, image, backgroundColor));
// OPTIONAL METHODS
// Override bar/separator color.
setBarColor(Color.parseColor("#3F51B5"));
setSeparatorColor(Color.parseColor("#2196F3"));
// Hide Skip/Done button.
showSkipButton(false);
setProgressButtonEnabled(false);
// Turn vibration on and set intensity.
// NOTE: you will probably need to ask VIBRATE permission in Manifest.
setVibrate(true);
setVibrateIntensity(30);
}
@Override
public void onSkipPressed(Fragment currentFragment) {
super.onSkipPressed(currentFragment);
// Do something when users tap on Skip button.
}
@Override
public void onDonePressed(Fragment currentFragment) {
super.onDonePressed(currentFragment);
// Do something when users tap on Done button.
}
@Override
public void onSlideChanged(@Nullable Fragment oldFragment, @Nullable Fragment newFragment) {
super.onSlideChanged(oldFragment, newFragment);
// Do something when the slide changes.
}
}
Finally, declare the activity in your Manifest like so:
<activity android:name="com.example.example.intro"
android:label="@string/app_intro" />
Do not declare the intro as your main app launcher unless you want the intro to launch every time your app starts. Refer to the wiki for an example of how to launch the intro once from your main activity.
If you want to try new layout (as seen in Google's Photo app), just extend AppIntro2 in your Activity. That's all :)
public class IntroActivity extends AppIntro2 {
// ...
}
### Easy implementation of Slide Fragments As you can see, things have changed in AppIntro 3.0.0. Now it's so easy to add new slides to AppIntro.
For example: * Copy the class **SampleSlide** from my [example project](https://github.com/PaoloRotolo/AppIntro/blob/master/example/src/main/java/com/github/paolorotolo/appintroexample/SampleSlide.java). * Add a new slide with ```addSlide(SampleSlide.newInstance(R.layout.your_slide_here));```
There's no need to create one class for fragment anymore. :)
No problem, just use this method and AppIntro will generate a new slide for you.
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
// ...
addSlide(AppIntroFragment.newInstance(title, description, image, backgroundColor));
}
AppIntro comes with some pager animations. Choose the one you like and then active it with:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
// ...
setFadeAnimation();
}
Available animations:
setFadeAnimation()
setZoomAnimation()
setFlowAnimation()
setSlideOverAnimation()
setDepthAnimation()
If you want to create nice parallax effect or your own custom animation, create your own PageTransformer and call:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
// ...
setCustomTransformer(transformer);
}
Click here to see how I did it in the example app.
Android 6.0 introduced a new permissions model for developers. Now all your apps have to request permissions which can be a tedious thing to implement.
However, AppIntro simplifies this down to one single line of code!
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
// ...
// Ask for CAMERA permission on the second slide
askForPermissions(new String[]{Manifest.permission.CAMERA}, 2); // OR
// This will ask for the camera permission AND the contacts permission on the same slide.
// Ensure your slide talks about both so as not to confuse the user.
askForPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_CONTACTS}, 2);
}
We are using icons made by Freepik from www.flaticon.com is licensed by CC 3.0 BY
NOTE: It is advised that you only put one permission in the String array unless you want the app to ask for multiple permissions on the same slide.
See example code here on GitHub. You can also see it live. Download this app on Google Play.
Do you need inspiration? A lot of apps are using AppIntro out there:
Planets
Hermes - Material IRC Client
If you are using AppIntro in your app and would like to be listed here, please let us know by opening a new issue!
- Numix Hermes
- Audio Reminder Pro
- Wizr Daily Quotes
- Planets
- Weather Delta
- PDF Me
- Circles
- Task Master
- Smoothie Recipes
- SideBar Notes
- Just food
- AlarmSMS
- Aware
- neutriNote
- Handwriting Note
- Friends Roulette
- Karting Tools
- ChineseDictionary (粵韻漢典離線粵語普通話發聲中文字典)
- Sifter: the Insta of Timehop
- Ludus
- Snipit
- Service Notes
- Salary Barometer
- Best Business Idea
- Wi-Fi Password Reminder
- Safe Notes
- Xpaper
- Find My Parked Car
- BoxPlay Music Player
- Vape Tool Pro
- NebelNiek Soundboard
- sdiwi
- Helal ve Sağlıklı Yaşam
- HipCar
- Schematiskt
- Third Eye
- Crypton
- Web Video Caster
- Sask. Geo-Memorial
- SchoolBox
- Fitness Challenge
- ICE: Emergency Button
- Filmy - Your Movie Guide
- HEBF Optimizer ▪ Root
- Wifi Captive Login