The library Ohmenu is aimed to be used by all applications that have several options for the user within the same program. For example, in a game one may want to have an option to begin a new game, load game, see high scores, etc. With Ohmenu, developers are able to skip the paradigm of physical buttons, which make no sense in a touch screen device, and make use of an intuitive, modern menu for human beings. This library is an attempt to make menus accesible for all users regardless of technical level. Special emphasis was made on the less savvy users that either have difficulty reading the tiny labels of many applications or simply refuse to use a stylus to push the buttons that seemed to be designed for children-like fingers.
The library Ohmenu was intended to be used by pressing and holding the main button at the bottom of the screen, and then swiping the finger towards the desired menu option to let the finger go off the screen once it is over it. Feedback is given by darkening the button that is being hovered and with a label on the top part of the screen, so the user does not make a wrong selection. Once the desired menu item is selected, to execute its attached action the user must tap on the enlarged "button" for such option. If the user made the wrong selection, it can press and hold the main button again to swipe towards the correct option like it did before, or it can "click" the main button to cancel the current selection, and then tap on the desired option rather than swiping from the main button. Another way to change the current selection is to flick the finger on the screen to rotate the wheel intuitively until the correct option is selected.
The library Ohmenu can be simply added as a library to any android project just like other libraries like ActionBarSherlock, or imported as a .jar file into the project's location.
The library Ohmenu was designed to work only in portrait mode, so developers
that wish to use the library must add the following declaration to the
activity implementing Ohmenu in the application manifest:
Also, special care must be taken with the application lifecycle. I am not specially knowledgeable on the topic, so in the testing applications that I have used the library the activity is re-created everytime that it comes back to front, otherwise the menu seems to not display at all!
Lastly, an example application that uses the Ohmenu library is ohmenu-example which can be found at http://github.com/omtinez/ohmenu-example. Both the application and the library have been released under a permissive BSD license and can be used in commercial and non-commercial applications, see the bottom of this document for details. Acknowledgements would be appreciated but are not necessary, and any feedback would be welcome (even if you want to drop a like just to say thanks!). The idea with this project is to make easy to use menus available to anyone and hopefully abolish the hard to click, unforgiving, not friendly menus seen in many applications today, so here are my two cents!
Copyright (c) 2013, Oscar Martinez All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.