Inspired by Heinrich Reimer Material Intro and developed with love from scratch

Overview

Android Material Intro Screen

Download Codacy Badge Build Status Android Arsenal Material Intro Screen

Material 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.

Features

Simple slide Custom slide Permission slide Finish slide
Simple slide Customslide Permission slide Finish slide

Usage

Step 1:

Add gradle dependecy

dependencies {
  compile 'agency.tango.android:material-intro-screen:{latest_release}'
}

Step 2:

First, your intro activity class needs to extend MaterialIntroActivity:

public class IntroActivity extends MaterialIntroActivity

Step 3:

Add activity to manifest with defined theme:

        <activity
            android:name=".IntroActivity"
            android:theme="@style/Theme.Intro" />

Step 4:

Add slides:

 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        addSlide(new SlideFragmentBuilder()
                .backgroundColor(R.color.colorPrimary)
                .buttonsColor(R.color.colorAccent)
                .possiblePermissions(new String[]{Manifest.permission.CALL_PHONE, Manifest.permission.READ_SMS})
                .neededPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION})
                .image(agency.tango.materialintroscreen.R.drawable.ic_next)
                .title("title 3")
                .description("Description 3")
                .build(),
                new MessageButtonBehaviour(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        showMessage("We provide solutions to make you love your work");
                    }
                }, "Work with love"));
}

Explanation of SlideFragment usage:

  • possiblePermissions ⇾ permissions which are not necessary to be granted
  • neededPersmissions ⇾ permission which are needed to be granted to move further from that slide
  • MessageButtonBehaviour ⇾ create a new instance only if you want to have a custom action or text on a message button

Step 5:

Customize Intro Activity:

  • setSkipButtonVisible() ⇾ show skip button instead of back button on the left bottom of screen
  • hideBackButton() ⇾ hides any button on the left bottom of screen
  • enableLastSlideAlphaExitTransition() ⇾ set if the last slide should disapear with alpha hiding effect

Customizing view animations:

You 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

getBackButtonTranslationWrapper()
                .setEnterTranslation(new IViewTranslation() {
                    @Override
                    public void translate(View view, @FloatRange(from = 0, to = 1.0) float percentage) {
                        view.setAlpha(percentage);
                    }
                });

Available translation wrappers:

  • getNextButtonTranslationWrapper()
  • getBackButtonTranslationWrapper()
  • getPageIndicatorTranslationWrapper()
  • getViewPagerTranslationWrapper()
  • getSkipButtonTranslationWrapper()

Custom slides

Of course you are able to implement completely custom slides. You only need to extend SlideFragment and override following functions:

  • backgroundColor()
  • buttonsColor()
  • canMoveFurther() (only if you want to stop user from being able to move further before he will do some action)
  • cantMoveFurtherErrorMessage() (as above)

If you want to use parallax in a fragment please use one of the below views:

And set there the app:layout_parallaxFactor attribute:

<agency.tango.materialintroscreen.parallax.ParallaxLinearLayout
xmlns:android="http://schemas.android.com/apk/res/android">

    <ImageView
        android:id="@+id/image_slide"
        app:layout_parallaxFactor="0.6"/>

All features which are not available in simple Slide Fragment are shown here: Custom Slide

Things I have used to create this

Getting Help

To report a specific problem or feature request, open a new issue on Github.

Company

Facebook     Twitter     LinkedIn

Here you can see open source work developed by Tango Agency.

Whether 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.

You can contact us via [email protected]. Thanks in advance.

