欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android中處理各種觸摸事件的方法淺談

 更新時(shí)間:2013年06月02日 15:34:22   作者:  
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ě)自己的代碼了。

復(fù)制代碼 代碼如下:

@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);

相關(guān)文章

最新評(píng)論