Highly customizable SlidingLayer as you have seen in Wunderlist

Related tags

UI/UX wunderlist
Overview

6Wunderkinder SlidingLayer for Android

This repository hosts a library that provides an easy way to include an autonomous layer/view that slides from any side of your screen and which is fully gesture ready, the same way as our detail view in Wunderlist 2 does. This pattern can also be seen in Google+’s notification center, Google Maps, Google Music, Contacts app in Lollipop, Basecamp’s detail view, among others.

If you want to see how it works you can have a look to our video or directly download from Google Play it to test in on your device.

Implementation setup

As easy as to draw a green droid yourself, just grab it in your build gradle:

compile 'com.wunderlist:sliding-layer:1.2.5'

or directly add it as a submodule inside of your project.

Integration

Due to simplicity and lightness, this container is currently based on a FrameLayout. Just treat it as you would with other container: Place it in any of your XML layout files or drag it from the Custom Components panel. Additionally you can add this view programmatically. In the following example the same layout will be added by using the two mentioned ways.

XML

<com.wunderlist.slidinglayer.SlidingLayer
    xmlns:slidingLayer="http://schemas.android.com/apk/res-auto"
    android:id="@+id/slidingLayer1"
    android:layout_width="@dimen/layer_width"
    android:layout_height="@dimen/layer_height"
    slidingLayer:shadowDrawable="@drawable/sidebar_shadow"
    slidingLayer:shadowSize="@dimen/shadow_size"
    slidingLayer:offsetDistance="@dimen/offset_distance"
    slidingLayer:previewOffsetDistance="@dimen/preview_offset_distance"
    slidingLayer:stickTo="top|bottom|right|left"
    slidingLayer:changeStateOnTap="true">

    …
    …
</com.wunderlist.slidinglayer.SlidingLayer>

Properties:

  • shadowDrawable - a reference to the resource drawable used to paint the shadow of the container
  • shadowSize - a reference to the dimension of the desired size of the given shadow
  • offsetDistance - a reference to the dimension of the desired size for the layer to offset in the screen in order for it to be directly swipable to open
  • previewOffsetDistance - a reference to the dimension of the desired size of the preview mode. When opening the layer in this state, it will only show this amount of the layer. Preview mode can be open by tapping the layer, dragging or programmatically by calling openPreview(boolean smoothAnimation).
  • stickTo - an enum that determines to where the container should stick to. ‘left’ sticks the container to the left side of the screen. ‘right’ sticks the container to the right side of the screen, and so on with ‘top‘ and ‘bottom‘ states. Default is ‘right’.
  • changeStateOnTap - a boolean that enables/disables the action to change the state of the layer -open, preview or close- by tapping on an empty space of the container. Default value is true.

Java

public class SlidingLayerExampleActivity extends Activity {
  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
  		setContentView(R.layout.main_view);
  
  		SlidingLayer slidingLayer = (SlidingLayer) findViewById(R.id.slidingLayer1);
      
        slidingLayer.setShadowDrawable(R.drawable.sidebar_shadow);
        slidingLayer.setShadowSizeRes(R.dimen.shadow_size);
        slidingLayer.setOffsetDistanceRes(R.dimen.offset_distance);
        slidingLayer.setPreviewOffsetDistanceRes(R.dimen.preview_offset_distance);
        slidingLayer.setStickTo(SlidingLayer.STICK_TO_LEFT);
        slidingLayer.setChangeStateOnTap(false);
  		
        slidingLayer.addView(new Button(this));
        ...
    }
}

