Erste Menüpunkt zu animieren

Ich versuche zu animieren, ein Menü-Element, während die Aktivität geladen, in meine ActionBar (eigentlich ActionBarSherlock). Der code den ich habe funktioniert die erste Zeit die Aktivität angelegt wird, aber jedes mal, wenn die Aktivität erneut aufgerufen wird, bekomme ich eine NullReference exception auf "loadingItem", weil onCreateOptionsMenu aufgerufen wird, nachdem onCreate. Ich habe versucht, mit onPrepareOptionsMenu aber die gleiche Sache.

public class MyActivity extends SherlockActivity  {
    private MenuItem loadingItem;

    @Override
    public void onCreate(final Bundle icicle) 
    {
        final LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final ImageView ivRefresh = (ImageView)inflater.inflate(R.layout.refresh_view, null);

        final Animation rotation = AnimationUtils.loadAnimation(this, R.anim.refresh);
        ivRefresh.startAnimation(rotation);
        loadingItem.setActionView(ivRefresh);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getSupportMenuInflater().inflate(R.menu.my_menu, menu);
        loadingItem = menu.findItem(R.id.loading);
        return super.onCreateOptionsMenu(menu);
    }
}

my_menu.xml

<?xml version="1.0" encoding="UTF-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/loading" 
          android:icon="@drawable/loading"
          android:showAsAction="always"          
    />

</menu>

Update:

Diese letztlich das, was ich versuche zu erreichen. Ich habe eine WebView und ich will zeigen, ein lade-Symbol, bis die WebView geladen wurde:

    @Override
    public void onCreate(final Bundle icicle) 
    {
        WebView webView = (WebView)findViewById(R.id.webview);
        webView.getSettings().setSupportZoom(true);  
        webView.getSettings().setBuiltInZoomControls(true);

        webView.loadUrl("http://www.google.com");

        webView.setWebViewClient(new WebBrowserClient());

        final LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        final ImageView ivRefresh = (ImageView)inflater.inflate(R.layout.refresh_view, null);

        final Animation rotation = AnimationUtils.loadAnimation(this, R.anim.refresh);
        ivRefresh.startAnimation(rotation);
        loadingItem.setActionView(ivRefresh);

        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {

                if (!isFinishing() && progress == 100 && loadingItem != null && loadingItem.getActionView() != null)
                {
                    loadingItem.getActionView().clearAnimation();
                    loadingItem.setActionView(null);
                }
            }
        }); 
    }
  • Wann soll die animation laufen? Immer? Auf bestimmte Ereignisse? Auf erstellen?
  • Ich fügte hinzu, mehr code zu meiner OP, die klar sein soll, was ich versuche zu tun.
InformationsquelleAutor Kris B | 2012-04-13
Schreibe einen Kommentar