我想为我的菜单图标着色,使用一种颜色显示可见的图标,使用不同颜色的溢出菜单中的那些图标。 所以我写了以下代码:
final MenuBuilder builder = getMenuBuilder(menu);
if (builder != null) {
builder.flagActionItems();
final ArrayList<MenuItemImpl> items = builder.getVisibleItems();
for (int i = 0, size = items.size(); i < size; ++i) {
final MenuItemImpl item = items.get(i);
final Drawable icon = item.getIcon();
if (icon != null) {
final Drawable mutate = icon.mutate();
if (item.isActionButton()) {
mutate.setColorFilter(actionItemColor, PorterDuff.Mode.SRC_ATOP);
} else {
mutate.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
}
item.setIcon(mutate);
}
}
}
这段代码完美无缺,但我对性能不满意,特别是因为我开始使用矢量绘图。 这是三个矢量图标的测量,你的图标是直接可见的。但是对flagActionItems()的调用大约需要160ms ......这似乎有点多了。
有没有人知道如何提高性能。该代码需要在Android 4.2及更高版本上运行。