Code of Conduct

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Comments
  • Added Up and Down Modes to the SlidingLayer

    Added Up and Down Modes to the SlidingLayer

    Auto Still only picks left or right. Middle will actualy come from any direction in a random fasion, looks quite cool, also means you can fling off the screen in any direction.

    Updated demo to show the new modes.

    opened by chrisjenx 29
  • Jose/vector swipe for mid view

    Jose/vector swipe for mid view

    • Merged getDestScrollX and getDestScrollY into getDestScrollPos which return a point (int[])
    • When in the middle screen side now the layer can get swiped to any angle, which is remembered for the next time. That applies for velocity, touch and hold and release far enough to dismiss. For the rest of cases a random angle is chosen
    opened by JlUgia 11
  • Gradle dependency resolve error

    Gradle dependency resolve error

    Hello.My gradle can't resolve dependency compile 'com.wunderlist:sliding-layer:1.2.5' but 'com.wunderlist:sliding-layer:1.1.1' resolving fine.Am I doing something wrong? My build.gradle in app root

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 22
        buildToolsVersion "22.0.1"
    
        packagingOptions {
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/NOTICE'
        }
    
        defaultConfig {
            applicationId "com.aleksandrz.testapp"
            minSdkVersion 9
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:22.2.0'
        compile 'com.facebook.fresco:fresco:0.5.2'
        compile 'com.android.support:cardview-v7:22.1.1'
        compile 'com.pixplicity.easyprefs:library:1.4'
        compile 'com.nineoldandroids:library:2.4.0'
        compile 'com.github.rey5137:material:1.1.1'
        compile 'com.nhaarman.listviewanimations:lib-core:3.1.0@aar'
        compile 'com.navercorp.pulltorefresh:library:3.2.0@aar'
        compile 'com.android.support:recyclerview-v7:22.2.0'
        compile 'com.squareup.picasso:picasso:2.3.3'
        compile 'org.jsoup:jsoup:1.8.1'
        compile (
                [group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.4.1'],
                [group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.4.1'],
                [group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.1']
        )
        compile 'com.github.florent37:materialimageloading:1.0.0'
        compile 'com.android.support:design:22.2.0'
        compile "com.wefika:flowlayout:0.4.0"
        compile 'com.wunderlist:sliding-layer:1.1.
    }
    

    My build.gradle in project root

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    
    buildscript {
        repositories {
            jcenter()
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.2.3'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }
    
    allprojects {
        repositories {
            jcenter()
            mavenCentral()
        }
    }
    
    opened by aleksandr1592 9
  • Getting NullPointerException while adding layout.

    Getting NullPointerException while adding layout.

    Hi i am getting following error while trying to place SlidingLayer inside my xml.

    java.lang.NullPointerException Exception details are logged in Window > Show View > Error Log

    java.lang.NullPointerException at com.slidinglayer.SlidingLayer.getScreenSideAuto(SlidingLayer.java:728) at com.slidinglayer.SlidingLayer.onLayout(SlidingLayer.java:785) at android.view.View.layout(View.java:13754) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948) at android.view.View.layout(View.java:13754) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.FrameLayout.onLayout(FrameLayout.java:448) at android.view.View.layout(View.java:13754) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507) at android.widget.LinearLayout.onLayout(LinearLayout.java:1420) at android.view.View.layout(View.java:13754) at android.view.ViewGroup.layout(ViewGroup.java:4364) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1649) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1507) at android.widget.LinearLayout.onLayout(LinearLayout.java:1420) at android.view.View.layout(View.java:13754) at android.view.ViewGroup.layout(ViewGroup.java:4364)

    Here is my xml

       <com.slidinglayer.SlidingLayer
        xmlns:slidingLayer="http://schemas.android.com/apk/res-auto"
        android:id="@+id/slidingLayer1"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#fac72d" >
    
            <ImageView
                android:id="@+id/imgCloseLayer"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_marginTop="5dp"
                android:src="@drawable/cancel" />
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_marginTop="30dp"
                android:text="Notes" />
    
            <com.phonethics.emr.LineEditText
                android:id="@+id/edtNotes"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/imgCloseLayer"
                android:layout_marginTop="5dp"
                android:background="#fac72d"
                android:hint="Enter notes"
                android:gravity="top"
                android:inputType="textMultiLine"
                android:maxLines="5" />
        </RelativeLayout>
    </com.slidinglayer.SlidingLayer>
    
    opened by ManojMM026 9
  • Vertical scroll

    Vertical scroll

    Hi, I found this library is so simple, light and easy to integrate. I am wondering how I can make it scrollable vertically in the sliding layer. Do I have to wrap in the scroll view? Thanks.

    opened by 4tee 7
  • How to run your demo project?

    How to run your demo project?

    Hello,

    I'm really new to Android and Eclipse although I'm familiar with Java. My question is how can I run your demo application?

    I've imported SlidingLayerSample into Eclipse but there are tons of errors. I knew it's because I need to import the Library too. Am I right? But how to import the Library as a "library"? Thanks

    opened by bagusflyer 7
  • tab on other parts of the screen

    tab on other parts of the screen

    I currently can use all the ui elements on other parts of the screen. They still work. How can I disable that? I would like to close the menu in that case as Wunderlist does. setCloseOnTapEnabled does not do the work as I hoped.

    opened by dpreussler 7
  • Added Offset for Left and Right menus.

    Added Offset for Left and Right menus.

    Added openOnClick,offsetWidth attributes as well as setters.

    When the Offset is greater than 0 the layer sticks out for the use to be able to tap/drag.

    Updated the sample to show off the feature.

    opened by chrisjenx 6
  • Recyclerview inside slidinglayer

    Recyclerview inside slidinglayer

    • Removed previous changes.
    • I have implemented a method 'canScrollToView()' in which I have just added the return expression of 'canScroll()' which is holding the original return boolean value.
    • It will not affect the library at all.
    • I am overriding the 'canScrollToView()' method in the custom slider that we are using in the project as required by using the 'view' and 'dy' of method 'canScroll()'.
    opened by chiragagrawal-tudip 5
  • Updated @Ankushg Gradle pull request with lastest working config

    Updated @Ankushg Gradle pull request with lastest working config

    Built on top of @ankushg s great work, updated to work with Android Studio 2.2+

    The data model changed breaking pre 0.4 plugin.

    I've tested this and builds great! Absolutely love Gradle!

    opened by chrisjenx 4
  • Move sliding layer with finger when using offsetDistance

    Move sliding layer with finger when using offsetDistance

    Hello, This library is very useful and working perfectly in my application. But I want to allow user to swipe from left to right and then move the sliding layer as per the movement of finger. e.g. android Gmail application. This is working when user try to close already opened layer by touching on layer and move the finger(In this case sliding layer moves along with finger which exactly i want while opening the layer).

    Maybe this is already implemented in library,in that case..am i missing something?

    opened by chetanmekha 3
  • Add support for AndroidX + Gradle + Android Gradle Plugin Updates

    Add support for AndroidX + Gradle + Android Gradle Plugin Updates

    What is done?

    • Updated gradle to 6.6.1
    • Updated Android Gradle Plugin to 4.0.1
    • Updated target SDK to be 30
    • Updated Android Build Tools to 29.0.2
    • Migrated project to user androidx libs
    opened by tomkoptel 0
  • Swipe other view then open the slidinglayer

    Swipe other view then open the slidinglayer

    Hi, I have a problem with passing event to the slidinglayer. What I want: when swipe on other view, the slidinglayer will start slide and open (same when we swipe the slidinglayer itself). I tried pass the touch event to slidinglayer but both of them didn't work. Please help me. Thanks.

            rootView.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    return slidingLayer.onTouchEvent(event);
                }
            });
            //or
            rootView.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    return slidingLayer.onInterceptTouchEvent(event);
                }
            });
    
    opened by huynhdq91 0
  • horizontal scroll inside a vertical sliding layout

    horizontal scroll inside a vertical sliding layout

    In my XML I have a horizontal recyclerview wrapped by this custom class.

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/video_cutter_root"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="?attr/videoview_bg"
        android:orientation="vertical"
        tools:ignore="RtlHardcoded">
    
        <RelativeLayout
            android:id="@+id/layout_surface_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/layout"
            android:background="@android:color/transparent"
            android:gravity="center"
            android:orientation="vertical">
    
    
            <com.devbrackets.android.exomedia.ui.widget.VideoView
                android:id="@+id/video_loader"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true" />
    
    
            <ImageView
                android:id="@+id/icon_video_play"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:background="@drawable/play_button"
                android:contentDescription="@null" />
    
        </RelativeLayout>
    
    
        <RelativeLayout
            android:id="@+id/layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="72dp"
            android:background="?attr/video_timeline_bg">
    
    
            <RelativeLayout
                android:id="@+id/timeText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">
    
                <TextView
                    android:id="@+id/textTimeStart"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_marginStart="7dp"
                    android:layout_marginLeft="7dp"
                    android:gravity="left"
                    android:text="@string/timer2" />
    
                <TextView
                    android:id="@+id/textTime"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:gravity="center"
                    android:text="@string/timer2"
                    android:textColor="?attr/color_accent" />
    
                <TextView
                    android:id="@+id/textTimeEnd"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:layout_marginEnd="7dp"
                    android:layout_marginRight="7dp"
                    android:layout_toEndOf="@+id/textTime"
                    android:layout_toRightOf="@+id/textTime"
                    android:gravity="right"
                    android:text="@string/timer2" />
    
            </RelativeLayout>
    
    
            <androidx.appcompat.widget.AppCompatSeekBar
                android:id="@+id/handlerTop"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:max="1000"
                android:paddingTop="30dp"
                android:progressDrawable="@android:color/transparent"
                android:secondaryProgress="0"
                android:thumb="@drawable/vector_apptheme_text_select_handle_middle" />
    
    
            <View
                android:id="@+id/lineTop"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_below="@+id/handlerTop"
                android:background="@color/line_button" />
    
    
        </RelativeLayout>
    
    
        <com.symphonyrecords.mediacomp.slidinglayer.SlidingLayer xmlns:slidingLayer="http://schemas.android.com/apk/res-auto"
            android:id="@+id/slider_panel"
            android:layout_width="match_parent"
            android:layout_height="400dip"
            android:layout_below="@+id/layout_surface_view"
            android:layout_gravity="bottom"
            android:gravity="bottom"
            slidingLayer:openLayer="false"
            slidingLayer:stickTo="bottom">
    
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="400dip"
                android:background="@color/slider_panel_color_trans98">
    
    
                <TextView
                    android:id="@+id/added_clips_count"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentLeft="true"
                    android:layout_marginTop="7dp"
                    android:padding="7dp"
                    android:text="Selected 0 clips"
                    android:textColor="?attr/text_color"
                    android:textSize="@dimen/sp12"
                    android:textStyle="bold" />
    
                <androidx.appcompat.widget.AppCompatImageView
                    android:id="@+id/slider_iv"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerHorizontal="true"
                    android:layout_gravity="top|center"
                    android:background="?attr/selectableItemBackgroundBorderless"
                    android:contentDescription="@null"
                    android:padding="7dp"
                    android:tint="?attr/color_accent"
                    app:srcCompat="@drawable/vector_slide_down" />
    
                <Button
                    android:id="@+id/btAdd"
                    style="@style/BorderlessButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignParentRight="true"
                    android:gravity="center"
                    android:shadowColor="?attr/textview_shadow"
                    android:shadowDx="@integer/shadowDx"
                    android:shadowDy="@integer/shadowDy"
                    android:shadowRadius="@integer/shadowRadius"
                    android:text="@string/add"
                    android:textColor="?attr/color_accent"
                    android:textSize="@dimen/sp14"
                    android:textStyle="bold" />
    
                <Button
                    android:id="@+id/btNext"
                    style="@style/BorderlessButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_toLeftOf="@+id/btAdd"
                    android:gravity="center"
                    android:paddingLeft="15dp"
                    android:paddingRight="15dp"
                    android:shadowColor="?attr/textview_shadow"
                    android:shadowDx="@integer/shadowDx"
                    android:shadowDy="@integer/shadowDy"
                    android:shadowRadius="@integer/shadowRadius"
                    android:text="@string/next"
                    android:textColor="?attr/color_accent"
                    android:textSize="@dimen/sp14"
                    android:textStyle="bold" />
    
                <androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/mRecyclerView"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/btAdd"
                    android:background="@color/slider_panel_color_trans98"
                    android:scrollbarSize="@dimen/scrollbar_size"
                    android:scrollbarStyle="outsideInset"
                    android:scrollbarThumbHorizontal="?attr/color_accent"
                    android:scrollbars="horizontal" />
    
    
            </RelativeLayout>
    
        </com.symphonyrecords.mediacomp.slidinglayer.SlidingLayer>
    
    
    </RelativeLayout>
    

    So I have a horizontal scroll(recyclerview), inside a vertical slide(stickTo bottom).

    The problem is this, please look at the below GIF file:

    [horizontal scroll inside vertical slide]2

    As you can see I can't scroll in recyclerview properly.

    Do you have any suggestions?

    opened by symphonyrecords 1
  • Action after touch SlidingLayer (MotionEvent)

    Action after touch SlidingLayer (MotionEvent)

    Hello, I would like to call method after slide down 'SlidingLayer'. So I decided to detect Touch Event and after that call my method.

    My Code: `SlidingLayer slidingLayer = findViewById(R.id.slidingLayer1); slidingLayer.setShadowDrawable(R.drawable.sidebar_shadow); slidingLayer.setShadowSizeRes(R.dimen.shadow_size); slidingLayer.setOffsetDistanceRes(R.dimen.offset_distance); slidingLayer.setPreviewOffsetDistanceRes(R.dimen.preview_offset_distance); slidingLayer.setStickTo(SlidingLayer.STICK_TO_TOP); slidingLayer.setChangeStateOnTap(false); slidingLayer.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(final View v, final MotionEvent event) {
                if (event.getAction() == MotionEvent.ACTION_DOWN) {
                    scanWifi();
                }
                return false;
            }
        });`
    

    Detecting touch works well but SlidingLayer stop working. Do you know some other way to call method after Slide Down/Touch?

    EDIT I found a solution, maybe someone else will use it too

    ` slidingLayer.setOnInteractListener(new SlidingLayer.OnInteractListener() { @Override public void onOpen() { setWifiList(); }

            @Override
            public void onShowPreview() {
    
            }
    
            @Override
            public void onClose() {
    
            }
    
            @Override
            public void onOpened() {
    
            }
    
            @Override
            public void onPreviewShowed() {
    
            }
    
            @Override
            public void onClosed() {
    
            }
        });`
    
    opened by ghost 0
