android事件沖突
⑴ android中viewpager和viewpager里的圖片點擊事件沖突怎麼解決
setOnTouchListener 裡面return false;標識自己沒處理該事件
你現在return true;表示自己處理了touch事件,後續事件將不再出發,如click。
⑵ android 自定義view滑動和點擊事件沖突怎麼解決
在Android中,對一個View同時調用OnTouch事件和OnClick事件時,導致事件沖突,比如onClick事件打算執行A動作,OnTouch事件打算執行B動作,但是在實際使用時會發現,當調用OnTouch時,有可能會同時執行A,B兩個動作,這是因為OnClick事件本身就是在OnTouch事件中發生的;在onTouch事件中,如果返回true,就不會執行onClick,返回false,就同時執行onClick方法,要想把OnTouch和onClick事件完全的區分。可能過下列方法,解決該沖突問題:
就是在 OnTouch中的MotionEvent.ACTION_DOWN 時,記錄下點(X1,Y1),
在 MotionEvent.ACTION_UP 時,記錄下點(X2,Y2),然後比對 倆點之間的距離,如果小於一個較小數值(比如5),就認為是Click事件,onTouch中返回false,如果距離較大,可以當作onTouch事件去處理,返回true:
示範如下:
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
x1 = event.getX();
y1 = event.getY();
}
if (event.getAction() == MotionEvent.ACTION_UP) {
x2 = event.getX();
y2 = event.getY();
if (Math.abs(x1 - x2) < 6) {
return false;// 距離較小,當作click事件來處理
}
if(Math.abs(x1 - x2) >60){ // 真正的onTouch事件
}
}
return true;// 返回true,不執行click事件
}
⑶ android 中 scrollview 裡面 又有一個子scrollview滑動事件沖突
外層scrollview重寫一下,當滑動內層scrollview的時候就不讓外層的scrollview滑動.
java">{
privatebooleancanScroll;
;
View.;
publicMyScrollView(Contextcontext,AttributeSetattrs){
super(context,attrs);
mGestureDetector=newGestureDetector(context,newYScrollDetector());
canScroll=true;
}
@Override
(MotionEventev){
if(ev.getAction()==MotionEvent.ACTION_UP)
canScroll=true;
returnsuper.onInterceptTouchEvent(ev)&&mGestureDetector.onTouchEvent(ev);
}
{
@Override
publicbooleanonScroll(MotionEvente1,MotionEvente2,floatdistanceX,floatdistanceY){
if(canScroll)
if(Math.abs(distanceY)>=Math.abs(distanceX))
canScroll=true;
else
canScroll=false;
returncanScroll;
}
}
}
⑷ Android TextView中的超鏈接與onClick事件沖突
加個變數來標識一下
⑸ Android listview滑動事件和上拉載入下拉刷新沖突
這個支持上拉載入下拉刷新的ListView,你是在android的ListView基礎上修改的?(通過onScrollListener)還是用的第三方開源庫?(PullTorRefresh之類)
輪播圖片又用的是什麼?ViewPager嗎?
沒有代碼參考,我也只能籠統的猜下
如果你用的是某些別人寫的,繼承自ListView的類,那l可能是這個類本身的上拉載入下拉刷新,就是利用內部創建onScrollListener實例,然後通過setScrollListener的方式設置給自己來實現的,所以你設置新的onScrollListener可能替換掉了原來默認的監聽器
另外也可能是手勢的事件沖突。而一般手勢事件沖突,有可能是由於手勢事件,在到達規定的View之前,就被被上層View「消耗」(攔截並處理)了。這種情況你可以寫個類繼承你現在ListView,重寫dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent方法,裡面直接調用父類的同名方法,但在之前輸出個Log,跟蹤下手勢事件去向
(參考android手勢事件處理機制,不清楚的話,可以看下網上針對dispatchTouchEvent,onInterceptTouchEvent,onTouchEvent這三塊的詳細講解)
⑹ android怎樣解決ontouch和on click事件沖突
您好,很高興能幫助您
Button的onTouch,onClick,onLongClick事件發生先後順序和關聯:
一,onTouch返回false
首先是onTouch事件的down事件發生,此時,如果長按,觸發onLongClick事件;
然後是onTouch事件的up事件發生,up完畢,最後觸發onClick事件。
二,onTouch返回true
首先是onTouch事件的down事件發生,然後是onTouch事件的up事件發生;期間不觸發onClick和onLongClick事件
三,onTouch:down返回true,up返回false:結果同二。
機制分析:
onTouch事件中:down事件返回值標記此次事件是否為點擊事件(返回false,是點擊事件;返回true,不記為點擊事件),而up事件標記此次事件結束時間,也就是判斷是否為長按。
只要當down返回true時候,系統將不把本次事件記錄為點擊事件,也就不會觸發onClick或者onLongClick事件了。因此盡管當up的時候返回false,系統也不會繼續觸發onClick事件了。
四,onTouch:down返回false,up返回true:
首先是onTouch事件的down事件發生,此時:
長按,觸發onLongClick事件,然後是onTouch事件的up事件發生,完畢。
短按,先觸發onTouch的up事件, 到一定時間後,自動觸發onLongClick事件。
機制分析:
onTouch事件中:down事件返回值標記此次事件是否為點擊事件(返回false,是點擊事件;返回true,不記為點擊事件),而up事件標記此次事件結束時間,也就是判斷是否為長按。
當down返回false,標記此次事件為點擊事件,而up返回了true,則表示此次事件一直沒有結束,也就是一直長按下去了,達到長按臨界時間後,自然觸發長按事件,而onClick事件沒有觸發到
你的採納是我前進的動力,
記得好評和採納,答題不易,互相幫助,
⑺ android onclick事件和ontouch事件是否會沖突
Button的onTouch,onClick,onLongClick事件發生先後順序和關聯:
一,onTouch返回false
首先是onTouch事件的down事件發生,此時,如果長按,觸發onLongClick事件;
然後是onTouch事件的up事件發生,up完畢,最後觸發onClick事件。
二,onTouch返回true
首先是onTouch事件的down事件發生,然後是onTouch事件的up事件發生;期間不觸發onClick和onLongClick事件
三,onTouch:down返回true,up返回false:結果同二。
機制分析:
onTouch事件中:down事件返回值標記此次事件是否為點擊事件(返回false,是點擊事件;返回true,不記為點擊事件),而up事件標記此次事件結束時間,也就是判斷是否為長按。
只要當down返回true時候,系統將不把本次事件記錄為點擊事件,也就不會觸發onClick或者onLongClick事件了。因此盡管當up的時候返回false,系統也不會繼續觸發onClick事件了。
四,onTouch:down返回false,up返回true:
首先是onTouch事件的down事件發生,此時:
長按,觸發onLongClick事件,然後是onTouch事件的up事件發生,完畢。
短按,先觸發onTouch的up事件, 到一定時間後,自動觸發onLongClick事件。
機制分析:
onTouch事件中:down事件返回值標記此次事件是否為點擊事件(返回false,是點擊事件;返回true,不記為點擊事件),而up事件標記此次事件結束時間,也就是判斷是否為長按。
當down返回false,標記此次事件為點擊事件,而up返回了true,則表示此次事件一直沒有結束,也就是一直長按下去了,達到長按臨界時間後,自然觸發長按事件,而onClick事件沒有觸發到
⑻ android開發onTouch與onclick沖突問題
Button的onTouch,onClick,onLongClick事件發生先後順序和關聯:
一,onTouch返回false
首先是onTouch事件的down事件發生,此時,如果長按,觸發onLongClick事件;
然後是onTouch事件的up事件發生,up完畢,最後觸發onClick事件。
二,onTouch返回true
首先是onTouch事件的down事件發生,然後是onTouch事件的up事件發生;期間不觸發onClick和onLongClick事件
三,onTouch:down返回true,up返回false:結果同二。
機制分析:
onTouch事件中:down事件返回值標記此次事件是否為點擊事件(返回false,是點擊事件;返回true,不記為點擊事件),而up事件標記此次事件結束時間,也就是判斷是否為長按。
只要當down返回true時候,系統將不把本次事件記錄為點擊事件,也就不會觸發onClick或者onLongClick事件了。因此盡管當up的時候返回false,系統也不會繼續觸發onClick事件了。
四,onTouch:down返回false,up返回true:
首先是onTouch事件的down事件發生,此時:
長按,觸發onLongClick事件,然後是onTouch事件的up事件發生,完畢。
短按,先觸發onTouch的up事件, 到一定時間後,自動觸發onLongClick事件。
機制分析:
onTouch事件中:down事件返回值標記此次事件是否為點擊事件(返回false,是點擊事件;返回true,不記為點擊事件),而up事件標記此次事件結束時間,也就是判斷是否為長按。
當down返回false,標記此次事件為點擊事件,而up返回了true,則表示此次事件一直沒有結束,也就是一直長按下去了,達到長按臨界時間後,自然觸發長按事件,而onClick事件沒有觸發到
⑼ android的viewpager和圖片事件沖突怎麼解決。
viewpager的Touch 中你要返回false這樣才能將事件傳遞到下一層layout中
⑽ 關於android 觸屏事件與點擊事件沖突
你要先描述你要實現什麼樣的功能,再貼代碼,別人看起來更清晰些。
你的主要問題就是兩個事件都響應了相同的功能,造成沖突,對吧?那麼你可以設置一個成員變數(或者靜態變數)比較mHasHandled,先響應的事件把它設置為true,後響應的事件監測到它已經是true了就不再處理了。