Code Monkey home page Code Monkey logo

fluentappbar's Introduction

Fluent App Bar

Fluent App Bar is an Android "bottom-sheet" enabling a whole new bottom navigation and menu experience

  • Innovative: Fluent App Bar is an innovative UI/UX to manage (Fragment) navigation and visualize menu options.
  • Beautiful UI: An elegant UI with a very smooth UX. A bottom navigation bar and a menu in one UI widget.
  • Inspired by: Microsoft's Fluent Design System.
  • Many thanks to: Dmitry Saviuk who made BlurView, already used for the Blur Dialog

Usage

Add this XML snippet to your layout.

<com.vlstr.fluentappbar.FluentAppBar
        android:id="@+id/fluent_app_bar"
        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        app:fluent_background_colour="@color/colorPrimary"
        app:fluent_foreground_colour="#FFFFFF"

        app:fluent_app_bar_type="FULL_FLUENT"
        app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

</com.vlstr.fluentappbar.FluentAppBar>


And integrate the FluentAppBar this way:

MainActivity.java
---

private void setupFluentAppBar() {
        fluentAppBar = (FluentAppBar) findViewById(R.id.fluent_app_bar);
        fluentAppBar.setNavigationMenu(R.menu.fluent_app_bar_main_menu, this);
        fluentAppBar.setSecondaryMenu(R.menu.fluent_app_bar_secondary_menu, this);
        fluentAppBar.setBlurRadius(10);
}

And to handle the navigation or secondary menu item click:

MainActivity.java
---

@Override
public void onClick(View v) {
    int resId = (int) v.getTag();
    switch (resId){
        //Navigation Menu
        case R.id.nav_all:
            fluentAppBar.collapse();
            break;
        case R.id.nav_album:
            break;
        case R.id.nav_keywords:
            break;

        // Secondary Menu
        case R.id.menu_sync:
            fluentAppBar.collapse();
            break;
        case R.id.menu_assistant:
            break;
        case R.id.menu_shared:
            break;
    }
  }

You will have to provide 2 XML Menu resource files for the navigation menu and the secondary menu.

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:icon="@drawable/ic_all"
        android:id="@+id/nav_all"
        android:title="All" />

    <item
        android:icon="@drawable/ic_album"
        android:id="@+id/nav_album"
        android:title="Albums" />

    <item
        android:icon="@drawable/ic_keywords"
        android:id="@+id/nav_keywords"
        android:title="Keywords" />
</menu>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:icon="@drawable/ic_sync"
        android:id="@+id/menu_sync"
        android:title="Show Sync Status" />

    <item
        android:icon="@drawable/ic_assistant"
        android:id="@+id/menu_assistant"
        android:title="Photo Assistant" />

    <item
        android:icon="@drawable/ic_shared"
        android:id="@+id/menu_shared"
        android:title="Shared Photos" />
</menu>

Compatibility

This Android library is currently supported by devices with API > 17.

Customisation

Each of the following has got getter/setter methods. Also, the type, background colour and foreground colour can be directly set in the XML layout file.

  • Navigation Menu: provide the icons and title for the navigation menu

  • Secondary menu

  • Type: 3 types are available to you

    • FULL_FLUENT: the fluent blur is always enabled
    • CLICK_FLUENT: the blur is enabled when the FluentAppBar is expanded
    • DISABLE_FLUENT: no blur effect is being used
  • Background colour: specify the FluentAppBar's background colour

    • Used as is for the DISABLE_FLUENT and CLICK_FLUENT types
    • Made transparent according to the provided options for FULL_FLUENT and CLICK_FLUENT (when expanded) => works like a filter colour
  • Foreground colour: specify the text colour and icon tint

  • Ripple style: specify whether you want to use the custom "Fluent Ripple" or keep the default Android ripple

  • Background alpha: Set how strong the alpha should be when making the backgrond colour a transparent filter

  • Blur radius: Range [1-25] - The lower it is, the more you will see the FluentAppBar's background.

Additional customization These 3 customization options are done through overriding the "@dimen" resource name in your own dimens.xml file. Please name the dimensions like follows:

  • Text size
    • Navigation menu ("fluentappbar_navigation_text_size")
    • Secondary menu ("fluentappbar_secondary_menu_text_size")
  • Icon size ("fluentappbar_icon_height")

Additional methods

  • collapse(): collapse the FluentAppBar after a short delay of 500ms (in order to see the ripple)
  • collapseWithoutDelay(): collapse the FluentAppBar without the delay
  • expand()

Gradle

dependencies {
  compile 'com.vlstr:fluentappbar:1.1.0'
}

For Maven:

<dependency> 
  <groupId>com.vlstr</groupId> 
  <artifactId>fluentappbar</artifactId> 
  <version>1.1.0</version> 
  <type>pom</type> 
</dependency>

Examples

Logs

1.1.0

  • "Override" customization for text and icon sizes
  • Add type "Click Fluent"
  • Improve touch interaction with the Fluent App Bar sliding

1.0.0

  • Initial version

Used by/in

Feel free to contact me to have your project and name stated here

Credits

Creator: Valentin Lungenstrass http://www.vlstr.com/ | contact [at] vlstr [dot] com

Follow me on Twitter Follow me on LinkedIn

License

Copyright 2019 Valentin Lungenstrass.

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.

fluentappbar's People

Contributors

byvlstr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.