只好透過利用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)
沒有留言:
張貼留言