Comments
  • canMoveFurther on last slide: swipe still working

    canMoveFurther on last slide: swipe still working

    @radzio If have a customSlide as lastslide, excatly like your example: https://github.com/TangoAgency/material-intro-screen/blob/master/app/src/main/java/agency/tango/materialintro/CustomSlide.java

    In some cases it is possible to swipe it away without recognizing the canMoveFurther() condition (in this case, accepting the terms of use)

    bug 
    opened by Scrounger 14
  • Slides displayed are semi-transparent

    Slides displayed are semi-transparent

    I tried implementing both Simple Slide and even Custom Slide. I both cases, the displayed Slide appears semi-transparent. Here is the image for Reference.

    screenshot_1481084056

    There is nothing different from your Code

    public class TourActivity extends MaterialIntroActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            enableLastSlideAlphaExitTransition(true);
    
            addSlide(new TourOneFragment());
        }
    
        @Override
        public void onFinish() {
            super.onFinish();
            startActivity(new Intent(this, MainActivity.class));
        }
    }
    

    Am I missing something?

    Regards

    opened by CeJienAJPC 7
  • How to set image full screen width and height

    How to set image full screen width and height

    Hi,

    I'm showing a serie of images that should be fiting the whole screen. It fills the height but not the width, staying with spaces on both sides.

    Here is my XML: ` <agency.tango.materialintroscreen.parallax.ParallaxLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/primary_bar" android:orientation="vertical" android:gravity="center">

    <ImageView
        android:id="@+id/slide1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scaleType="fitCenter"
        android:src="@drawable/slide1" />
    

    </agency.tango.materialintroscreen.parallax.ParallaxLinearLayout>`

    question 
    opened by sergiobr 5
  • Crash when using more than 3 pages

    Crash when using more than 3 pages

    It crashes when you use more than 3 pages, scroll to the last page, back to the first page and then to the next page. It is reproducable!

    04-27 08:47:27.202 2199-2199/com.laudien.p1xelfehler.batterywarner_pro E/AndroidRuntime: FATAL EXCEPTION: main Process: com.laudien.p1xelfehler.batterywarner_pro, PID: 2199 android.view.InflateException: Binary XML file line #25: Error inflating class fragment at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) at android.view.LayoutInflater.inflate(LayoutInflater.java:492) at android.view.LayoutInflater.inflate(LayoutInflater.java:397) at com.laudien.p1xelfehler.batterywarner.Activities.IntroActivity.PreferencesSlide.onCreateView(PreferencesSlide.java:21) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984) at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626) at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166) at android.support.v4.view.ViewPager.populate(ViewPager.java:1268) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:668) at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:630) at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:611) at agency.tango.materialintroscreen.MaterialIntroActivity$5.onClick(MaterialIntroActivity.java:219) at android.view.View.performClick(View.java:4438) at android.view.View$PerformClick.run(View.java:18422) at android.os.Handler.handleCallback(Handler.java:733) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5001) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalArgumentException: Binary XML file line #25: Duplicate id 0x7f0f00d7, tag null, or parent id 0xffffffff with another fragment for com.laudien.p1xelfehler.batterywarner.Activities.SettingsActivity.SettingsFragment at android.app.Activity.onCreateView(Activity.java:4791) at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36) at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689) at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)  at android.view.LayoutInflater.inflate(LayoutInflater.java:492)  at android.view.LayoutInflater.inflate(LayoutInflater.java:397)  at com.laudien.p1xelfehler.batterywarner.Activities.IntroActivity.PreferencesSlide.onCreateView(PreferencesSlide.java:21)  at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)  at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595)  at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:758)  at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)  at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)  at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)  at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984)  at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626)  at android.support.v4.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:166)  at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)  at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:668)  at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:630)  at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:611)  at agency.tango.materialintroscreen.MaterialIntroActivity$5.onClick(MaterialIntroActivity.java:219)  at android.view.View.performClick(View.java:4438)  at android.view.View$PerformClick.run(View.java:18422)  at android.os.Handler.handleCallback(Handler.java:733)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:136)  at android.app.ActivityThread.main(ActivityThread.java:5001)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:515)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)  at dalvik.system.NativeStart.main(Native Method) 

    opened by resignedScientist 5
  • Gradle sync throwing error

    Gradle sync throwing error

    I tried syncing with the 0.0.5 version and the gradle itself is giving the error:

    C:\Users\Srujan\AndroidStudioProjects\MsImpLinksV2.1\app\build\intermediates\res\merged\debug\values-v11\values-v11.xml
    Error:(73, 54) No resource found that matches the given name (at 'android:actionModeCloseDrawable' with value '@drawable/abc_ic_ab_back_mtrl_am_alpha').
    Error:(73, 54) No resource found that matches the given name (at 'android:actionModeCloseDrawable' with value '@drawable/abc_ic_ab_back_mtrl_am_alpha').
    Error:Execution failed for task ':app:processDebugResources'.
    com.android.ide.common.process.ProcessException: Failed to execute aapt
    Information:BUILD FAILED
    
    invalid wontfix 
    opened by srujanb 5
  • Colors go crazy on last slide when device is rotated

    Colors go crazy on last slide when device is rotated

    Rotating the Android device when the last slide of a series is displayed results in the colors going crazy. Easily reproduced with the supplied sample app.

    (This may be related to bug #45 (Single slide intro calculates wrong background color).

    duplicate 
    opened by GaryCuevas 5
  • not ok with android support appcompat v7:26.1.0

    not ok with android support appcompat v7:26.1.0

    Dear TangoAgency, Your material-intro-screen has error with dependencies { ... implementation 'com.android.support:appcompat-v7:26.1.0' ...} please, kindly fix it

    opened by ThitSarNL 4
  • Title String Error

    Title String Error

    Hey, I'm Furkan. I get an error when I put a string in " .title " There is error;

    description (java.lang.String) in SlideFragmentBuilder cannot be applied to (int)

    opened by furkankurt 4
  • add the library to my project

    add the library to my project

    Sorry I'm starting to program on android and I don't know how to add the library to my project. The IDE says me that "compile" is obsolete when I add the dependency. I should use implementation but when I use it, it gives me this error:

    ERROR: Failed to resolve: agency.tango Affected Modules: app

    these are my dependencies:

    dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' implementation 'agency.tango.android:material-intro-screen:{latest_release}' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }

    Sorry, I'm starting to program on Android and I do not know how to add the library to my project. The IDE says that "compile" is obsolete when I add dependency. I should use the implementation, but when I use it, I get this error:

    ERROR: Error in resolving: agency.tango Modules affected: application

    These are my dependencies:

    dependencies { implementation fileTree (dir: 'libs', includes: ['* .jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint: design-restriction: 1.1.3' ** implementation 'agency.tango.android:material-intro-screen:{latest_release}'** Implementation 'junit: junit: 4.12' androidTestImplementation 'com.android.support.test: runner: 1.0.2' androidTestImplementation 'com.android.support.test.espresso: espresso-core: 3.0.2' }

    Do I have to add something else?

    question 
    opened by rulogas 3
  • Error message doesn't display on failed swipe

    Error message doesn't display on failed swipe

    I think this library is great, but there is one thing that bugs me.

    I made a custom fragment with some checkboxes, and I have overridden canMoveFurther and cantMoveFurtherErrorMessage. When the condition for canMoveFurther is not met, both pushing the button and trying to swipe to the next fragment fail (as is expected). However, the error message is only displayed if they push the button. If I try to swipe to the next fragment, nothing happens (I don't get the next fragment and the error message doesn't display). Are there plans to display the error message on swipe as well? That seems like it would be the desired behavior.

    I'm not sure if the same happens on non-custom fragments, as I haven't tested, but it seems like it would.

    opened by coreywoodfield 3
  • support 23.3.0

    support 23.3.0

    Hi I added this library to my project and I tried to build gradle but it needed support libraries 25.0.1 while I use 23.3.0 I wanna keep using this so is there any way that I can use this library and keep using support library version 23.3.0 ????

    wontfix 
    opened by hetbo 3
  • PagerAdapter.setViewPagerObserver

    PagerAdapter.setViewPagerObserver

    Please see this error: java.lang.IllegalAccessError: Method 'void androidx.viewpager.widget.PagerAdapter.setViewPagerObserver(android.database.DataSetObserver)' is inaccessible to class 'androidx.core.view.CustomViewPager' (declaration of 'androidx.core.view.CustomViewPager' appears in /data/app/~~vThNgAKWI10VdWiEs5RjsQ==/com.src.passnote-rPRKY4em-opZaksUITTuDg==/base.apk)

    opened by Mori-hub 0
  • Unavailable : JCenter shutting down

    Unavailable : JCenter shutting down

    The repository JCenter is shutting down from now (and definitively on May, 1st) and the dependency seems to be unavailable elsewhere, some migration is planned?

    opened by ElectroInc 1
  • Dependency getting error

    Dependency getting error

    I get this error when try to put the dependency into build.gradle:

    Failed to resolve: agency.tango.android:material-intro-screen:0.0.5

    ... this is my line of implementation in build.gradle: implementation 'agency.tango.android:material-intro-screen:0.0.5'

    what is wrong?

    opened by orauldev 1
  • Compatibility issues reported

    Compatibility issues reported

    Unsupported

    2 warnings identified The following APIs are greylisted and Google can’t guarantee that they will work on existing versions of Android. Some may be already be restricted for your target SDK

    API Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z 1 occurrence identified

    API Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V 1 occurrence identified

    Stacktrace below StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z at android.os.StrictMode.lambda$static$1(StrictMode.java:428) at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) at java.lang.Class.getDeclaredMethodInternal(Native Method) at java.lang.Class.getMethod(Class.java:2064) at java.lang.Class.getDeclaredMethod(Class.java:2047) at android.support.v7.widget.ViewUtils.(ViewUtils.java:43) at android.support.v7.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:79) at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:484) at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) at agency.tango.materialintroscreen.MaterialIntroActivity.onCreate(MaterialIntroActivity.java:80)

    StrictMode policy violation: android.os.strictmode.NonSdkApiUsedViolation: Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V at android.os.StrictMode.lambda$static$1(StrictMode.java:428) at android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ.accept(Unknown Source:2) at java.lang.Class.getDeclaredMethodInternal(Native Method) at java.lang.Class.getPublicMethodRecursive(Class.java:2075) at java.lang.Class.getMethod(Class.java:2063) at java.lang.Class.getMethod(Class.java:1690) at android.support.v7.widget.ViewUtils.makeOptionalFitsSystemWindows(ViewUtils.java:83) at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:484) at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:323) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:284) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) at agency.tango.materialintroscreen.MaterialIntroActivity.onCreate(MaterialIntroActivity.java:80)

    opened by vijayphulwadhawa 0
