안녕하세요 학생입니다!
현재 키보드 어플을 만들고있습니다!
제가 지금 키보드 어플을 만들고 있는 와중에..
제스처를 구현하고 싶어서 GestureDetector 을 열심히 구현해보았습니다..
헌데 이게 작동을 안합니다....
클래스가 잘못되어서 그런건가요?
우선 구조를 보여드리겠습니다.
public class AnerimKeyboardService extends InputMethodService
implements KeyboardView.OnKeyboardActionListener {
//.............
public abstract class Home extends Activity implements OnGestureListener
{
private GestureDetector ges;
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.input);
mInputView = (KeyboardView)findViewById(R.id.keyboard);
ges = new GestureDetector(this, mGestureListener);
}
@Override
public boolean onTouchEvent(MotionEvent me)
{Log.i("onCreateInputView", "제스처가 입력된거냐?");
return ges.onTouchEvent(me);
}
OnGestureListener mGestureListener = new OnGestureListener(){
public boolean onDown(MotionEvent ev)
{Log.i("onCreateInputView", "제스처가 입력된거냐?");
return true;
}
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// 오른쪽->왼쪽
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)
{
Toast.makeText(getApplicationContext(), "왼쪽으로", Toast.LENGTH_SHORT).show();
}
// 왼쪽->오른쪽
else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY)
{
Toast.makeText(getApplicationContext(), "오른쪽으로", Toast.LENGTH_SHORT).show();
}
// 아래->위로
else if (e1.getY() - e2.getY() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY)
{
Toast.makeText(getApplicationContext(), "위로", Toast.LENGTH_SHORT).show();
}
// 위->아래
else if (e2.getY() - e1.getY() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityY) > SWIPE_THRESHOLD_VELOCITY)
{
Toast.makeText(getApplicationContext(), "아래로", Toast.LENGTH_SHORT).show();
}
return true;
}
public void onLongPress(MotionEvent e)
{Log.i("onCreateInputView", "제스처가 입력된거냐?");
}
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
{Log.i("onCreateInputView", "제스처가 입력된거냐?");
return true;
}
public void onShowPress(MotionEvent e)
{Log.i("onCreateInputView", "제스처가 입력된거냐?");
}
public boolean onSingleTapUp(MotionEvent e)
{Log.i("onCreateInputView", "제스처가 입력된거냐?");
return true;
}
};
}
}
키보드위에서 제스처를 작동해봐도 아예 작동조차안합니다.. 로그도 안찍히구요...
어떻게해야할지 조언부탁드립니다...