您的位置:首页 > 移动开发

Android自定义的webView——可实现的网页文本的复制

2014-04-17 10:13 666 查看
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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: