如何动画工具栏溢出菜单图标

时间:2015-09-17 19:33:39

标签: android android-appcompat android-toolbar android-menu

有没有办法为工具栏上的默认3垂直点菜单图标设置动画?

我使用工具栏作为标准代码的操作栏:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

我还在我的onCreateOptionsMenu文件中使用了menu.xml方法 但我不知道如何更好地控制自动创建的溢出图标。我最感兴趣的是如何引用菜单图标所以我可以为它设置动画。我不关心动画类型。它可以是一个简单的旋转动画

1 个答案:

答案 0 :(得分:2)

好吧,你专门使用View ActionMenuView,所以试试这个,将代码复制到Activity

//we declare our objects globally
Toolbar tool;  ActionMenuView amv;

然后覆盖onPrepareOptionsMenu,您决定return是您的选择

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    //to be safe you can check if children are greater than 1
    amv = (ActionMenuView) tool.getChildAt(1);//hope you've met amv
    return true;
}

现在这是关键部分 - 每当你想要动画“ 3 verticall dots ” - (你的溢出)时你必须检查可见的孩子 - (即如果你想)实际上忘记了

amv.getChildAt(amv.getChildCount()-1).startAnimation(AnimationUtils.loadAnimation(
        MainActivity.this,R.anim.abc_fade_in));

为您提供基本的淡入动画 - 您现在可以 pimp your ride

编辑1

上述代码假设除了在onCreateOptionsMenu中夸大菜单外,您没有向工具栏添加任何内容。

假设你有一个复杂的ToolBar使用它来代替你的初始化

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    for(int i =0; i < tool.getChildCount(); ++i){
        if(tool.getChildAt(i).getClass().getSimpleName().equals("ActionMenuView")){
            amv = (ActionMenuView) tool.getChildAt(i);
            break;
        }
    }
    return true;
}

A 也可以在amv视图中初始化onCreateOptionsMenuonPrepareOptionsMenu,我选择了onPrepareOptionsMenu,因为我想要可读性

希望有所帮助