私のActionBar(実際にはActionBarSherlock)に、アクティビティがロードされている間にメニュー項目をアニメートしようとしています。私が持っているコードは、アクティビティが初めて作成されたときに動作しますが、アクティビティが再び呼び出されたときはonCreate
の後にonCreateOptionsMenu
が呼び出されるため、 "loadingItem"でNullReference例外が発生します。私はonPrepareOptionsMenu
を使ってみましたが、同じことです。メニュー項目をアニメーション化する
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>
アップデート:私は達成しようとしているものを最終的に
これ。私はWebViewのを持っていると私はWebViewのは、読み込みが完了するまでのローディングアイコンを表示したい:
@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);
}
}
});
}
いつアニメーションを実行しますか?常に?特定のイベントでは?作成するには? –
私は自分のしていることを明確にすべきである私のOPにさらにコードを追加しました。 –