2013-03-10 3 views
1

У меня есть значок ActionBar, который является кнопкой на экране сообщений чата. У меня две копии значка. Один стандартный серый и один желтый.Мигает значок панели действий

Когда я показываю желтый значок, чтобы указать, что есть ожидание сообщения, я хочу, чтобы он медленно мигал.

Возможно ли это с помощью значка в панели действий?

+0

Когда вы говорите «значок», что вы имеете в виду? Какая часть панели действий находится в этом месте? Можете ли вы опубликовать скриншот? –

+0

Стандартные значки меню панели действий (или кнопка или пункт меню, в зависимости от того, какой правильный термин) в правой части панели действий. –

ответ

1

Вы можете попробовать использовать метод MenuItem с помощью метода setIcon. Так как требуется Drawable, вы можете использовать AnimationDrawable для достижения эффекта медленной вспышки.

+0

Хорошее предложение, но, к сожалению, это не работает. Я попытался установить AnimationDrawable в MenuItem и начал анимацию в onCreateOptionsMenu(). Я думаю, что единственный способ сделать это - создать собственный класс ActionProvider, который немного болит. –

+0

Можете ли вы опубликовать код, который вы пробовали? –

1

Я, вероятно, сделал это изворотливым путем, поскольку я совершенно новичок в Android, но, возможно, это поможет кому-то/кто-то меня исправит.

У меня есть таймер 500 мс, который выполняется периодически, который запускает «invalidateOptionsMenu();» это заставит меню перерисовываться, как только это произойдет, вы просто скроете/покажите свою иконку внутри, ниже меня мигает значок «no signal». Просто установите таймер на любой период времени, который вы хотите.

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.menu, menu); 

    if(!AppStates.InternetAvailable || !AppStates.ServerContactable) 
    { 
     if(!NoSignalFlashState) NoSignalFlashState=true; 
     else NoSignalFlashState=false; 
     menu.findItem(R.id.ActionNoSignal).setVisible(NoSignalFlashState); 
    } 
    else menu.findItem(R.id.ActionNoSignal).setVisible(false); 

    super.onCreateOptionsMenu(menu); 

    return true; 
} 
Смежные вопросы