自定義布局
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 ...