Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

master #83

Open
wants to merge 14 commits into
base: dev
Choose a base branch
from
Prev Previous commit
Next Next commit
Forked changes
  • Loading branch information
yayaa committed Sep 11, 2015
commit 34c9d026e20872d4935fee458bb0b3d44690ba14
128 changes: 19 additions & 109 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,133 +1,43 @@
#AndroidResideMenu
------
### 中文说明请点击 [这里][1]

The idea of ResideMenu is from Dribble [1][2] and [2][3]. It has come true and run in iOS devices. [iOS ResideMenu][4]
This project is the RefsideMenu Android version. The visual effect is partly referred to iOS version of ResideMenu.
The idea of ResideMenu is from Dribble [2] and [3]. It has come true and run in iOS devices. [iOS ResideMenu][4]
This project is the ResideMenu Android version. The visual effect is partly referred to iOS version of ResideMenu.
And thanks to the authors for the above idea and contribution.
<img src="https://github.com/SpecialCyCi/AndroidResideMenu/raw/master/1.png" width="320" height="568" />
<img src="https://github.com/SpecialCyCi/AndroidResideMenu/raw/master/2.gif" width="320" height="568" />

Now with 3D support !
<img src="https://github.com/SpecialCyCi/AndroidResideMenu/raw/master/3Dsupport.png" width="320" height="568" />
## DEMO
This copy is the demo.
## Fixes
[Overlapping Soft NavigationBar to contentUI][6]

## Version Migration
## [Default Usage][7]

#### Upgrading to `v1.4` from `v1.3`, `v1.2`, `v1.1`, `v1.0`
## Custom Usage

Duplicate the followed code in dispatchTouchEvent() of Activity, replace the old `dispatchTouchEvent()` code.
Do your reside menu configurations, by creating an instance of ResideMenu with your custom layout's resource Ids. If you want to use default layout, just pass that variable as -1.

```java
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return resideMenu.dispatchTouchEvent(ev);
}
```

## Requirements

Run in Android 2.3 +

## Installation

### Gradle

```gradle
repositories {
mavenCentral()
}
dependencies {
compile 'com.specyci:residemenu:1.6+'
}
```

### Other

1. import ResideMenu project to your workspace.
2. make it as a dependency library project to your main project.
<br>**( see [example][5] )**

**or**

If you want to merge ResideMenu with your project, you should follow these steps.

1. Copy all files from src/com/special/ResideMenu to your project.
2. Copy libs/nineoldandroids-library-2.4.0.jar to your project’s corresponding path: libs/
3. Copy res/drawable-hdpi/shadow.9.png to your project’s corresponding path: res/drawable-hdpi/
4. Copy res/layout/residemenu.xml and residemenu_item.xml to your project’s corresponding path: res/layout

## Usage
init ResideMenu: write these code in Activity onCreate()
```java
// attach to current activity;
resideMenu = new ResideMenu(this);
resideMenu = new ResideMenu(activity, R.layout.menu_left, R.layout.menu_right);
resideMenu.setBackground(R.drawable.menu_background);
resideMenu.attachToActivity(this);
resideMenu.attachToActivity(activity);
resideMenu.setScaleValue(0.5f);

// create menu items;
String titles[] = { "Home", "Profile", "Calendar", "Settings" };
int icon[] = { R.drawable.icon_home, R.drawable.icon_profile, R.drawable.icon_calendar, R.drawable.icon_settings };

for (int i = 0; i < titles.length; i++){
ResideMenuItem item = new ResideMenuItem(this, icon[i], titles[i]);
item.setOnClickListener(this);
resideMenu.addMenuItem(item, ResideMenu.DIRECTION_LEFT); // or ResideMenu.DIRECTION_RIGHT
}
```
If you want to use slipping gesture to operate(lock/unlock) the menu, override this code in Acitivity dispatchTouchEvent() (please duplicate the followed code in dispatchTouchEvent() of Activity.
```java
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return resideMenu.dispatchTouchEvent(ev);
}
```
**On some occasions, the slipping gesture function for locking/unlocking menu, may have conflicts with your widgets, such as viewpager. By then you can add the viewpager to ignored view, please refer to next chapter – Ignored Views.**

open/close menu
```java
resideMenu.openMenu(ResideMenu.DIRECTION_LEFT); // or ResideMenu.DIRECTION_RIGHT
resideMenu.closeMenu();
```

listen in the menu state
```java
resideMenu.setMenuListener(menuListener);
private ResideMenu.OnMenuListener menuListener = new ResideMenu.OnMenuListener() {
@Override
public void openMenu() {
Toast.makeText(mContext, "Menu is opened!", Toast.LENGTH_SHORT).show();
}

@Override
public void closeMenu() {
Toast.makeText(mContext, "Menu is closed!", Toast.LENGTH_SHORT).show();
}
};
resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT);
resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_LEFT);
```

disable a swipe direction
```java
resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT);
```
As your configuration's completed, now you can customize side menus by getting instances of them as following:

##Ignored Views
On some occasions, the slipping gesture function for locking/unlocking menu, may have conflicts with your widgets such as viewpager.By then you can add the viewpager to ignored view.
```java
// add gesture operation's ignored views
FrameLayout ignored_view = (FrameLayout) findViewById(R.id.ignored_view);
resideMenu.addIgnoredView(ignored_view);
View leftMenu = resideMenu.getLeftMenuView();
// TODO: Do whatever you need to with leftMenu
View rightMenu = resideMenu.getRightMenuView();
// TODO: Do whatever you need to with rightMenu
```
So that in ignored view’s workplace, the slipping gesture will not be allowed to operate menu.

##About me
A student from SCAU China.<br>
Email: specialcyci#gmail.com


[1]: https://github.com/SpecialCyCi/AndroidResideMenu/blob/master/README_CN.md
[2]: http://dribbble.com/shots/1116265-Instasave-iPhone-App
[3]: http://dribbble.com/shots/1114754-Social-Feed-iOS7
[4]: https://github.com/romaonthego/RESideMenu
[5]: https://github.com/SpecialCyCi/AndroidResideMenu/blob/master/ResideMenuDemo/project.properties
[6]: https://github.com/SpecialCyCi/AndroidResideMenu/issues/68
[7]: https://github.com/SpecialCyCi/AndroidResideMenu#usage