最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android如何基于坐標(biāo)對(duì)View進(jìn)行模擬點(diǎn)擊事件詳解

 更新時(shí)間:2018年03月12日 08:58:29   作者:技術(shù)小黑屋  
這篇文章主要給大家介紹了關(guān)于Android如何基于坐標(biāo)對(duì)View進(jìn)行模擬點(diǎn)擊事件的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。

前言

大家應(yīng)該都知道,在Android中,我們對(duì)于View進(jìn)行模擬點(diǎn)擊事件,很容易,比如調(diào)用View.performClick即可。

但是有些時(shí)候,我們想要更加精細(xì)的點(diǎn)擊,比如View的某一區(qū)域或者某一點(diǎn)進(jìn)行點(diǎn)擊。比如下面的例子。

上面是一個(gè)WebView加載了一個(gè)視頻,我們必須手動(dòng)點(diǎn)一下播放按鈕才能讓視頻播放,當(dāng)然我們想要的最好是如下的自動(dòng)播放效果(進(jìn)入界面后,自動(dòng)播放視頻)

當(dāng)然方法有很多,比如通過(guò)javascript調(diào)用視頻元素的click事件。在這里我們暫不對(duì)該方法進(jìn)行細(xì)究。本文旨在提供一種解決問(wèn)題的可行方法。

其實(shí)我們可以通過(guò)View.dispatchTouchEvent就能解決,因?yàn)橐粋€(gè)click事件可以理解成一個(gè)Action_down和一個(gè)Action_up MotionEvent的組合,所以實(shí)現(xiàn)起來(lái)如下即可。

private fun simulateTouchEvent(view: View, x: Float, y: Float) {
 val downTime = SystemClock.uptimeMillis()
 val eventTime = SystemClock.uptimeMillis() + 100
 val metaState = 0
 val motionEvent = MotionEvent.obtain(downTime, eventTime,
   MotionEvent.ACTION_DOWN, x, y, metaState)
 view.dispatchTouchEvent(motionEvent)
 val upEvent = MotionEvent.obtain(downTime + 1000, eventTime + 1000,
   MotionEvent.ACTION_UP, x,y, metaState)
 view.dispatchTouchEvent(upEvent)
}

關(guān)于坐標(biāo)位置的選擇,仔細(xì)分析你會(huì)發(fā)現(xiàn),上面的視頻的播放按鈕其實(shí)是有特點(diǎn)的,播放按鈕始終處于WebView的中心,即模擬的點(diǎn)擊可以是WebView.getWidth/2WebView.height/2這個(gè)點(diǎn)。

為了便于測(cè)試和驗(yàn)證模擬事件的成功,我們可以增加OnTouchListener進(jìn)行驗(yàn)證,如下代碼

webview?.setOnTouchListener { v, event ->
 debugMessage("onTouchListener x=${event.x};y=${event.y}")
 false
}

對(duì)于例子中的何時(shí)出發(fā)模擬事件,我們可以在WebView網(wǎng)頁(yè)加載完成的時(shí)候?qū)崿F(xiàn),即

webview?.webViewClient = object : WebViewClient() {
 override fun onPageFinished(view: WebView?, url: String?) {
  super.onPageFinished(view, url)
  webview?.post {
   webview?.let {
    simulateTouchEvent(it, it.width / 2f, it.height / 2f)
   }
  }
 }
}

基于坐標(biāo)對(duì)View進(jìn)行模擬點(diǎn)擊的代碼示例完整版,請(qǐng)?jiān)L問(wèn) https://github.com/androidyue/SimulateViewClickByXandY  或者通過(guò)本地下載。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

最新評(píng)論

色达县| 天峨县| 儋州市| 五河县| 金堂县| 阿尔山市| 崇义县| 嘉鱼县| 宜州市| 长垣县| 兰州市| 平顺县| 板桥市| 东光县| 华池县| 镇宁| 潼关县| 南涧| 蓬安县| 凤凰县| 淳安县| 吉木萨尔县| 宜都市| 松溪县| 花莲县| 蕲春县| 明星| 怀集县| 搜索| 资阳市| 乌兰察布市| 积石山| 郑州市| 宿松县| 北碚区| 灵石县| 东源县| 佛坪县| 铁岭市| 革吉县| 常宁市|