Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/michaldrabik/TapBarMenu

Tap Bar Menu
https://github.com/michaldrabik/TapBarMenu

Last synced: 1 day ago
JSON representation

Tap Bar Menu

Lists

README

        

[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-TapBarMenu-lightgrey.svg?style=flat)](https://android-arsenal.com/details/1/2886)
[![Platform](https://img.shields.io/badge/platform-android-green.svg)](http://developer.android.com/index.html)
[![API](https://img.shields.io/badge/API-16%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=16)

TapBar Menu
===========

Simple library that helps creating a "Tap Bar" menu layout.

![alt text](http://i.giphy.com/ZRCzrySXUaMwM.gif "Demo 1")
![alt text](http://i.giphy.com/zIBFfp4iLlGAo.gif "Demo 2")

Demo 1: https://youtu.be/DjY0cTWWtao

Demo 2: https://youtu.be/dWuPMN6WTOY

## Install
Since version **1.0.6** this library is being distributed via [JitPack](http://jitpack.io/)

**Step 1:**
Add it in your root build.gradle at the end of repositories:
```groovy
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
```

**Step 2:**
Add the dependency:
```groovy
dependencies {
implementation 'com.github.michaldrabik:TapBarMenu:1.0.6'
}
```
---
For versions **1.0.5** and older:

Add the dependency to your `build.gradle`:

```groovy
dependencies {
compile 'com.github.michaldrabik:tapbarmenu:1.0.5'
}
```

## Use

Check sample project for a full example.

TapBarMenu is an extension of a LinearLayout so you can simply put it in your XML. For example:
```xml







```
This will create a menu with 2 icons in the bottom of the screen.

Then, in your code, call `open()`, `close()` or `toggle()` to open/close the menu:
```java
tapBarMenu.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
tapBarMenu.toggle();
}
});
```

*Note: TapBarMenu will always expand to its parent width. You can choose between 2 anchors `bottom` or `top` - see attributes below.*

## Customize
All available XML parameters are listed below:

| Attribute | Format | Description |
| ------------- |:-------------:|:-----:|
| app:tbm_showItems|true, false|Use this to show menu's items in a XML preview window.
Useful for designing your menu.
*Default: false*|
| app:tbm_backgroundColor|color|Menu color.
*Default: red*|
| app:tbm_buttonSize|dimension|Diameter of the menu button.
*Default: 56dp*|
| app:tbm_buttonPosition|left, right, center|Position of the menu button.
*Default: center*|
| app:tbm_buttonMarginRight|dimension|Button position right margin.
*Default: 0*|
| app:tbm_buttonMarginLeft|dimension|Button position left margin.
*Default: 0*|
| app:tbm_iconOpened|drawable|Custom icon for opened state. Must be an animated vector drawable.
*Default: X icon*|
| app:tbm_iconClosed|drawable|Custom icon for closed state. Must be an animated vector drawable.
*Default: Menu icon*|
| app:tbm_menuAnchor|top, bottom|Where menu should expand.
*Default: bottom*|

## Kudos

I've been inspired by [Aaron Benjamin's](https://dribbble.com/shots/2345329-Tab-Bar-Animation) great design.

## Release Notes

1.0.6 - Update Android dependencies and migrate to JitPack

1.0.5 - Added Regular Drawable support

1.0.4 - Memory optimizations, onClick listener fixes

1.0.2 - You can now add custom icon via XML or code. See attributes.

1.0.1 - Pre 21 SDK bugfixes

1.0.0 - Initial release

## License

Copyright (C) 2019 Michal Drabik

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.