解決事件衝突的三種函式

2021-07-22 12:45:53 字數 3160 閱讀 9479

自定義布局
package com.yztc.eventdemo;

import android.content.context;

import android.util.attributeset;

import android.util.log;

import android.view.motionevent;

import android.widget.linearlayout;

/***

自定義layout

布局*/

public class customlayout extends linearlayout

public customlayout(context context, attributeset attrs)

@override

public boolean

ontouchevent(motionevent event)

/**dispatchtouchevent

分發事件的方法 不管是

view

還是viewgroup

都具有分發事件的函式

* 一般情況

viewgroup

中將事件分發給子

view view

中將事件分發給自己

* 當事件觸發時

activity

將事件傳遞到

layout layout

呼叫自己的分發方法將事件分發給具體的子控制項

* 子控制項也具有分發方法 但是子控制項只能分發給自己

*

接著獲取分發的事件呼叫

ontouchevent()

方法處理事件

**

如果返回

true

表示事件會分發給當前的

view

的dispatchtouchevent

進行處理 並且會停止事件向下傳遞分發

* 一般情況都不會修改返回值 改變正常的事件分發流程

*/@override

public boolean

dispatchtouchevent(motionevent ev)

/*** onintercepttouchevent

事件攔截的方法

*

事件傳遞給

layout

如果layout

不進行攔截 通過攔截的方法 事件就被分發給具體的子控制項,

* 子控制項就會執行自己的分發和

ontouchevent()

方法處理事件 如果子控制項的

ontouchevent()

方法並且對

* 事件處理 事件回傳 執行

layout

中的ontouchevent()

如果layout

中也返回

false

事件消失

; 如果

* layout

中ontouchevent()

返回true

那麼後續的事件也會直接交給

layout處理*

* 返回

true

表示攔截當前的事件並且交給當前檢視的

ontouchevent()

處理*

返回false

表示不攔截 按照正常的事件傳播機制

*/@override

public boolean

onintercepttouchevent(motionevent ev)

return false;

} public string geteventname(motionevent event)

return eventname;}}

自定義view檢視package com.yztc.eventdemo;

import android.content.context;

import android.util.attributeset;

import android.util.log;

import android.view.motionevent;

import android.view.view;

/***

自定義控制項

*/public class customview extends view

public customview(context context, attributeset attrs)

/*** ontouchevent()

表示對事件處理的方法

*

如果事件傳播到該類中 表示該類呼叫

ontouchevent()

方法處理該事件

* 如果該函式返回

false

表示不進行事件的處理 將事件進行回傳

(回傳給上層的

view

或者是viewgroup

* 由上層的

view

呼叫自己的

ontouchevent()

方法處理,如果上層的

view

也未進行事件處理

ontouchevent

* 返回

false

那麼事件訊息 並且接受不到下一次事件 例如

:沒有處理

down

事件就不能處理

up事件

)*

如果該方法返回

true

表示對當前的事件進行處理 事件只能被處理一次

*

注意:ontouchevent()

返回false

與返回super.ontouchevent(event)

意思一樣

*/@override

public boolean

ontouchevent(motionevent event)

@override

public boolean

dispatchtouchevent(motionevent event)

public string geteventname(motionevent event)

return eventname;

}}

解決雜湊衝突的三種方式

開放位址法有個非常關鍵的特徵,就是所有輸入的元素全部存放在雜湊表裡,也就是說,位桶的實現是不需要任何的鍊錶來實現的,換句話說,也就是這個雜湊表的裝載因子不會超過1。它的實現是在插入乙個元素的時候,先通過雜湊函式進行判斷,若是發生雜湊衝突,就以當前位址為基準,根據再定址的方法 探查序列 去尋找下乙個位...

解決雜湊衝突的三種方法

上篇博文我們舉的例子,hashmap,hashset其實都是採用的拉鍊法來解決雜湊衝突的,就是在每個位桶實現的時候,我們採用鍊錶 jdk1.8之後採用鍊錶 紅黑樹 的資料結構來去訪問發生雜湊衝突的輸入域的關鍵字 也就是被雜湊函式對映到同乙個位桶上的關鍵字 首先來看使用拉鍊法解決雜湊衝突的幾個操作 插...

maven匯入jar包衝突的三種解決方法

直接依賴 a專案中匯入了b包,我們可以說a專案直接依賴於b 傳遞依賴 a專案中匯入了b包,b包直接依賴於c包,最終a專案也可以使用c包,那麼我們可以說a專案傳遞依賴於c 一 第一宣告原則 二 路徑優先原則 三 直接排除法我們新增依賴 org.springframework spring beans ...