All Projects → yarolegovich → Slidingrootnav

yarolegovich / Slidingrootnav

Licence: apache-2.0
DrawerLayout-like ViewGroup, where a "drawer" is hidden under the content view, which can be shifted to make the drawer visible.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Slidingrootnav

Discretescrollview
A scrollable list of items that centers the current element and provides easy-to-use APIs for cool item animations.
Stars: ✭ 5,533 (+88.26%)
Mutual labels:  android-development, view, swipe, android-ui
Drawer Behavior
Drawer behavior is a library that provide an extra behavior on drawer, such as, move view or scaling view's height while drawer on slide.
Stars: ✭ 394 (-86.59%)
Mutual labels:  android-development, android-ui, navigation-drawer, drawerlayout
Materialdrawer
The flexible, easy to use, all in one drawer library for your Android project. Now brand new with material 2 design.
Stars: ✭ 11,498 (+291.22%)
Mutual labels:  android-development, android-ui, navigation-drawer, drawerlayout
Material-Backdrop-Android
Material Backdrop
Stars: ✭ 106 (-96.39%)
Mutual labels:  android-development, android-ui, navigation-drawer
Fastadapter
The bullet proof, fast and easy to use adapter library, which minimizes developing time to a fraction...
Stars: ✭ 3,512 (+19.5%)
Mutual labels:  android-development, swipe, android-ui
Dachshund Tab Layout
Extended Android Tab Layout with animated indicators that have continuous feedback.
Stars: ✭ 853 (-70.98%)
Mutual labels:  android-development, view, android-ui
Textwriter
Animate your texts like never before
Stars: ✭ 140 (-95.24%)
Mutual labels:  android-development, view, android-ui
Customfloatingactionbutton
This view is for replacement of standard Floating Action Button from Google Support Library. It is easy to use, customizable and you can also add text to button
Stars: ✭ 222 (-92.45%)
Mutual labels:  android-development, view, android-ui
recycler-adapter
RecyclerView-driven declarative UIs
Stars: ✭ 124 (-95.78%)
Mutual labels:  view, android-development, android-ui
MessageView
MessageView helps you to create chat message view or a social media message view quickly like a typical chatting application or social post view Its a container view, so you can add any type of message or social post such as TextView or any customize TextView, ImageView, etc.
Stars: ✭ 21 (-99.29%)
Mutual labels:  view, android-development
Xama.JTPorts.ShowcaseView
Xamarin.Android Native showcase view.
Stars: ✭ 17 (-99.42%)
Mutual labels:  android-development, android-ui
Tableview
TableView is a powerful Android library for displaying complex data structures and rendering tabular data composed of rows, columns and cells.
Stars: ✭ 2,928 (-0.37%)
Mutual labels:  android-development, android-ui
RecyclerELE
Android Library for easy addition of Empty, Loading and Error views in a RecyclerView
Stars: ✭ 27 (-99.08%)
Mutual labels:  android-development, android-ui
Login-SignupUI-FirebasePhoneauth
New Repo
Stars: ✭ 43 (-98.54%)
Mutual labels:  android-development, android-ui
SuperToolbar
Android native Toolbar on steroids 💪
Stars: ✭ 52 (-98.23%)
Mutual labels:  android-development, android-ui
android-custom-view
No description or website provided.
Stars: ✭ 15 (-99.49%)
Mutual labels:  android-development, android-ui
SignatureView
【Android View】:好用的Android电子签名板,能保存所签名的图片
Stars: ✭ 89 (-96.97%)
Mutual labels:  view, android-ui
react-native-navigation-drawer-layout
React Native library to generate navigation drawer layout.
Stars: ✭ 26 (-99.12%)
Mutual labels:  drawerlayout, drawer-layout
Android-daily-read-tips
log for articles and info in android for every developer
Stars: ✭ 13 (-99.56%)
Mutual labels:  android-development, android-ui
svg2vector
Online batch converter of SVG images to Android vector drawable XML resource files
Stars: ✭ 39 (-98.67%)
Mutual labels:  android-development, android-ui

SlidingRootNav

The library is a DrawerLayout-like ViewGroup, where a "drawer" is hidden under the content view, which can be shifted to make the drawer visible. It doesn't provide you with a drawer builder.

GifSample

Gradle

Add this into your dependencies block.

compile 'com.yarolegovich:sliding-root-nav:1.1.1'

Sample

Please see the sample app for a library usage example.

Wiki

Usage:

  1. Create your content_view.xml (example) or construct a View programatically.
  2. Set the content view (for example, using setContentView in your activity).
  3. Create your menu.xml (example) or construct a View programatically.
  4. Now you need to inject the menu in your onCreate. You can specify transformations of a content view or use the default ones.
new SlidingRootNavBuilder(this)
  .withMenuLayout(R.layout.menu_left_drawer)
  .inject();

API

Transformations

You can specify root transformations using SlidingRootNavBuilder.

new SlidingRootNavBuilder(this)
  .withDragDistance(140) //Horizontal translation of a view. Default == 180dp
  .withRootViewScale(0.7f) //Content view's scale will be interpolated between 1f and 0.7f. Default == 0.65f;
  .withRootViewElevation(10) //Content view's elevation will be interpolated between 0 and 10dp. Default == 8.
  .withRootViewYTranslation(4) //Content view's translationY will be interpolated between 0 and 4. Default == 0
  .addRootTransformation(customTransformation)
  .inject();

customTransformation in the above example is a user-created class that implements RootTransformation interface. For an example, refer to the default transformations.

Menu behavior

new SlidingRootNavBuilder(this)
  .withMenuOpened(true) //Initial menu opened/closed state. Default == false
  .withMenuLocked(false) //If true, a user can't open or close the menu. Default == false.
  .withGravity(SlideGravity.LEFT) //If LEFT you can swipe a menu from left to right, if RIGHT - the direction is opposite. 
  .withSavedState(savedInstanceState) //If you call the method, layout will restore its opened/closed state
  .withContentClickableWhenMenuOpened(isClickable) //Pretty self-descriptive. Builder Default == true

Controling the layout

A call to inject() returns you an interface for controlling the layout.

public interface SlidingRootNav {
    boolean isMenuClosed();
    boolean isMenuOpened();
    boolean isMenuLocked();
    void closeMenu();
    void closeMenu(boolean animated);
    void openMenu();
    void openMenu(boolean animated);
    void setMenuLocked(boolean locked);
    SlidingRootNavLayout getLayout(); //If for some reason you need to work directly with layout - you can
}

Callbacks

  • Drag progress:
builder.addDragListener(listener);

public interface DragListener {
  void onDrag(float progress); //Float between 0 and 1, where 1 is a fully visible menu
}
  • Drag state changes:
builder.addDragStateListener(listener);

public interface DragStateListener {
  void onDragStart();
  void onDragEnd(boolean isMenuOpened);
}
  • Compatibility with DrawerLayout.DrawerListener:
DrawerListenerAdapter adapter = new DrawerListenerAdapter(yourDrawerListener, viewToPassAsDrawer);
builder.addDragListener(listenerAdapter).addDragStateListener(listenerAdapter);

Special thanks

Thanks to Tayisiya Yurkiv for a beautiful GIF.

License

Copyright 2017 Yaroslav Shevchuk

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].