我按照tutorial了解了如何创建动画刷新按钮。
我想扩展功能,然后在教程中介绍。我想在用户点击按钮时调用动画,也在onOptionsItemSelected()
方法之外调用。
我有TimerTask
每30秒运行一次AsyncTask
,并希望在onPreExecute()
方法上启动动画,并在onPostExecute()
方法上停止动画。
以下是代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final MenuItem i = item;
switch (item.getItemId()) {
case R.id.refresh_option:
new ProgressTask(MainActivity.this).execute();
refreshIcon(item);
Handler h = new Handler();
h.postDelayed(new Runnable() {
@Override
public void run() {
stopRefresh(i);
}
}, 750);
return (true);
}
return super.onOptionsItemSelected(item);
}
private void refreshIcon(MenuItem item){
LayoutInflater inflater = (LayoutInflater) getApplication()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ImageView iv = (ImageView) inflater.inflate(R.layout.action_refresh,
null);
Animation rotation = AnimationUtils.loadAnimation(getApplication(),
R.anim.refresh_rotate);
rotation.setRepeatCount(Animation.INFINITE);
iv.startAnimation(rotation);
item.setActionView(iv);
}
private void stopRefresh(MenuItem item){
item.getActionView().clearAnimation();
item.setActionView(null);
}