关于github开源项目Context-Menu.Android详解

You can easily add awesome animated context menu to your app.

Check this project on dribbble

Check this project on Behance

ContextMenu

Usage:

对于一个工作实现,看看这个应用程序模块

1. 克隆存储库和添加到您的项目来源或使用它:

compile 'com.yalantis:contextmenu:1.0.4'

2. 创建MenuObject列表,包括图标或图标和描述。

你可以用任何的resource, bitmap, drawable, color as image:

    item.setResource(...)  
    item.setBitmap(...)  
    item.setDrawable(...)  
    item.setColor(...)  

你可以设置图片ScaleType:

    item.setScaleType(ScaleType.FIT_XY)

You can use any resource, drawable, color as background:

    item.setBgResource(...)
    item.setBgDrawable(...)
    item.setBgColor(...)

现在你可以轻松添加文本外观风格菜单标题:

    In your project styles create style for text appearance
    (For better visual effect extend it from TextView.DefaultStyle):

     <style name="TextViewStyle" parent="TextView.DefaultStyle">
        <item name="android:textStyle">italic|bold</item>
        <item name="android:textColor">#26D0EB</item>
     </style>

And set it's id to your MenuObject :    

        MenuObject addFr = new MenuObject("Add to friends");
        BitmapDrawable bd = new BitmapDrawable(getResources(),
                BitmapFactory.decodeResource(getResources(), R.drawable.icn_3));
        addFr.setDrawable(bd);
        addFr.setMenuTextAppearanceStyle(R.style.TextViewStyle);

You can set any color as divider color:

你可以设置任何颜色分频器的颜色:

    item.setDividerColor(...)

示例:

    MenuObject close = new MenuObject();
    close.setResource(R.drawable.icn_close);

    MenuObject send = new MenuObject("Send message");
    send.setResource(R.drawable.icn_1);

    List<MenuObject> menuObjects = new ArrayList<>();
    menuObjects.add(close);
    menuObjects.add(send);

3. Create newInstance of ContextMenuDialogFragment, which receivedMenuParams object.

    MenuParams menuParams = new MenuParams();
    menuParams.setActionBarSize((int) getResources().getDimension(R.dimen.tool_bar_height));
    menuParams.setMenuObjects(getMenuObjects());
    menuParams.setClosableOutside(true);
    // set other settings to meet your needs
    mMenuDialogFragment = ContextMenuDialogFragment.newInstance(menuParams);

4. Set menu with button, which will open ContextMenuDialogFragment.

    @Override
    public boolean onCreateOptionsMenu(final Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.context_menu:
                mMenuDialogFragment.show(fragmentManager, "ContextMenuDialogFragment");
                break;
        }
        return super.onOptionsItemSelected(item);
    }

5. Implement OnMenuItemClickListener interface with onMenuItemClickmethod.

public class MainActivity extends ActionBarActivity implements OnMenuItemClickListener
…
    @Override
    public void onMenuItemClick(View clickedView, int position) {
         //Do something here
    }

Customization:

For better experience menu item size should be equal to ActionBar height.

newInstance of ContextMenuDialogFragment receives MenuParams object that has the fields:

mMenuObjects - list of MenuObject objects,

mAnimationDelay - delay in millis after fragment opening and before closing, which will make animation smoother on slow devices,

nAnimationDuration - duration of every piece of animation in millis,

isClosableOutside - if menu can be closed on touch to non-button area,

isFitSystemWindows - if true, then the default implementation of fitSystemWindows(Rect) will be executed,

isClipToPadding - true to clip children to the padding of the group, false otherwise.

The last two parameters may be useful if you use Translucent parameters in your theme:

    <item name="android:windowTranslucentStatus">true</item>

To stay Context Menu below Status Bar set fitSystemWindows to true and clipToPadding to false.

Compatibility

  • Android Honeycomb 3.0+

Changelog

Version: 1.0.4

  • Old ContextMenuDialogFragment newInstance methods are deprecated. Use new universal one that received MenuParams.
  • Added possibility to dismiss menu by clicking on non-button area. SeeMenuParams.setClosableOutside(boolean).

Version: 1.0.3

  • Added menu text appearence style. (Note: other text style methods are deprecated).

Version: 1.0.2

  • Changed MenuObject constructors. Image setting is moved to methods
  • Added styling of MenuObject image, background, text color, divider color
  • Added possibility to interact with translucent Status Bar

Version: 1.0.1

  • Added OnMenuItemLongClickListener (usage: the same as OnMenuItemClickListener, check sample app)
  • Renamed:
com.yalantis.contextmenu.lib.ContextMenuDialogFragment.ItemClickListener ->
com.yalantis.contextmenu.lib.interfaces.OnMenuItemClickListener

com.yalantis.contextmenu.lib.ContextMenuDialogFragment.ItemClickListener.onItemClick(...) ->
com.yalantis.contextmenu.lib.interfaces.OnMenuItemClickListener.onMenuItemClick(...)

Version: 1.0

  • Pilot version

你可能感兴趣的:(github,android,开源项目,animation,library)