package com.smartalk.gank.presenter; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import com.smartalk.gank.R; import com.smartalk.gank.model.entity.Gank; import com.smartalk.gank.utils.AndroidUtil; import com.smartalk.gank.utils.ShareUtil; import com.smartalk.gank.view.IWebView; /** * Created by panl on 16/1/2. */ public class WebViewPresenter extends BasePresenter<IWebView> { public WebViewPresenter(Context context, IWebView iView) { super(context, iView); } @Override public void release() { } public void setWebViewSettings(WebView webView, String url) { WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setLoadWithOverviewMode(true); settings.setAppCacheEnabled(true); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); settings.setSupportZoom(true); webView.setWebChromeClient(new ChromeClient()); webView.setWebViewClient(new GankClient()); webView.loadUrl(url); } public void refresh(WebView webView) { webView.reload(); } public void copyUrl(String text) { AndroidUtil.copyToClipBoard(context.getApplicationContext(), text, context.getString(R.string.copy_success)); } public void openInBrowser(String url) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); Uri uri = Uri.parse(url); intent.setData(uri); if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } else { iView.openFailed(); } } public void moreOperation(Gank gank) { if (gank != null) ShareUtil.shareGank(context, gank); } private class ChromeClient extends WebChromeClient { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); iView.showProgressBar(newProgress); } @Override public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); iView.setWebTitle(title); } } private class GankClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url != null) view.loadUrl(url); return true; } } }