操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    功能:長按系統默認進入文字選擇默認,實現先長按菜單顯示菜單同能菜單選項來判斷是否進行的進入自由復制文本文字選擇的操作。

    一、長按顯示彈出菜單,可怎么才在能實現點擊菜單選擇進入自由復制文本模式呢?在網上翻了個遍,都不怎么如意,糾結了幾日,下午偷懶睡了一覺突然就想到了模擬長按操作觸發默認的顯示復制菜單

    實現模擬長按操作實現類

    /**?
    ?*?模擬點擊事件和長按事件?
    ?*?
    ?*/??
    ??
    public?class?TouchEventRunnable?implements?Runnable?{??
    ????private?int?x;??
    ????private?int?y;??
    ??
    ????private?boolean?isLongPress;??
    ??
    ????public?TouchEventRunnable(int?x,?int?y)?{??
    ????????this.x?=?x;??
    ????????this.y?=?y;??
    ????}??
    ????public?TouchEventRunnable(int?x,?int?y,?boolean?isLongPress)?{??
    ????????this.x?=?x;??
    ????????this.y?=?y;??
    ????????this.isLongPress?=?isLongPress;??
    ????}??
    ??
    ????@Override??
    ????public?void?run()?{??
    ????????if(isLongPress){??
    ????????????longClickOnScreen(x,y);??
    

    android 模擬觸摸事件_android 觸屏模擬_android 模擬長按事件

    ????????}else{?? ????????????onClick();?? ????????}?? ????}?? ?? ?? ????private?void?longClickOnScreen(int?x,?int?y)?{?? ????????final?Instrumentation?inst?=?new?Instrumentation();?? ????????try?{?? ????????????long?downTime?=?SystemClock.uptimeMillis();?? ????????????long?eventTime?=?SystemClock.uptimeMillis();?? ????????????final?MotionEvent?eventDown?=?MotionEvent.obtain(downTime,?? ????????????????????eventTime,?MotionEvent.ACTION_DOWN,?x,?y,?0);?? ????????????eventDown.setSource(InputDevice.SOURCE_TOUCHSCREEN);?? ????????????final?MotionEvent?eventMove?=?MotionEvent.obtain(downTime,?eventTime,?? ????????????????????MotionEvent.ACTION_MOVE,?x,?y+1,?0);?? ????????????eventMove.setSource(InputDevice.SOURCE_TOUCHSCREEN);?? ????????????final?MotionEvent?eventUp?=?MotionEvent.obtain(downTime,?eventTime,?? ????????????????????MotionEvent.ACTION_UP,?x,?y,?0);?? ????????????eventUp.setSource(InputDevice.SOURCE_TOUCHSCREEN);?? ????????????inst.sendPointerSync(eventDown);?? ????????????inst.sendPointerSync(eventMove);?? ????????????try?{?? ????????????????Thread.sleep(650);?? ????????????}?catch?(InterruptedException?e)?{?? ????????????????e.printStackTrace();??

    android 模擬觸摸事件_android 模擬長按事件_android 觸屏模擬

    ????????????}?? ????????????inst.sendPointerSync(eventUp);?? ????????}?catch?(NullPointerException?e)?{?? ????????????e.printStackTrace();?? ????????}?? ????}?? ?? ?? ?? ????private?void?onClick(){?? ?? ????????Instrumentation?inst?=?new?Instrumentation();?? ????????inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),?SystemClock.uptimeMillis(),?? ????????????????MotionEvent.ACTION_DOWN,?x,?y,?0));?? ????????inst.sendPointerSync(MotionEvent.obtain(SystemClock.uptimeMillis(),?SystemClock.uptimeMillis(),?? ????????????????MotionEvent.ACTION_UP,?x,?y,?0));?? ????????//Log.v("LOG",?"?x?=?"?+?x?+?"?y?=?"?+?y);?? ?? ????}?? }??

    二、接下來是長按先要顯示的菜單代碼

    public?void?showMenu(View?v){??
    ???????Activity?mContext?=?this;??
    ???????android.app.FragmentTransaction?mFragTransaction?=?mContext.getFragmentManager().beginTransaction();??
    ???????android.app.Fragment?fragment?=??mContext.getFragmentManager().findFragmentByTag("dialogFragment");??
    ???????if(fragment!=null){??
    

    android 模擬觸摸事件_android 觸屏模擬_android 模擬長按事件

    ???????????mFragTransaction.remove(fragment);?? ???????}?? ?? ???????ListDialogFragment?dialogFragment?=?ListDialogFragment.newInstance("bookmarkFragment");?? ???????dialogFragment.setWidthPercent(0.38f,0.38f);?? ?? ?? ???????focusedRawPosition?=?((WebViewCopyText)?v).getTouchLocation();?? ???????dialogFragment.optimzeLocation(v,focusedRawPosition);?? ?? ???????dialogFragment.setGravityAndXY(Gravity.LEFT|Gravity.TOP,?focusedRawPosition[0],focusedRawPosition[1]);?? ???????String[]?menuStrs?=?new?String[]{"自由復制","復制連接","分享網頁"};?? ???????dialogFragment.setListData(menuStrs);?? ???????dialogFragment.setIsEnaledGravityAndXY(true);?? ???????dialogFragment.setOnListDialogItemClickListener(new?ListDialogFragment.OnListDialogItemClickListener()?{?? ???????????@Override?? ???????????public?void?onClick(int?position)?{?? ???????????????webView.getHandler().postDelayed(new?Runnable()?{?? ???????????????????@Override?? ???????????????????public?void?run()?{?? ?? ???????????????????????//先清空長按監聽避免再次顯示菜單,再聽定時回調設置回來?? ???????????????????????webView.setOnLongClickListener(null);?? ?? ???????????????????????//執行點擊事件?? ???????????????????????new?Thread(new?TouchEventRunnable(focusedRawPosition[0],focusedRawPosition[1]+getStateBarHeight(),true)).start();??

    android 模擬長按事件_android 模擬觸摸事件_android 觸屏模擬

    ?? ???????????????????????webView.getHandler().postDelayed(new?Runnable()?{?? ???????????????????????????@Override?? ???????????????????????????public?void?run()?{?? ???????????????????????????????webView.setOnLongClickListener(onLongClickListener);?? ?? ???????????????????????????}?? ???????????????????????},2500);?? ?? ???????????????????}?? ???????????????},100);?? ?? ???????????}?? ???????});?? ?? ?? ???????dialogFragment.show(mFragTransaction,?"dialogFragment");//顯示?? ?? ?? ???}??

    上面的代碼主要是實現模擬長按操作進入自由復制文字選擇模式。

    在實際操作發現不管是模擬觸發的還是默認的,在同一個網頁中有時可以進入文字選擇默認,有時則不能,甚至有的網頁怎么也無法進入。

    通過瀏覽器調試,發現能進入復制文字選擇魔的往往是HTML的h1~h6,span,p之類的元素,凡是長按a元素沒有一個網頁能進入自由復制模式的,再次對a原始的各個屬性進行排查問題出在a元素的href屬性上。

    android 模擬長按事件_android 模擬觸摸事件_android 觸屏模擬

    結果是:

    當HTML上的a元素設置了href屬性時無法無法進入自由復制模式android 模擬長按事件,但當a元素沒有設置設置href屬性時,則可以進入。

    這用js的方法.('href');把HTML上的所有的a元素的href屬性移除掉android 模擬長按事件,又可以進文字選擇模式。

    下面是js移除href屬性的代碼.

    /**?
    開始選擇文字是去除a標簽的href屬性?
    **/??
    function?startSelectText(){??
    ????var?ass?=?document.getElementsByTagName('a');??
    ??
    ????for(var?i?=?0;?i?

    -END

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有