PowerMenu
PowerMenu can be fully customized and used for popup dialogs.
Gradle
And add a dependency code to your module's build.gradle
file.
Usage
Basic example
This is a basic example on a screenshot. Here is how to create PowerMenu
using PowerMenu.Builder
.
We can add an item or an item list using PowerMenuItem
class. This is how to initialize PowerMenuItem
.
The first argument is an item title, and the other is selected status.
If isSelected is true, the item's text and the background color will be changed by settings like below.
OnMenuItemClickListener
is for listening to the item click of the popup menu.
After implementing the listener, we should set using setOnMenuItemClickListener
method.
The last, show the popup! Various show & dismiss methods.
Customizing Popup
We can customize item styles using CustomPowerMenu
and your customized adapter.
Here is how to customize the popup item that has an icon.
Firstly, we should create our item model class.
And we should create our customized XML layout and an adapter.
Custom Adapter should extend MenuBaseAdapter<YOUR_ITEM_MODEL_CLASS>
.
The last, create the CustomPowerMenu
with the onMenuItemClickListener
.
Preference
PowerMenu supports saving of the last selected menu and recovering as lifecycle.
Here is how to save and recover selected menu.
Here are the methods related to preference.
Menu Effect
We can give two types of circular revealed animation effect.
Here is how to create a menu effect simply.
Dialogs
We can create looks like dialogs using PowerMenu
.
Here is an example of the normal dialog. Dialogs are composed of a header, footer, and body.
And we can create a customized dialog like below.
Anchor
We can show the popup menu as drop down to the anchor.
or we can control the position of the popup menu using the below methods.
like this :
Background
These are options for the background.
Avoid Memory leak
Dialog, PopupWindow and etc.. have memory leak issue if not dismissed before activity or fragment are destroyed.
But Lifecycles are now integrated with the Support Library since Architecture Components 1.0 Stable released.
So we can solve the memory leak issue so easily.
Just use setLifecycleOwner
method. Then dismiss
method will be called automatically before activity or fragment would be destroyed.
Lazy initialization in Kotlin
We can initialize the PowerMenu
property lazily using powerMenu
keyword and PowerMenu.Factory
abstract class.
The powerMenu
extension keyword can be used in Activity and Fragment.
We should create a factory class which extends PowerMenu.Factory
.
An implementation class of the factory must have a default(non-argument) constructor.