Circle Menu for Android

repository·master·Indexed 23 days ago

https://github.com/ramotion/circle-menu-android

An Android UI component providing a circular menu layout with Material Design animations. Supports configuration via XML attributes or programmatically, event handling through CircleMenuView.EventListener, and programmatic control of menu visibility. Requires Android 4.1 (API level 16) or greater.

Tokens
1.2K
Snippets
3
Records
6
Agent score
34%

What's inside circle-menu-android

  1. Configure CircleMenuView via XML

    master

    To use the menu in your layout, place the CircleMenuView in your XML and provide arrays for button icons and colors using the app:button_icons and app:button_colors attributes.

    Example resource definition in res/values/buttons.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array name="icons">
            <item>@drawable/ic_home_white_24dp</item>
            <item>@drawable/ic_search_white_24dp</item>
            <item>@drawable/ic_notifications_white_24dp</item>
            <item>@drawable/ic_settings_white_24dp</item>
            <item>@drawable/ic_place_white_24dp</item>
        </array>
        <array name="colors">
            <item>@android:color/holo_blue_light</item>
            <item>@android:color/holo_green_dark</item>
            <item>@android:color/holo_red_light</item>
            <item>@android:color/holo_purple</item>
            <item>@android:color/holo_orange_light</item>
        </array>
    </resources>
    app:button_colors="@array/colors"
    app:button_icons="@array/icons"
  2. Handle CircleMenuView events with CircleMenuView.EventListener

    master

    To respond to menu animations and button clicks, implement the CircleMenuView.EventListener and attach it using setEventListener().

    Available methods to override:

    • onMenuOpenAnimationStart(@NonNull CircleMenuView view)
    • onMenuOpenAnimationEnd(@NonNull CircleMenuView view)
    • onMenuCloseAnimationStart(@NonNull CircleMenuView view)
    • onMenuCloseAnimationEnd(@NonNull CircleMenuView view)
    • onButtonClickAnimationStart(@NonNull CircleMenuView view, int index)
    • onButtonClickAnimationEnd(@NonNull CircleMenuView view, int index)
    final CircleMenuView menu = (CircleMenuView) findViewById(R.id.circle_menu);
    menu.setEventListener(new CircleMenuView.EventListener() {
        @Override
        public void onMenuOpenAnimationStart(@NonNull CircleMenuView view) {
            Log.d("D", "onMenuOpenAnimationStart");
        }
    
        @Override
        public void onMenuOpenAnimationEnd(@NonNull CircleMenuView view) {
            Log.d("D", "onMenuOpenAnimationEnd");
        }
    
        @Override
        public void onMenuCloseAnimationStart(@NonNull CircleMenuView view) {
            Log.d("D", "onMenuCloseAnimationStart");
        }
    
        @Override
        public void onMenuCloseAnimationEnd(@NonNull CircleMenuView view) {
            Log.d("D", "onMenuCloseAnimationEnd");
        }
    
        @Override
        public void onButtonClickAnimationStart(@NonNull CircleMenuView view, int index) {
            Log.d("D", "onButtonClickAnimationStart| index: " + index);
        }
    
        @Override
        public void onButtonClickAnimationEnd(@NonNull CircleMenuView view, int index) {
            Log.d("D", "onButtonClickAnimationEnd| index: " + index);
        }
    });
  3. Reference CircleMenuView attributes

    master

    The following attributes can be specified via XML or through related setter methods:

    • button_icons: Array of buttons icons.
    • button_colors: Array of buttons colors.
    • icon_menu: Menu default icon.
    • icon_close: Menu closed icon.
    • icon_color: Menu icon color.
    • duration_ring: Ring effect duration.
    • duration_open: Menu opening animation duration.
    • duration_close: Menu closing animation duration.
    • distance: Distance between center button and buttons