Releases(0.0.5)
Owner
Tango Agency
Tango is a full-service digital agency. We transform brands and grow businesses through technology. Take a digital dance with us!
Tango Agency
Make a cool intro for your Android app.

AppIntro AppIntro is an Android Library that helps you build a cool carousel intro for your App. AppIntro has support for requesting permissions and h

AppIntro Team 10.3k Dec 30, 2022
Make a cool intro for your Android app.

AppIntro AppIntro is an Android Library that helps you build a cool carousel intro for your App. AppIntro has support for requesting permissions and h

AppIntro Team 40 Jan 3, 2023
Owasp-top-five - An intro into writing code for greater Android Security

Don’t get stung by OWASP An intro into writing code for greater Android Security

Ed George 5 Feb 13, 2022
ScratchView 7.0 0.0 L4 Java repo is UX Design involving scratch cards like views which are scratched to reveal the information they conceal.

ScratchView Intro ScratchView repo is UX Design involving scratch cards like views which are scratched to reveal the information they conceal. There a

Harish Sridharan 1.1k Dec 24, 2022
ScratchView repo is UX Design involving scratch cards like views which are scratched to reveal the information they conceal.

ScratchView Intro ScratchView repo is UX Design involving scratch cards like views which are scratched to reveal the information they conceal. There a

Harish Sridharan 1.1k Dec 24, 2022
This is a android custom view , like a scratch card effect!

ScratchView This is a android custom view , like a scratch card effect! Last Update 采纳DearZack童鞋的优化思路,把计算擦除面积比例的操作放在手指离开屏幕时,以降低对CPU的占用。 Articles Scrat

D_clock爱吃葱花 316 Nov 29, 2022
A Jetpack Compose library with blur, pixelate, and other effects to keep your designer happy. Inspired by iOS UIVisualEffectView.

A Jetpack Compose library with blur, pixelate, and other effects to keep your designer happy. Inspired by iOS UIVisualEffectView.

清茶 67 Dec 30, 2022
Ms-goals - Project developed using Kotlin and Spring

Goals microservice Kotlin + Spring CRUD application. You can find the following

Gabriel Babler 0 Jan 28, 2022
It is a Profile Image View with percentage progress developed in Kotlin.

It is a Profile Image View with percentage progress developed in Kotlin. It is a highly customizable view that offers multiple attributes for creating either dash or continuous progress view around profile image based on your requirements.

smartSense Solutions 16 Jun 23, 2022
ProfilePercentageView - A Profile Image View with percentage progress developed in Kotlin

ProfilePercentageView It is a Profile Image View with percentage progress develo

