Вот еще один хитрый способ: он не будет генерировать исключение, когда исполняемый элемент изменяет элементы пользовательского интерфейса.
public class SimpleDelayAnimation extends Animation implements Animation.AnimationListener {
Runnable callBack;
public SimpleDelayAnimation(Runnable runnable, int delayTimeMilli) {
setDuration(delayTimeMilli);
callBack = runnable;
setAnimationListener(this);
}
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
callBack.run();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
}
Вы можете вызвать анимацию так:
view.startAnimation(new SimpleDelayAnimation(delayRunnable, 500));
Анимацию можно прикрепить к любому представлению.
Вы можете использовать Ping's rxb :
year = member("1", "2") + digit*3
month = either("Jan", "Feb", "Mar")
day = digit*2
hour_mins = digit*2 + ":" + digit*2
date = month + " " + day + ", " + year + ", " + hour_mins
Затем вы можете напрямую сопоставить полученную дату или использовать
DateR = date.compile()
Для этого вы можете использовать синтаксис форматирования Python:
types = {
"year": r'[12]\d{3}',
"month": r'(Jan|Feb|Mar)',
"day": r'\d{2}',
"hourmins": r'\d{2}:\d{2}',
}
import re
Date = r'%(month)s %(day)s, %(year)s, %(hourmins)s' % types
DateR = re.compile(Date)
(обратите внимание на добавленную группировку в январе | феврале | марте.)