android重写webview长按时选择文字然后点击搜索按钮的事件,默认

用这个FindWebView替换默认使用的webview就可以了,,重写SelectedText 类里地 show方法 string data就是获取到的选中的文字

import android.annotation.SuppressLint;import android.annotation.TargetApi;import android.content.Context;import android.content.Intent;import android.os.Build;import android.text.TextUtils;import android.util.AttributeSet;import android.view.ActionMode;import android.view.ActionMode.Callback;import android.view.Menu;import android.view.MenuItem;import android.view.MotionEvent;import android.webkit.JavascriptInterface;import android.webkit.WebSettings;import android.webkit.WebView;/*** 在webview的界面里面填加 长按界面时出现搜索按钮 点击搜索按钮跳转到搜索页面** @author 王训龙 360404113* <p/>* 2014-8-8 上午11:39:16*/@TargetApi(Build.VERSION_CODES.HONEYCOMB)public class FindWebView extends WebView { public Callback callback; private OnScrollChangedListener mOnScrollChangedListener; @SuppressWarnings("deprecation") public FindWebView(Context context, AttributeSet attrs, int defStyle, boolean privateBrowsing) { super(context, attrs, defStyle, privateBrowsing); init(); } public FindWebView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public FindWebView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public FindWebView(Context context) { super(context); init(); } @TargetApi(Build.VERSION_CODES.KITKAT) @SuppressLint("SetJavaScriptEnabled") private void init() { WebSettings setting = getSettings(); setting.setJavaScriptEnabled(true); setting.setJavaScriptCanOpenWindowsAutomatically(true); addJavascriptInterface(new SelectedText(), "search"); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Constants.DEBUG) { //支持webview调试 WebView.setWebContentsDebuggingEnabled(true); } } @Override public ActionMode startActionMode(Callback callback) { CustomizedSelectActionModeCallback customizedSelectActionModeCallback = new CustomizedSelectActionModeCallback( callback); return super.startActionMode(customizedSelectActionModeCallback); } @Override public boolean onTouchEvent(MotionEvent event) { return super.onTouchEvent(event); } public class CustomizedSelectActionModeCallback implements ActionMode.Callback { private Callback callback; public CustomizedSelectActionModeCallback(Callback callback) { this.callback = callback; } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { return callback.onCreateActionMode(mode, menu); } @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return callback.onPrepareActionMode(mode, menu); } @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { if (item == null || TextUtils.isEmpty(item.getTitle())) { return callback.onActionItemClicked(mode, item); } if (!item.getTitle().toString().contains("搜索") && !item.getTitle().toString().contains("search")) { return callback.onActionItemClicked(mode, item); } loadUrl("javascript:window.search.show(window.getSelection().toString());"); clearFocus(); return true; } @Override public void onDestroyActionMode(ActionMode mode) { callback.onDestroyActionMode(mode); } } public class SelectedText { @JavascriptInterface public void show(String data) { // TODO 这里获取选中的文字 Intent intent = new Intent(getContext(), SearchActivity.class); intent.putExtra(SearchActivity.TAG_SEARCH, data); getContext().startActivity(intent); } } private int dY; @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); int dy = t – oldt; dY += dy; if (mOnScrollChangedListener != null && Math.abs(dY) > 10) { dY = 0; mOnScrollChangedListener.onScroll(l, t, oldl, oldt); } } public interface OnScrollChangedListener { public void onScroll(int l, int t, int oldl, int oldt); } public void setOnScrollChangedListener(OnScrollChangedListener mOnScrollChangedListener) { this.mOnScrollChangedListener = mOnScrollChangedListener; }}

不论你在什么时候结束,重要的是结束之後就不要悔恨

android重写webview长按时选择文字然后点击搜索按钮的事件,默认

相关文章:

你感兴趣的文章:

标签云: