原创

Android开源: Hover - 谷歌开源超酷浮动菜单

简介

Hover是Android的浮动菜单实现。

目标

Hover的目标是:

  1. 为Android开发人员提供一个易于使用,开箱即用的浮动菜单实现
  2. 为Android开发者提供常用工具,以创建自己的浮动菜单。

Beta通知

悬停仍在大量发展。 还有很多代码清理要做,所以期望打破API随时间的变化。

也就是说,Hover应该在这个时候处于可用状态。

演示

Hover repo中包含演示应用程序。 这里有一些演示的屏幕截图。

Android开源: Hover - 谷歌开源超酷浮动菜单 Android开源: Hover - 谷歌开源超酷浮动菜单 Android开源: Hover - 谷歌开源超酷浮动菜单

Android开源: Hover - 谷歌开源超酷浮动菜单 Android开源: Hover - 谷歌开源超酷浮动菜单 Android开源: Hover - 谷歌开源超酷浮动菜单

入门

从 HoverMenuService派生

从HoverMenuService派生一个子类开始使用Hover,请创建HoverMenuService的子类来托管Hover菜单。 您需要覆盖的唯一方法是createHoverMenuAdapter(),它将返回您的Hover菜单的内容。

public class MyHoverMenuService extends HoverMenuService {

    @Override
    protected HoverMenuAdapter createHoverMenuAdapter() {
        // Create and configure your content for the HoverMenu.
        return myHoverMenuAdapter;
    }

}

实现一个HoverMenuAdapter

HoverMenuAdapter很像一个标准的Android适配器。 HoverMenuAdapters为您的悬停菜单中显示的每个选项卡提供一个视图。 它还为每个选项卡提供相应的NavigatorContent。

public class MyHoverMenuAdapter extends BaseHoverMenuAdapter {

    private List<String> mTabs;
    private Map<String, NavigatorContent> mContentMap = new HashMap<>();

    public MyHoverMenuAdapter() {
        mTabs = Arrays.asList("first", "second");
        mContentMap.put("first", /*...*/);
        mContentMap.put("second", /*...*/);
    }

    @Override
    public void getTabCount() {
        return mTabs.size();
    }

    @Override
    public long getTabId(int position) {
        return mTabs.get(position).hashCode();
    }

    @Override
    public View getTabView(int position) {
        String tabName = mTabs.get(position);
        if ("first".equals(tabName)) {
            // Create and return the tab View for "first".
        } else if ("second".equals(tabName)) {
            // Create and return the tab View for "second".
        }
        // etc.
    }

    @Override
    public NavigatorContent getNavigatorContent(int position) {
        String tabName = mTabs.get(position);
        return mContentMap.get(tabName);
    }

}

用HoverMenu直接工作

如果你想从头开始创建自己的Hover菜单服务,或者如果你想直接试验一个HoverMenu,你可以自己实例化一个。 使用HoverMenuBuilder为您的特定需求配置HoverMenu。

// Build a HoverMenu.
HoverMenu hoverMenu = new HoverMenuBuilder(context)
                        .displayWithinWindow()
                        .useNavigator(myNavigator)
                        .startAtLocation(savedLocationMemento)
                        .useAdapter(adapter)
                        .build();

// When you're ready for your HoverMenu to appear on screen.
hoverMenu.show();

// When you want to remove your HoverMenu from the screen.
hoverMenu.hide();

// When you want to force your HoverMenu to expand fullscreen.
hoverMenu.expandMenu();

// When you want to force your HoverMenu to collapse to a draggable icon.
hoverMenu.collapseMenu();

// When you want to change the tabs and content in your HoverMenu.
hoverMenu.setAdapter(otherAdapter);

// When you want to save the display state of your HoverMenu.
Parcelable displayState = hoverMenu.createDisplayStateMemento();

// When you want to be notified when your HoverMenu is added to/removed from the display.
hoverMenu.addOnVisibilityChangeListener(listener);

// When you want to be notified when your HoverMenu expands or collapses.
hoverMenu.addOnCollapseAndExpandListener(listener);

下载

可通过jCenter获取Hover:

compile 'io.mattcarroll.hover:hover:0.9.6'

问题

在当前时间,悬停菜单不能在正常视图层次结构中使用。 它只能在窗口中使用。

免责声明

这不是Google的官方产品。

许可

Copyright (C) 2016 Nest Labs

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
正文到此结束
Loading...