Android如何基于坐標(biāo)對View進(jìn)行模擬點(diǎn)擊事件詳解-創(chuàng)新互聯(lián)

前言

創(chuàng)新互聯(lián)公司成立于2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都做網(wǎng)站、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元自流井做網(wǎng)站,已為上家服務(wù),為自流井各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

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

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

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

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

其實(shí)我們可以通過View.dispatchTouchEvent就能解決,因?yàn)橐粋€click事件可以理解成一個Action_down和一個Action_up MotionEvent的組合,所以實(shí)現(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)
}

本文題目:Android如何基于坐標(biāo)對View進(jìn)行模擬點(diǎn)擊事件詳解-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article16/cdcedg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、Google、小程序開發(fā)、企業(yè)網(wǎng)站制作、服務(wù)器托管、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名