smartSense Solutions 8 Dec 31, 2021
Material Design implementation for Android 4.0+. Shadows, ripples, vectors, fonts, animations, widgets, rounded corners and more.

Carbon Material Design implementation for Android 4.0 and newer. This is not the exact copy of the Lollipop's API and features. It's a custom implemen

null 3k Dec 30, 2022
A material Switch with icon animations and color transitions

Material Animated Switch A material Switch with icon animations and color transitions Sample video: Youtube Material Animated Switch video Sample app:

Adrián Lomas 1.2k Dec 29, 2022
A Material design Android pincode library. Supports Fingerprint.

LolliPin A Lollipop material design styled android pincode library (API 14+) To include in your project, add this to your build.gradle file: //Loll

Omada Health 1.6k Nov 25, 2022
A skeleton of google's appcompat android navigation drawer with material design.

Lollipop AppCompat Skeleton A skeleton of google's appcompat android navigation drawer with material design. Compatible to work on 4.0+ Based on Googl

Sachin Shinde 99 Nov 29, 2022
(Deprecated) A custom view component that mimics the new Material Design Bottom Navigation pattern.

BottomBar (Deprecated) I don't have time to maintain this anymore. I basically wrote the whole library in a rush, without tests, while being a serious

Iiro Krankka 8.4k Dec 29, 2022
An implementation of tap targets from the Material Design guidelines for feature discovery.

TapTargetView An implementation of tap targets from Google's Material Design guidelines on feature discovery. Min SDK: 14 JavaDoc Installation TapTar

Keepsafe 5.2k Dec 30, 2022
An Android library that brings the Material Design 5.1 sidebar to pre-5.1 devices.

MaterialScrollBar An Android library that brings the Material Design 5.1 scrollbar to pre-5.1 devices. Designed for Android's recyclerView. Video Imag

Turing Technologies (Wynne Plaga) 784 Nov 29, 2022
[Deprecated] Android Library that implements Snackbars (former known as Undobar) from Google's Material Design documentation.

UndoBar This lib is deprecated in favor of Google's Design Support Library which includes a Snackbar and is no longer being developed. Thanks for all

Kai Liao 577 Nov 25, 2022
A library that provides an implementation of the banner widget from the Material design.

MaterialBanner A banner displays a prominent message and related optional actions. MaterialBanner is a library that provides an implementation of the

Sergey Ivanov 252 Nov 18, 2022