Onboarding

A beautiful way to introduce users to you app.

Using a regular ViewPager with a custom transformer with callbacks we can achieve this effect

Sample Apk

Interface

    public interface SceneChangeListener {

        void enterScene(@Nullable ImageView sharedElement, float position);

        void centerScene(@Nullable ImageView sharedElement);

        void exitScene(@Nullable ImageView sharedElement, float position);

        void notInScene();
    }

We then a fragment class that implements the callbacks to react to movement

Fragment

public abstract class BaseSceneFragment extends Fragment
        implements SceneTransformer.SceneChangeListener {

    protected static final String KEY_POSITION = "KEY_POSITION";

    // we have to set a position tag to the root layout of every scene fragment
    // this is so the transformer will know who to make a callback to
    protected void setRootPositionTag(@NonNull View root) {
        root.setTag(getArguments().getInt(KEY_POSITION));
    }

    @Override
    public abstract void enterScene(@Nullable ImageView sharedElement, float position);

    @Override
    public abstract void centerScene(@Nullable ImageView sharedElement);

    @Override
    public abstract void exitScene(@Nullable ImageView sharedElement, float position);

    @Override
    public abstract void notInScene();

    ...
}

GitHub