真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android如何基于坐標對View進行模擬點擊事件詳解

前言

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、雅安服務器托管、營銷軟件、網(wǎng)站建設、巴州網(wǎng)站維護、網(wǎng)站推廣。

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

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

Android如何基于坐標對View進行模擬點擊事件詳解

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

Android如何基于坐標對View進行模擬點擊事件詳解

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

其實我們可以通過View.dispatchTouchEvent就能解決,因為一個click事件可以理解成一個Action_down和一個Action_up MotionEvent的組合,所以實現(xiàn)起來如下即可。

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)
}

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

為了便于測試和驗證模擬事件的成功,我們可以增加OnTouchListener進行驗證,如下代碼

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

對于例子中的何時出發(fā)模擬事件,我們可以在WebView網(wǎng)頁加載完成的時候?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)
   }
  }
 }
}

基于坐標對View進行模擬點擊的代碼示例完整版,請訪問 https://github.com/androidyue/SimulateViewClickByXandY  或者通過本地下載。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。


分享名稱:Android如何基于坐標對View進行模擬點擊事件詳解
URL地址:http://weahome.cn/article/goojej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部