android中處理各種觸摸事件的方法淺談
Android里有兩個(gè)類(lèi)
android.view.GestureDetector
android.view.GestureDetector.SimpleOnGestureListener
(另外android.widget.Gallery好像是更牛x的OnGestureListener )
1)
新建一個(gè)類(lèi)繼承SimpleOnGestureListener,HahaGestureDetectorListener
可以實(shí)現(xiàn)以下event事件。
boolean onDoubleTap(MotionEvent e)
解釋?zhuān)弘p擊的第二下Touch down時(shí)觸發(fā)
boolean onDoubleTapEvent(MotionEvent e)
解釋?zhuān)弘p擊的第二下Touch down和up都會(huì)觸發(fā),可用e.getAction()區(qū)分。
boolean onDown(MotionEvent e)
解釋?zhuān)篢ouch down時(shí)觸發(fā)
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解釋?zhuān)篢ouch了滑動(dòng)一點(diǎn)距離后,up時(shí)觸發(fā)。
void onLongPress(MotionEvent e)
解釋?zhuān)篢ouch了不移動(dòng)一直Touch down時(shí)觸發(fā)
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解釋?zhuān)篢ouch了滑動(dòng)時(shí)觸發(fā)。
void onShowPress(MotionEvent e)
解釋?zhuān)篢ouch了還沒(méi)有滑動(dòng)時(shí)觸發(fā)
(與onDown,onLongPress比較
onDown只要Touch down一定立刻觸發(fā)。
而Touchdown后過(guò)一會(huì)沒(méi)有滑動(dòng)先觸發(fā)onShowPress再是onLongPress。
所以Touchdown后一直不滑動(dòng),onDown->onShowPress->onLongPress這個(gè)順序觸發(fā)。
)
boolean onSingleTapConfirmed(MotionEvent e)
boolean onSingleTapUp(MotionEvent e)
解釋?zhuān)荷厦孢@兩個(gè)函數(shù)都是在touch down后又沒(méi)有滑動(dòng)(onScroll),又沒(méi)有長(zhǎng)按(onLongPress),然后Touchup時(shí)觸發(fā)。
點(diǎn)擊一下非常快的(不滑動(dòng))Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
點(diǎn)擊一下稍微慢點(diǎn)的(不滑動(dòng))Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
2)在view的新建一個(gè)GestureDetector的對(duì)象。
構(gòu)造函數(shù)里
gestureDetector = new GestureDetector(new HahaGestureDetectorListener());
然后在View的onTouchEvent里以下這樣用,就可以在剛才1)弄的事件里寫(xiě)自己的代碼了。
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
}
mTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
float x = event.getXPrecision()*event.getX()+event.getX();
float y = event.getYPrecision()*event.getY()+event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
mTouchTimes++;
if (mTouchTimes > TOUCH_TIMES) {
// 根據(jù)方向計(jì)算角度
if (mCurrentOrientation==DeviceOrientation.Landscape) {
mAngle = Math.toDegrees(Math.atan2(y - 480 / 2, x))+90;
} else {
mAngle = -Math.toDegrees(Math.atan2(y - 480 / 2, 320-x))+90;
}
Log.w("angle", "mangle:"+mAngle);
}
break;
case MotionEvent.ACTION_UP:
if (mTouchTimes > TOUCH_TIMES) {
} else {
}
mTouchTimes = 0;
break;
default:
break;
}
return true;
}
};
mView.setOnTouchListener(mTouchListener);
- 解析Android開(kāi)發(fā)中多點(diǎn)觸摸的實(shí)現(xiàn)方法
- android 多點(diǎn)觸摸圖片縮放的具體實(shí)現(xiàn)方法
- 簡(jiǎn)單講解Android開(kāi)發(fā)中觸摸和點(diǎn)擊事件的相關(guān)編程方法
- Android在Fragment中實(shí)現(xiàn)監(jiān)聽(tīng)觸摸事件
- Android修改源碼解決Alertdialog觸摸對(duì)話(huà)框邊緣消失的問(wèn)題
- Android 觸摸事件監(jiān)聽(tīng)(Activity層,ViewGroup層,View層)詳細(xì)介紹
- android命令行模擬輸入事件(文字、按鍵、觸摸等)
- Android中SurfaceView和view畫(huà)出觸摸軌跡
- Android實(shí)現(xiàn)手勢(shì)滑動(dòng)多點(diǎn)觸摸放大縮小圖片效果
- Android檢測(cè)手機(jī)多點(diǎn)觸摸點(diǎn)數(shù)的方法
相關(guān)文章
Android實(shí)現(xiàn)倒計(jì)時(shí)的方案梳理
這篇文章主要介紹了Android實(shí)現(xiàn)倒計(jì)時(shí)的方案梳理,下面文章圍繞主題展開(kāi)Android倒計(jì)時(shí)方案,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08android studio 的下拉菜單Spinner使用詳解
這篇文章主要介紹了android studio 的下拉菜單Spinner使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Android在Sqlite3中的應(yīng)用及多線(xiàn)程使用數(shù)據(jù)庫(kù)的建議(實(shí)例代碼)
這篇文章主要介紹了Android在Sqlite3中的應(yīng)用及多線(xiàn)程使用數(shù)據(jù)庫(kù)的建議,包括編寫(xiě)數(shù)據(jù)庫(kù)具體操作類(lèi)、增刪改查,通過(guò)實(shí)例代碼介紹了在實(shí)際中的應(yīng)用,需要的朋友可以參考下2022-04-04Android USB轉(zhuǎn)串口通信開(kāi)發(fā)實(shí)例詳解
這篇文章主要介紹了 Android USB轉(zhuǎn)串口通信開(kāi)發(fā)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04Android基于Mapbox?V10?繪制LineGradient軌跡
這篇文章主要介紹了Android基于Mapbox?V10?繪制LineGradient軌跡,文章通告介紹一些V10上的用法,最終講下如何繪制漸變運(yùn)動(dòng)記錄軌跡,感興趣的小伙伴可以參考一下2022-08-08詳解Android 在 ViewPager 中使用 Fragment 的懶加載
本篇文章主要介紹了Android 在 ViewPager 中使用 Fragment 的懶加載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Android XmlPullParser 方式解析 Xml 文檔
這篇文章主要介紹了Android XmlPullParser 方式解析 Xml 文檔的相關(guān)資料,需要的朋友可以參考下2017-06-06