A beautiful way to introduce users to your app
Java
Latest commit 797befa Aug 17, 2016 1 @eoinfogarty committed on GitHub Update README.md
Added Android Arsenal link and Sample apk link
Permalink
Failed to load latest commit information.
app Fix large screens incorrect positioning #1 Aug 16, 2016
gradle/wrapper Initial commit Aug 8, 2016
graphics Resized gif Aug 8, 2016
.gitignore ignore .idea Aug 12, 2016
README.md Update README.md Aug 17, 2016
build.gradle Initial commit Aug 8, 2016
gradle.properties Initial commit Aug 8, 2016
gradlew Initial commit Aug 8, 2016
gradlew.bat Initial commit Aug 8, 2016
settings.gradle Initial commit Aug 8, 2016

README.md

Android Arsenal

Onboarding

A beautiful way to introduce users to you app

Demo

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();

    ...
}

License

Copyright (C) 2016 Eoin Fogarty

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.