webView使用内部浏览器加载网页

来源:互联网 发布:金铅笔网络运营 编辑:程序博客网 时间:2024/05/17 01:27

效果图


方式一:

核心代码

package com.ican.subjects.activity;import android.app.ProgressDialog;import android.view.KeyEvent;import android.webkit.WebChromeClient;import android.webkit.WebResourceRequest;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import com.ican.subjects.R;import com.ican.subjects.base.BaseActivity;/** * 创建者     涂文远 * 创建时间   2016/8/31 16:10 * 描述      ${TODO} * <p/> * 更新者     $Author$ * 更新时间   $Date$ * 更新描述   ${TODO} */public class WebViewActivity extends BaseActivity {    private WebView mWebView;    private ProgressDialog mProgressDialog;    @Override    public int getLayout() {        return R.layout.activity_webview;    }    @Override    protected void initView() {        mWebView = (WebView) findViewById(R.id.blog_detail_webview);        mProgressDialog = new ProgressDialog(this);        mProgressDialog.setIcon(R.mipmap.ic_launcher);        mProgressDialog.setTitle( "进度对话框" );        mProgressDialog.setMessage( "玩命下载中...." );        // 设置对话框的样式为水平        mProgressDialog.setProgressStyle(ProgressDialog. STYLE_HORIZONTAL);        mProgressDialog.setMax(100);        mProgressDialog.show();        mWebView.setWebViewClient(new WebViewClient(){            /*@Override            public boolean shouldOverrideUrlLoading(WebView view, String url) {                view.loadUrl("http://www.2000df.com");                return true;            }*/            @Override            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {                view.loadUrl("http://www.2000df.com");                return true;            }        });    }    @Override    protected void initData() {        mWebView.setWebChromeClient(new MyWebChromeClient());        WebSettings settings = mWebView.getSettings();        settings.setJavaScriptEnabled(true);        settings.setJavaScriptCanOpenWindowsAutomatically(true);        settings.setUseWideViewPort(true);//设置此属性,可任意比例缩放        settings.setLoadWithOverviewMode(true);        settings.setBuiltInZoomControls(true);        settings.setSupportZoom(true);        // User settings        /*if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            if (0 != (getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE)) {                WebView.setWebContentsDebuggingEnabled(true);            }        }        settings.setJavaScriptEnabled(true);//设置webview支持javascript        settings.setLoadsImagesAutomatically(true);//支持自动加载图片        settings.setUseWideViewPort(true);//设置webview推荐使用的窗口,使html界面自适应屏幕        settings.setLoadWithOverviewMode(true);        settings.setSaveFormData(true);//设置webview保存表单数据        settings.setSavePassword(true);//设置webview保存密码        settings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);//设置中等像素密度,medium=160dpi        settings.setSupportZoom(true);//支持缩放        CookieManager.getInstance().setAcceptCookie(true);        if (Build.VERSION.SDK_INT > 8) {            settings.setPluginState(WebSettings.PluginState.ON_DEMAND);        }        // Technical settings        settings.setSupportMultipleWindows(true);        mWebView.setLongClickable(true);        mWebView.setScrollbarFadingEnabled(true);        mWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);        mWebView.setDrawingCacheEnabled(true);        settings.setAppCacheEnabled(true);        settings.setDatabaseEnabled(true);        settings.setDomStorageEnabled(true);*/        mWebView.loadUrl("http://www.2000df.com");    }    private class MyWebChromeClient extends WebChromeClient {        @Override        public void onProgressChanged(WebView view, int newProgress) {            if (newProgress == 100) {                //Toast.makeText(WebViewActivity.this, "加载完成", Toast.LENGTH_SHORT).show();                mProgressDialog.dismiss();                //progress.setVisibility(View.GONE);            } else {                /*if (progress.getVisibility() == View.GONE)                    progress.setVisibility(View.VISIBLE);                progress.setProgress(newProgress);*/                mProgressDialog.setProgress(newProgress);            }            super.onProgressChanged(view, newProgress);        }    }    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {            mWebView.goBack();            return true;        }        return super.onKeyDown(keyCode, event);    }}

方式二:

核心代码

package com.xuecheyi.activity;import android.annotation.SuppressLint;import android.app.Dialog;import android.content.Intent;import android.graphics.Bitmap;import android.os.Build;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.webkit.JsResult;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.LinearLayout;import com.xuecheyi.BaseActivity;import com.xuecheyi.mb.R;import com.xuecheyi.utils.Constant;import com.xuecheyi.utils.DialogUtil;import com.xuecheyi.utils.LogUtil;import com.xuecheyi.utils.SPUtils;import com.xuecheyi.views.TitleManager;import com.xuecheyi.views.XCYJavascriptInterface;import org.json.JSONObject;@SuppressLint("SetJavaScriptEnabled")public class LoadZTWebViewActivity extends BaseActivity implementsOnClickListener {private WebView mWebview;private WebSettings settings;private String titleStr, urlPath, path, adPath;private String mType;private Dialog loadDialog;private LinearLayout title_back_ll;private XCYJavascriptInterface mXCYJavascriptInterface;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_zt_protocol);findViews();init();}@Overrideprotected void onRestart() {super.onRestart();if(Constant.IsFromLogin) {findViews();init();Constant.IsFromLogin = false;}}public void initCS() {if (Build.VERSION.SDK_INT >= 19) {mWebview.getSettings().setLoadsImagesAutomatically(true);} else {mWebview.getSettings().setLoadsImagesAutomatically(false);}}private class MyWebViewClient extends WebViewClient {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (url.indexOf("tel:") < 0) {// 页面上有数字会导致连接电话view.loadUrl(url);}return true;}}@Overridepublic void findViews() {title_back_ll = (LinearLayout) findViewById(R.id.title_back_ll);// TODO Auto-generated method stubmWebview = (WebView) findViewById(R.id.mWebview);settings = mWebview.getSettings();settings.setJavaScriptEnabled(true);settings.setJavaScriptCanOpenWindowsAutomatically(true);mXCYJavascriptInterface = new XCYJavascriptInterface(mWebview,this);mWebview.addJavascriptInterface(mXCYJavascriptInterface,"XCYAndroid");// 设置webview缓存settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//initCS();}@Overridepublic void init() {// TODO Auto-generated method stubloadDialog = DialogUtil.getLoadingDialog(this);titleStr = getIntent().getStringExtra("titleStr");mType = getIntent().getStringExtra("type");path = getIntent().getStringExtra("path");adPath = getIntent().getStringExtra("adPath");if (mType != null && mType.equals("DriverSchool")) {String jxId = getIntent().getStringExtra("jxId");urlPath = Constant.BASE_WEBVIEW_PATH + "jx_detail.html?jxId="+ jxId;mWebview.loadUrl(urlPath);} else if (mType != null && mType.equals("DriverTeacher")) {String jlId = getIntent().getStringExtra("jlId");urlPath = Constant.BASE_WEBVIEW_PATH + "jl_detail.html?jlId="+ jlId;mWebview.loadUrl(urlPath);} else if (mType != null && mType.equals("FAQ")) {settings.setCacheMode(WebSettings.LOAD_DEFAULT);urlPath = Constant.BASE_WEBVIEW_PATH + "FAQ.html";mWebview.loadUrl(urlPath);}TitleManager.showTitleByBack(this, null, titleStr, R.string.title_back,0, this);if (null != path) {urlPath = "file:///android_asset/html/" + path;mWebview.loadUrl(urlPath);}if (null != adPath) {urlPath = adPath+"&token="+getToken();//urlPath = adPath;mWebview.loadUrl(urlPath);}LogUtil.e("####", "##显示网址##" + urlPath);mWebview.setWebViewClient(new MyWebViewClient());mWebview.setWebViewClient(new WebViewClient() {@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {// TODO Auto-generated method stubloadDialog.show();}@Overridepublic void onPageFinished(WebView view, String url) {loadDialog.dismiss();}});mWebview.setWebChromeClient(new WebChromeClient() {@Overridepublic boolean onJsAlert(WebView view, String url, String message, JsResult result) {// TODO Auto-generated method stubreturn super.onJsAlert(view, url, message, result);}});}public String getToken() {String token = (String) SPUtils.get(this, Constant.UserInfo.USER_TOKEN, "");LogUtil.e("####", "token:" + token);if (token != null && !token.equals("")) {return token;} else {return "";}}@Overridepublic void setListener() {// TODO Auto-generated method stub}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.title_back_ll:if (path != null && path.equals("splash")) {Intent intent = new Intent(LoadZTWebViewActivity.this,MainActivity.class);startActivity(intent);LoadZTWebViewActivity.this.finish();} else {LoadZTWebViewActivity.this.finish();}break;}}@Overridepublic void onRecvData(String type, JSONObject response) {// TODO Auto-generated method stub}public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {if (path != null && path.equals("splash")) {Intent intent = new Intent(LoadZTWebViewActivity.this,MainActivity.class);startActivity(intent);LoadZTWebViewActivity.this.finish();} else {if (mWebview.canGoBack()) {mWebview.goBack();return true;} else {finish();}}return true;}return super.onKeyDown(keyCode, event);}@Overrideprotected void onPause() {super.onPause();mWebview.onPause();}@Overrideprotected void onResume() {super.onResume();mWebview.onResume();}}


0 0
原创粉丝点击