package com.smartalk.gank.ui.activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.widget.Toolbar; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.webkit.WebView; import android.widget.LinearLayout; import com.daimajia.numberprogressbar.NumberProgressBar; import com.smartalk.gank.PanConfig; import com.smartalk.gank.R; import com.smartalk.gank.model.entity.Gank; import com.smartalk.gank.presenter.WebViewPresenter; import com.smartalk.gank.ui.base.ToolBarActivity; import com.smartalk.gank.utils.TipsUtil; import com.smartalk.gank.view.IWebView; import butterknife.Bind; /** * webView not destroy yet? */ public class WebActivity extends ToolBarActivity<WebViewPresenter> implements IWebView { private Gank gank; WebViewPresenter presenter; LinearLayout contentView; @Bind(R.id.toolbar) Toolbar toolbar; @Bind(R.id.web_view) WebView webView; @Bind(R.id.progressbar) NumberProgressBar progressbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override protected int provideContentViewId() { return R.layout.activity_web; } @Override protected void initPresenter() { presenter = new WebViewPresenter(this, this); presenter.init(); } public static void loadWebViewActivity(Context from, Gank gank) { Intent intent = new Intent(from, WebActivity.class); intent.putExtra(PanConfig.GANK, gank); from.startActivity(intent); } @Override public void showProgressBar(int progress) { if (progressbar == null) return; progressbar.setProgress(progress); if (progress == 100) { progressbar.setVisibility(View.GONE); } else { progressbar.setVisibility(View.VISIBLE); } } @Override public void setWebTitle(String title) { setTitle(title); } @Override public void openFailed() { TipsUtil.showSnackTip(webView, getString(R.string.open_url_failed)); } @Override public void init() { gank = (Gank) getIntent().getSerializableExtra(PanConfig.GANK); setTitle(gank.desc); presenter.setWebViewSettings(webView, gank.url); contentView = (LinearLayout) findViewById(R.id.web_content); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: if (webView.canGoBack()) { webView.goBack(); } else { finish(); } return true; } } return super.onKeyDown(keyCode, event); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_web, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_refresh: presenter.refresh(webView); break; case R.id.action_copy_url: presenter.copyUrl(webView.getUrl()); break; case R.id.action_open_in_browser: presenter.openInBrowser(webView.getUrl()); break; case R.id.action_share_gank: presenter.moreOperation(gank); break; } return super.onOptionsItemSelected(item); } @Override protected void onResume() { if (webView != null) webView.onResume(); super.onResume(); } @Override protected void onPause() { if (webView != null) webView.onPause(); super.onPause(); } @Override protected void onDestroy() { super.onDestroy(); if (webView != null) { contentView.removeView(webView); webView.removeAllViews(); webView.destroy(); webView = null; } presenter.release(); } }