Owner
Microsoft Archive
Archived repositories - for historical interest or community forking, READ ONLY
Microsoft Archive
用于做Path动画的自定义View。 I have a path.I have a view. (Oh~),Path(Anim)View.

PathAnimView 用于做Path动画的自定义View。 I have a path.I have a view. (Oh~),Path(Anim)View. 现已经找到图片->SVG->PATH的正确姿势, Now i have a pic.I have a view. Oh~,Path(A

张旭童 1.1k Oct 28, 2022
⚡️A highly customizable, powerful and easy-to-use alerting library for Android.

Flashbar A highly customizable, powerful and easy-to-use alerting library for Android. Specs This library allows you to show messages or alerts in you

Aritra Roy 1.7k Dec 7, 2022
A nicer-looking, more intuitive and highly customizable alternative for radio buttons and dropdowns for Android.

SwipeSelector Undergoing for some API changes for a 2.0 major version, see example usage in the sample module! What and why? Bored of dull looking rad

Iiro Krankka 1.1k Dec 30, 2022
A small, easy to use android library for implementing flipping between views as seen in the popular Flipboard application

FlipView About This library is made to be very easy to use and at the same time be feature complete. With only a few lines of code you can have a flip

Emil Sjölander 924 Nov 10, 2022
Android library for fluid tablayout animation as seen on Snapchat.

SnapTabLayout Show some ❤️ and star the repo to support the project This library is the implementation of TabLayout as seen on popular messaging app S

Niranjan Kurambhatti 714 Dec 25, 2022
Custom & highly configurable seek slider with sliding intervals, disabled state and every possible setting to tackle!

LabeledSeekSlider Custom & highly configurable seek slider with sliding intervals, disabled state and every possible setting to tackle! Minimum target

Edgar Žigis 78 Sep 27, 2022
Highly customized vertical Seekbar with segments

SegmentedVerticalSeekBar It is an Android Vertical Seekbar with segments develop

smartSense Solutions 15 Dec 31, 2022
Have a look at Job Allocation app build with SQLite database and Kotlin support

Job Allocation Overview Do you remember or forget sometimes to whom you allocated a task ?? Have a look at Job Allocation app build with SQLite databa

null 0 Dec 13, 2021
:balloon: A lightweight popup like tooltips, fully customizable with an arrow and animations.

Balloon ?? A lightweight popup like tooltips, fully customizable with arrow and animations. Including in your project Gradle Add below codes to your r

Jaewoong Eum 2.8k Jan 5, 2023
A simple, customizable and easy to use swipeable view stack for Android.

SwipeStack A simple, customizable and easy to use swipeable view stack for Android. QuickStart Include the Gradle dependency dependencies { compil

Frederik Schweiger 1.5k Dec 30, 2022
The CustomCalendarView provides an easy and customizable calendar to create a Calendar. It dispaly the days of a month in a grid layout and allows to navigate between months

Custom-Calendar-View To use the CustomCalendarView in your application, you first need to add the library to your application. You can do this by eith

Nilanchala Panigrahy 113 Nov 29, 2022
Customizable Item Setting View Android

ItemSettingView Simple ItemSettingView and Custom Installation Add it in your root build.gradle at the end of repositories: allprojects { reposito

Andhika Yuana 15 Aug 19, 2022
A simple and customizable two or three states Switch View

RMSwitch A simple View that works like a switch, but with more customizations. With the option to choose between two or three states. (from v1.1.0) **

Riccardo Moro 656 Dec 2, 2022
Fully customizable implementation of "Snowfall View" on Android.

Android-Snowfall Fully customizable implementation of "Snowfall View" on Android. That's how we use it in our app Hotellook Compatibility This library

Jetradar Mobile 1.2k Dec 21, 2022
A customizable debug screen to view and edit flags that can be used for development in Jetpack Compose applications

Tweaks A customizable debug screen to view and edit flags that can be used for development in Jetpack Compose applications To include the library add

Guillermo Merino Jiménez 4 Jan 14, 2022
A Tinder-like Android library to create the swipe cards effect. You can swipe left or right to like or dislike the content.

Swipecards Travis master: A Tinder-like cards effect as of August 2014. You can swipe left or right to like or dislike the content. The library create

Dionysis Lorentzos 2.3k Dec 9, 2022
Android library which allows you to swipe down from an activity to close it.

Android Sliding Activity Library Easily create activities that can slide vertically on the screen and fit well into the Material Design age. Features

Jake Klinker 1.3k Nov 25, 2022
This library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application. Brought to you by Umano.

Note: we are not actively responding to issues right now. If you find a bug, please submit a PR. Android Sliding Up Panel This library provides a simp

Umano: News Read To You 9.4k Dec 31, 2022
Name UI states, navigate between them, remember where you've been.

Deprecated Flow had a good run and served us well, but new use is strongly discouraged. The app suite at Square that drove its creation is in the proc

Square 2.8k Dec 29, 2022