{"id":3486,"url":"https://github.com/TangoAgency/material-intro-screen","last_synced_at":"2025-08-03T20:32:44.662Z","repository":{"id":43258244,"uuid":"68010404","full_name":"TangoAgency/material-intro-screen","owner":"TangoAgency","description":"Inspired by Heinrich Reimer Material Intro and developed with love from scratch ","archived":false,"fork":false,"pushed_at":"2020-09-19T23:53:32.000Z","size":27796,"stargazers_count":2711,"open_issues_count":57,"forks_count":408,"subscribers_count":56,"default_branch":"master","last_synced_at":"2024-12-07T01:11:33.711Z","etag":null,"topics":["android","android-library","material-design","onboarding"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TangoAgency.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-09-12T13:16:19.000Z","updated_at":"2024-12-04T15:43:26.000Z","dependencies_parsed_at":"2022-08-22T16:00:43.163Z","dependency_job_id":null,"html_url":"https://github.com/TangoAgency/material-intro-screen","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangoAgency%2Fmaterial-intro-screen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangoAgency%2Fmaterial-intro-screen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangoAgency%2Fmaterial-intro-screen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TangoAgency%2Fmaterial-intro-screen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TangoAgency","download_url":"https://codeload.github.com/TangoAgency/material-intro-screen/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228567009,"owners_count":17937983,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-library","material-design","onboarding"],"created_at":"2024-01-05T20:16:42.863Z","updated_at":"2024-12-07T05:30:39.348Z","avatar_url":"https://github.com/TangoAgency.png","language":"Java","funding_links":[],"categories":["[Programming]","Library","Java","Libraries","引导图(Intro)"],"sub_categories":["[Programming] - [Android]","GUI"],"readme":"# Android Material Intro Screen\n [ ![Download](https://api.bintray.com/packages/tangoagency/maven/material-intro-screen/images/download.svg) ](https://bintray.com/tangoagency/maven/material-intro-screen/_latestVersion)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/753f46972d8740d1984f8beb7d04fb9d)](https://www.codacy.com/app/TangoAgency/material-intro-screen?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=TangoAgency/material-intro-screen\u0026utm_campaign=badger)\n[![Build Status](https://travis-ci.org/TangoAgency/material-intro-screen.svg?branch=master)](https://travis-ci.org/TangoAgency/material-intro-screen)\n[![Android Arsenal Material Intro Screen](https://img.shields.io/badge/Android%20Arsenal-Material--Intro--Screen-green.svg?style=true)](http://android-arsenal.com/details/1/4368)\n\nMaterial intro screen is inspired by [Material Intro] and developed with love from scratch. I decided to rewrite completely almost all features in order to make Android intro screen easy to use for everyone and extensible as possible.\n## Features\n  - [Easily add new slides][Intro Activity]\n  - [Custom slides][Custom Slide]\n  - [Parallax slides][Parallax Slide]\n  - Easy extensible api\n  - Android TV support!\n  - Material design at it's best!!!\n\n| [Simple slide][SimpleSlide] | [Custom slide][Custom Slide] | [Permission slide][PermissionSlide] | [Finish slide][FinishSlide]\n|:-:|:-:|:-:|:-:|\n| ![Simple slide] | ![Customslide] | ![Permission slide] | ![Finish slide] |\n\n## Usage\n### Step 1:\n#### Add gradle dependecy\n```\ndependencies {\n  compile 'agency.tango.android:material-intro-screen:{latest_release}'\n}\n```\n### Step 2:\n#### First, your [intro activity][Intro Activity] class needs to extend MaterialIntroActivity:\n```java\npublic class IntroActivity extends MaterialIntroActivity\n```\n### Step 3:\n#### Add activity to [manifest][Manifest] with defined theme:\n```xml\n        \u003cactivity\n            android:name=\".IntroActivity\"\n            android:theme=\"@style/Theme.Intro\" /\u003e\n```\n### Step 4: \n#### [Add slides:][Intro Activity]\n```java\n @Override\n    protected void onCreate(@Nullable Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        \n        addSlide(new SlideFragmentBuilder()\n                .backgroundColor(R.color.colorPrimary)\n                .buttonsColor(R.color.colorAccent)\n                .possiblePermissions(new String[]{Manifest.permission.CALL_PHONE, Manifest.permission.READ_SMS})\n                .neededPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION})\n                .image(agency.tango.materialintroscreen.R.drawable.ic_next)\n                .title(\"title 3\")\n                .description(\"Description 3\")\n                .build(),\n                new MessageButtonBehaviour(new View.OnClickListener() {\n                    @Override\n                    public void onClick(View v) {\n                        showMessage(\"We provide solutions to make you love your work\");\n                    }\n                }, \"Work with love\"));\n}\n```\n#### Explanation of SlideFragment usage:\n  - ```possiblePermissions``` \u0026#8702; permissions which are not necessary to be granted\n  - ```neededPersmissions``` \u0026#8702; permission which are needed to be granted to move further from that slide\n  - ```MessageButtonBehaviour``` \u0026#8702; create a new instance only if you want to have a custom action or text on a message button\n\n### Step 5: \n#### Customize Intro Activity:\n  - ```setSkipButtonVisible()``` \u0026#8702; show skip button instead of back button on the left bottom of screen\n  - ```hideBackButton()``` \u0026#8702; hides any button on the left bottom of screen\n  - ```enableLastSlideAlphaExitTransition()``` \u0026#8702; set if the last slide should disapear with alpha hiding effect\n\n#### Customizing view animations: \n\nYou can set enter, default and exit translation for every view in intro activity. To achive this you need to get translation wrapper for chosen view (for example: ```getNextButtonTranslationWrapper()```) and set there new class which will implement ```IViewTranslation```\n```java\ngetBackButtonTranslationWrapper()\n                .setEnterTranslation(new IViewTranslation() {\n                    @Override\n                    public void translate(View view, @FloatRange(from = 0, to = 1.0) float percentage) {\n                        view.setAlpha(percentage);\n                    }\n                });\n```\n#### Available [translation wrappers][TranslationWrapper]:\n- ```getNextButtonTranslationWrapper()```\n- ```getBackButtonTranslationWrapper()```\n- ```getPageIndicatorTranslationWrapper()```\n- ```getViewPagerTranslationWrapper()``` \n- ```getSkipButtonTranslationWrapper()``` \n\n## Custom slides\n#### Of course you are able to implement completely custom slides. You only need to extend SlideFragment and override following functions:\n - ```backgroundColor()```\n - ```buttonsColor()```\n - ```canMoveFurther()``` (only if you want to stop user from being able to move further before he will do some action)\n - ```cantMoveFurtherErrorMessage()``` (as above)\n \n#### If you want to use parallax in a fragment please use one of the below views:\n  - [```ParallaxFrameLayout```][ParallaxFrame]\n  - [```ParallaxLinearLayout```][ParallaxLinear]\n  - [```ParallaxRelativeLayout```][ParallaxRelative]\n\n#### And set there the [app:layout_parallaxFactor][ParallaxFactor] attribute:\n```xml\n\u003cagency.tango.materialintroscreen.parallax.ParallaxLinearLayout\nxmlns:android=\"http://schemas.android.com/apk/res/android\"\u003e\n\n    \u003cImageView\n        android:id=\"@+id/image_slide\"\n        app:layout_parallaxFactor=\"0.6\"/\u003e\n```\n\nAll features which are not available in simple Slide Fragment are shown here: [Custom Slide]\n\n## Things I have used to create this\n - For parallax I have used files from [Material Intro] by [@HeinrichReimer]\n - [InkPageIndicator.java] by [@NickButcher]\n - Images used to create sample app are from [freepik]\n - For over scroll effect on last slide I have partially used [Android-Overscroll-ViewPager]\n \n## Getting Help\n\nTo report a specific problem or feature request, [open a new issue on Github](https://github.com/TangoAgency/material-intro-screen/issues/new).\n\n## Company\n \n[![Facebook](https://github.com/TangoAgency/material-intro-screen/blob/master/images/facebook.png)](https://www.facebook.com/TangoDigitalAgency)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[![Twitter](https://github.com/TangoAgency/material-intro-screen/blob/master/images/twitter.png)](https://twitter.com/Tango_Agency)\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[![LinkedIn](https://github.com/TangoAgency/material-intro-screen/blob/master/images/linkedin.png)](https://www.linkedin.com/company/tango-digital-agency)\n\n[Here](https://github.com/TangoAgency/) you can see open source work developed by Tango Agency.\n \nWhether you're searching for a new partner or trusted team for creating your new great product we are always ready to start work with you. \n\nYou can contact us via contact@tango.agency.\nThanks in advance.\n \n[Custom Slide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/java/agency/tango/materialintro/CustomSlide.java\u003e\n[Material Intro]: \u003chttps://github.com/HeinrichReimer/material-intro/tree/master/library/src/main/java/com/heinrichreimersoftware/materialintro/view/parallax\u003e\n[@HeinrichReimer]: \u003chttps://github.com/HeinrichReimer\u003e\n[InkPageIndicator.java]: \u003chttps://github.com/nickbutcher/plaid/blob/master/app/src/main/java/io/plaidapp/ui/widget/InkPageIndicator.java\u003e\n[@NickButcher]: \u003chttps://github.com/nickbutcher\u003e\n[freepik]: \u003chttp://www.freepik.com/\u003e\n[Simple slide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/images/simple_slide.gif\u003e\n[Customslide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/images/custom_slide.gif\u003e\n[Permission slide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/images/permissions_slide.gif\u003e\n[Finish slide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/images/finish_slide.gif\u003e\n[Intro Activity]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/java/agency/tango/materialintro/IntroActivity.java\u003e\n[Parallax Slide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/res/layout/fragment_custom_slide.xml\u003e\n[PermissionSlide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/java/agency/tango/materialintro/IntroActivity.java#L52\u003e\n[FinishSlide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/java/agency/tango/materialintro/IntroActivity.java#L19\u003e\n[SimpleSlide]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/java/agency/tango/materialintro/IntroActivity.java#L43\u003e\n[ParallaxFrame]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxFrameLayout.java\u003e\n[ParallaxLinear]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxLinearLayout.java\u003e\n[ParallaxRelative]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/material-intro-screen/src/main/java/agency/tango/materialintroscreen/parallax/ParallaxRelativeLayout.java\u003e\n[ParallaxFactor]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/material-intro-screen/src/main/res/layout/fragment_slide.xml#L29\u003e\n[Manifest]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/AndroidManifest.xml#L28\u003e\n[TranslationWrapper]: \u003chttps://github.com/TangoAgency/material-intro-screen/blob/master/material-intro-screen/src/main/java/agency/tango/materialintroscreen/animations/ViewTranslationWrapper.java\u003e\n[Android-Overscroll-ViewPager]: \u003chttps://github.com/iamjiex/Android-Overscroll-ViewPager\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTangoAgency%2Fmaterial-intro-screen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FTangoAgency%2Fmaterial-intro-screen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FTangoAgency%2Fmaterial-intro-screen/lists"}