只好透過利用OnTouchListener來自己寫一個滑動手勢的判斷。
如果想要在一個ImageView圖片上判斷滑動的手勢,
先在xml檔裡面建立一個ImageView的物件,以及一個TextView顯示判斷結果。
接著在MainActivity.java裡先設定好前置作業:
private int swipe_d = 10; // threshold for swipe distance private TextView tvText; private ImageView ivImage;
onCreate中在要判斷的ImageView上設定一個setOnTouchListener:
tvText = (TextView)findViewById(R.id.id_tvText); ivImage = (ImageView)findViewById(R.id.id_ivImage); ivImage.setOnTouchListener(bgImgListener);
加入一個OnTouchListener的函式,透過觸控的x、y座標來判斷手勢操作
private View.OnTouchListener bgImgListener = new View.OnTouchListener() { float x1, x2, y1, y2; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: x1 = event.getX(); y1 = event.getY(); break; case MotionEvent.ACTION_UP:{ x2 = event.getX(); y2 = event.getY(); if (x1 < x2 && Math.abs(y1-y2) < Math.abs(x1-x2) && Math.abs(x1-x2) > swipe_d) { tvText.setText("Swipe Right"); } else if (x1 > x2 && Math.abs(y1-y2) < Math.abs(x1-x2) && Math.abs(x1-x2) > swipe_d) { tvText.setText("Swipe Left"); } else if (y1 < y2 && Math.abs(x1-x2) < Math.abs(y1-y2) && Math.abs(y1-y2) > swipe_d) { tvText.setText("Swipe Down"); } else if (y1 > y2 && Math.abs(x1-x2) < Math.abs(y1-y2) && Math.abs(y1-y2) > swipe_d) { tvText.setText("Swipe Up"); } else if(x1 == x2 && y1 == y2){ tvText.setText("Click"); } break; } } return true; } };
(END)
沒有留言:
張貼留言