zoukankan      html  css  js  c++  java
  • Android自定义的webView——可实现的网页文本的复制

    package com.example.customlinearlayout.view;
    
    import android.app.ProgressDialog;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.util.AttributeSet;
    import android.view.MotionEvent;
    import android.view.View;
    import android.webkit.JsResult;
    import android.webkit.WebChromeClient;
    import android.webkit.WebSettings;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Toast;
    
    public class LiveWebView extends WebView {
    
        Context mContext;
    
        public LiveWebView(Context context) {
            super(context);
            mContext = context;
            setWebViewClient();
        }
    
        public LiveWebView(Context context, AttributeSet attrs) {
            super(context, attrs);
            mContext = context;
            setWebViewClient();
        }
    
        @Override
        public boolean onCheckIsTextEditor() {
            return true;
        }
    
        boolean setWebViewClient() {
    
            setScrollBarStyle(SCROLLBARS_INSIDE_OVERLAY);
            setFocusable(true);
            setFocusableInTouchMode(true);
            requestFocus(View.FOCUS_DOWN);
            WebSettings webSettings = getSettings();
            webSettings.setSavePassword(false);
            webSettings.setSaveFormData(false);
            webSettings.setJavaScriptEnabled(true);
            webSettings.setSupportZoom(false);
            webSettings.setUseWideViewPort(true);
    
            setOnTouchListener(new View.OnTouchListener() {
    
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                    case MotionEvent.ACTION_UP:
                        if (!v.hasFocus()) {
                            v.requestFocus();
                        }
                        break;
                    }
                    return false;
                }
    
            });
    
            this.setWebViewClient(new WebViewClient() {
                ProgressDialog dialog = new ProgressDialog(mContext);
    
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    System.out.println("+-------------------------------");
                    System.out.println("|    shouldOverrideUrlLoading : url:  " + url);
                    System.out.println("+-------------------------------");
                    loadUrl(url);
    
                    return true;
                }
    
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    Toast.makeText(mContext, "Oh no! " + description, Toast.LENGTH_SHORT).show();
                }
    
                @Override
                public void onPageStarted(WebView view, String url, Bitmap favicon) {
                    if (dialog != null) {
                        dialog.setMessage("Loading...");
                        dialog.setIndeterminate(true);
                        dialog.setCancelable(true);
                        dialog.show();
                    }
                }
    
                public void onPageFinished(WebView view, String url) {
                    if (dialog != null) {
                        dialog.cancel();
                    }
                }
            });
    
            this.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int progress) {
                }
    
                @Override
                public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                    System.out.println("+-------------------------------");
                    System.out.println("|WebChromeClient onJsAlert    " + message);
                    System.out.println("+-------------------------------");
                    result.confirm();
                    return true;
                }
            });
    
            loadUrl("http://www.baidu.com");
    
            return true;
        }
    
    }
  • 相关阅读:
    【Java】关于Spring框架的总结 (三)
    【Java】关于Spring框架的总结 (二)
    【Java】关于Spring框架的总结 (一)
    关于各编程语言冒泡排序的实现
    【Java】关于MyBatis框架的总结
    Linux 查看服务器开放的端口号
    网络安全随笔
    Window随笔
    Linux随笔
    Powercli随笔
  • 原文地址:https://www.cnblogs.com/hsx514/p/3670077.html
Copyright © 2011-2022 走看看