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

Tha*_*man 5 android android-appcompat android-menu android-toolbar

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

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

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)

我也使用onCreateOptionsMenu内部活动的方法,我膨胀我的menu.xml文件,但我不知道如何获得更多控制自动创建的溢出图标.我最感兴趣的是如何引用菜单图标所以我可以为它设置动画.我不关心动画类型.它可以是一个简单的旋转动画

Ell*_*ltz 2

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

//we declare our objects globally
Toolbar tool;  ActionMenuView amv;
Run Code Online (Sandbox Code Playgroud)

然后覆盖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;
}
Run Code Online (Sandbox Code Playgroud)

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

amv.getChildAt(amv.getChildCount()-1).startAnimation(AnimationUtils.loadAnimation(
        MainActivity.this,R.anim.abc_fade_in));
Run Code Online (Sandbox Code Playgroud)

这为您提供了基本的淡入动画 - 您现在可以为您的旅程提供便利。

编辑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;
}
Run Code Online (Sandbox Code Playgroud)

您调用视图初始化的地方也可以amvonCreateOptionsMenuonPrepareOptionsMenu,我选择是onPrepareOptionsMenu因为我想要可读性

希望能帮助到你