国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

萬能的webView之Activity

2019-11-09 19:05:49
字體:
來源:轉載
供稿:網友
對于使用webview加載一個網頁,使用它的loadurl()方法即可,如果在程序內要打開網頁,難么就要自己創建一個WebViewClient,通過setWebViewClient進行關聯,再如果網頁里面有javaScript那就要設置了
//啟用支持JavascriptWebSettings settings = webView.getSettings();

settings.setJavaScriptEnabled(true);

這都是一系列問題,但有沒有想過直接寫一個activity,只需傳入url就可以顯示網頁,包括解決緩存的使用:

webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
后退時的操作:
//改寫物理按鍵——返回的邏輯    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        // TODO Auto-generated method stub        if(keyCode==KeyEvent.KEYCODE_BACK)        {
            if(webView.canGoBack())            {                webView.goBack();//返回上一頁面                return true;            }            else            {                System.exit(0);//退出程序            }        }        return super.onKeyDown(keyCode, event);    }等等一些列問題.
在此就引入了一個相對比較萬能的webview,傳入url即可,復制就能使用的webview的activity
import android.content.Intent;import android.util.Log;import android.view.View;import android.webkit.WebView;import android.widget.TextView;public class WhyWebActivity extends CanbackWebActivity implements View.OnClickListener {    PRivate TextView header_title;    private String webPageTitle;    @Override    protected int getContentView() {        return R.layout.activity_new_web;    }    @Override    protected WebView getWebview() {        return (WebView) findViewById(R.id.new_web_view);    }    @Override    protected NumberProgressBar getProgressbar() {        return (NumberProgressBar) findViewById(R.id.new_web_progress_bar);    }    @Override    protected TextView getTextViewClose() {        return (TextView) findViewById(R.id.header_left_close);    }    @Override    protected void setTitle(String urlTitle) {        Intent intent = getIntent();        if (intent != null) {            webPageTitle = intent.getStringExtra("title");        }        if (webPageTitle != null && !webPageTitle.equals("")) {            header_title.setText(webPageTitle);        } else {            header_title.setText(urlTitle);        }    }    @Override    protected void onLoadError(WebView webView, int errorCode, String description, String failingUrl) {    }    @Override    protected void onLoadEnd(String url) {    }    @Override    protected void initEnd() {        webview.loadUrl(getIntent().getStringExtra("url"));                   // 網址        findViewById(R.id.header_left_btn).setOnClickListener(this);          // 返回按鈕點擊事件        header_title = (TextView) findViewById(R.id.header_title);    }    @Override    protected void jsCallJava(MWebviewClient mWebviewClient) {    }    @Override    protected void onJsRequest(Object data) {    }    @Override    public void onClick(View v) {        switch (v.getId()) {            // 點擊關閉頁面            case R.id.header_left_btn:                onBackPressed();                break;        }    }}然后就是父類CanBackWebActivity
package cn.moviebuff.app.homewall.Web;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Color;import android.net.http.SslError;import android.os.Bundle;import android.util.Log;import android.view.Gravity;import android.view.KeyEvent;import android.view.View;import android.webkit.JavascriptInterface;import android.webkit.SslErrorHandler;import android.webkit.WebChromeClient;import android.webkit.WebSettings;import android.webkit.WebView;import android.widget.TextView;import android.widget.Toast;import com.umeng.socialize.ShareAction;import com.umeng.socialize.UMShareListener;import com.umeng.socialize.bean.SHARE_MEDIA;import com.umeng.socialize.media.UMImage;import org.json.JSONException;import org.json.JSONObject;import butterknife.ButterKnife;public abstract class CanbackWebActivity extends Activity {    protected WebView webview;    protected NumberProgressBar progressbar;    protected TextView textViewClose;    protected MWebviewClient mWebviewClient;    private String webTitle;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        initView();        if (null != webview && null != progressbar && null != textViewClose) {            iniWebview();            initEnd();        }    }    @Override    public Intent getIntent() {        return super.getIntent();    }    private void initView() {        setContentView(getContentView());        ButterKnife.inject(this);        webview = getWebview();        progressbar = getProgressbar();        textViewClose = getTextViewClose();        toastRoot = getLayoutInflater().inflate(R.layout.activity_sign, null);    }    protected abstract int getContentView();    protected abstract WebView getWebview();    protected abstract NumberProgressBar getProgressbar();    protected abstract TextView getTextViewClose();    protected abstract void setTitle(String urlTitle);    protected abstract void onLoadError(WebView webView, int errorCode, String description, String failingUrl);    protected abstract void onLoadEnd(String url);    protected abstract void initEnd();    protected abstract void jsCallJava(MWebviewClient mWebviewClient);    protected abstract void onJsRequest(Object data);    private static final String APP_CACAHE_DIRNAME = "/webcache";    @SuppressLint("SetJavaScriptEnabled")    @SuppressWarnings("deprecation")    private void iniWebview() {        webview.getSettings().setSupportZoom(false);        webview.getSettings().setBuiltInZoomControls(false);        try {            webview.getSettings().setJavaScriptEnabled(true);        } catch (Exception e) {            System.out.println(e);        }        webview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);        webview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);  //設置 緩存模式        // 開啟 DOM storage API 功能        webview.getSettings().setDomStorageEnabled(true);        //開啟 database storage API 功能        webview.getSettings().setDatabaseEnabled(true);        String cacheDirPath = getFilesDir().getAbsolutePath() + APP_CACAHE_DIRNAME;        //設置  application Caches 緩存目錄        webview.getSettings().setAppCachePath(cacheDirPath);        //開啟 Application Caches 功能        webview.getSettings().setAppCacheEnabled(true);        webview.setWebChromeClient(new MChormeClient());        mWebviewClient = new MWebviewClient(webview);        webview.setWebViewClient(mWebviewClient);        progressbar.setProgressTextColor(Color.parseColor("#29b6f6"));        textViewClose.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                finish();            }        });        // 添加js交互接口類,并起別名 webtest        webview.addJavascriptInterface(this, "webtest");        webview.setWebViewClient(new MWebviewClient(webview));    }    protected class MWebviewClient extends WVJBWebViewClient {        public MWebviewClient(WebView webView) {            //交互            super(webView, new WVJBHandler() {                @Override                public void request(Object data, WVJBResponseCallback callback) {                    JSONObject outdata = (JSONObject) data;                    onJsRequest(outdata);                    Intent intent = new Intent();                    try {                        String act = outdata.getString("act");                        if (act != null) {                            if (act.equals("showToast")) {                                if (outdata.has("str")) {                                    String str = outdata.get("str").toString();                                    if (str != null) {                                        showToast(str);//                                        T.showShort(CanbackWebActivity.this,str);                                    }                                }                            } else if                             }                        }                    } catch (JSONException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                }            });            jsCallJava(this);        }        //加載開始        @Override        public void onPageStarted(WebView view, String url, Bitmap favicon) {            super.onPageStarted(view, url, favicon);        }        //加載完成        @Override        public void onPageFinished(WebView view, String url) {            progressbar.setVisibility(View.GONE);            onLoadEnd(url);            super.onPageFinished(view, url);            boolean isBack = webview.canGoBack();            if (isBack) {                textViewClose.setVisibility(View.VISIBLE);            } else {                textViewClose.setVisibility(View.GONE);            }            //被點擊的圖片地址為:http://image.moviebuff.cn/images/201609/mem_2016-09-19-10_1474253053_99140.jpg!600-max            //動態注入js            // 這段js函數的功能就是,遍歷所有的img幾點,并添加onclick函數,函數的功能是在圖片點擊的時候調用本地java接口并傳遞url過去            view.loadUrl("javascript:(function(){" +                    "var objs = document.getElementsByTagName(/"img/"); " +                    "for(var i=0;i<objs.length;i++)  " +                    "{"                    + "    objs[i].onclick=function()  " +                    "    {  "                    + "        webtest.jsInvokeJava(this.src);  " +                    "    }  " +                    "}" +                    "})()");        }        //加載失敗        @Override        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {            progressbar.setVisibility(View.GONE);            onLoadError(webView, errorCode, description, failingUrl);        }        @Override        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {            super.onReceivedSslError(view, handler, error);            progressbar.setVisibility(View.GONE);        }    }    @JavascriptInterface    public void jsInvokeJava(String img) {        Log.i("ddddddddddsss", "被點擊的圖片地址為:" + img);    }    protected class MChormeClient extends WebChromeClient {        @Override        public void onProgressChanged(WebView view, int newProgress) {            if (newProgress == 100) {                progressbar.setVisibility(View.GONE);            } else {                if (progressbar.getVisibility() != View.VISIBLE) {                    progressbar.setVisibility(View.VISIBLE);                }                progressbar.setProgress(newProgress);            }            super.onProgressChanged(view, newProgress);        }        @Override        public void onReceivedTitle(WebView view, String title) {            super.onReceivedTitle(view, title);            webTitle = title;            setTitle(title);        }    }    @Override    public void onBackPressed() {        if (null != webview && webview.canGoBack()) {            webview.goBack();        } else {            webview.loadUrl("about:blank");            super.onBackPressed();        }    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {            webview.loadUrl("about:blank");            //webView.destroy();            onBackPressed();            return true;        }        return super.onKeyDown(keyCode, event);    }    private void setShareContent(String share_text, String share_image, String share_url, String title) {        final SHARE_MEDIA[] displaylist = new SHARE_MEDIA[]{                SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,                SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE        };        UMImage localImage = new UMImage(thisActivity, R.drawable.ic_launcher);        new ShareAction(this).setDisplayList(displaylist)                .withText(share_text)         // 摘要                .withTitle(title)             // 標題                .withTargetUrl(share_url)     // 分享的網址                .withMedia(localImage)        // 分享的圖片                .setListenerList(new UMShareListener() {                    @Override                    public void onResult(SHARE_MEDIA platform) {                        T.showShort(thisActivity,"分享成功啦");                    }                    @Override                    public void onError(SHARE_MEDIA platform, Throwable t) {                        T.showShort(thisActivity,"分享失敗啦");                    }                    @Override                    public void onCancel(SHARE_MEDIA platform) {                        T.showShort(thisActivity,"分享取消了");                    }                })                .open();    }    private View toastRoot;    private Toast toast = null;    private void showToast(String msg) {        TextView tv = (TextView) toastRoot.findViewById(R.id.TextViewInfo);        if (toast == null) {            toast = new Toast(CanbackWebActivity.this);            tv.setText(msg);        } else {            tv.setText(msg);        }        toast.setView(toastRoot);        toast.setGravity(Gravity.CENTER, 0, 0);        toast.show();    }}
剩下就是布局文件里的webview了,這個就不提供了,以上僅供參考,因為所在項目的不同,部分可能需要自行改改。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阿鲁科尔沁旗| 晋江市| 洪江市| 石首市| 玛纳斯县| 错那县| 刚察县| 彩票| 新乡市| 邵阳市| 宽城| 内黄县| 平昌县| 德安县| 丘北县| 行唐县| 邹平县| 稻城县| 虞城县| 德阳市| 高碑店市| 伊金霍洛旗| 轮台县| 河北省| 葵青区| 丹寨县| 龙门县| 平昌县| 西乌珠穆沁旗| 巫溪县| 安丘市| 阿勒泰市| 崇义县| 台南县| 郁南县| 区。| 久治县| 普安县| 宜宾市| 华安县| 霍林郭勒市|