Android - 菜单溢出图标上的动画
Android - Animation on Menu Overflow Icon
我正在尝试应用 'pulse' 动画来将注意力吸引到我的工具栏中的菜单项;但是,如果隐藏所有菜单项,我找不到将动画应用于溢出图标的方法。
使用 中的代码,我可以获得 ActionMenuView,但它没有任何要应用动画的子项。
//amv.getChildCount() returns 0.
在我的片段中
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Toolbar toolbar = getToolbar();
for (int i = 0; i < toolbar.getChildCount(); i++) {
View view = toolbar.getChildAt(i);
if(view.getClass().getSimpleName().equals("ActionMenuView")) {
ActionMenuView amv = (ActionMenuView) view;
for (int i1 = 0; i1 < amv.getChildCount(); i1++) {
amv.getChildAt(i1).startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
}
}
}
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:res="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tutorial"
android:title="@string/tutorial"
res:showAsAction="never"
res:actionLayout="@layout/button_info_white"/>
<item
android:id="@+id/social_filter"
android:title="@string/social_filter"
res:showAsAction="never"
/>
</menu>
感谢您的帮助。
由于您的所有项目都没有显示,我认为您可以这样做:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Toolbar toolbar = getToolbar();
for (int i = 0; i < toolbar.getChildCount(); i++) {
View view = toolbar.getChildAt(i);
if (view.getClass().getSimpleName().equals("ActionMenuView")) {
view.startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
}
}
}
我做了一个非常基本的测试,当所有项目都被隐藏时它工作正常(而且你只有溢出图标)。
请做额外的测试,看看你是否没有任何副作用。
我正在尝试应用 'pulse' 动画来将注意力吸引到我的工具栏中的菜单项;但是,如果隐藏所有菜单项,我找不到将动画应用于溢出图标的方法。
使用
//amv.getChildCount() returns 0.
在我的片段中
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Toolbar toolbar = getToolbar();
for (int i = 0; i < toolbar.getChildCount(); i++) {
View view = toolbar.getChildAt(i);
if(view.getClass().getSimpleName().equals("ActionMenuView")) {
ActionMenuView amv = (ActionMenuView) view;
for (int i1 = 0; i1 < amv.getChildCount(); i1++) {
amv.getChildAt(i1).startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
}
}
}
menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:res="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/tutorial"
android:title="@string/tutorial"
res:showAsAction="never"
res:actionLayout="@layout/button_info_white"/>
<item
android:id="@+id/social_filter"
android:title="@string/social_filter"
res:showAsAction="never"
/>
</menu>
感谢您的帮助。
由于您的所有项目都没有显示,我认为您可以这样做:
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
Toolbar toolbar = getToolbar();
for (int i = 0; i < toolbar.getChildCount(); i++) {
View view = toolbar.getChildAt(i);
if (view.getClass().getSimpleName().equals("ActionMenuView")) {
view.startAnimation((AnimationUtils.loadAnimation(getContext(),R.anim.pulse)));
}
}
}
我做了一个非常基本的测试,当所有项目都被隐藏时它工作正常(而且你只有溢出图标)。
请做额外的测试,看看你是否没有任何副作用。