在onOptionsItemSelected之外设置动作栏项

时间:2013-12-13 18:39:10

标签: android android-animation android-menu

我按照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);
}

0 个答案:

没有答案