마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

키보드 관련 질문입니다!!

0 추천

안녕하세요 학생입니다!

 

현재 키보드 어플을 만들고있습니다!

 

제가 지금 키보드 어플을 만들고 있는 와중에..

 

제스처를 구현하고 싶어서 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;
	    }
	};
	
	}

}

 

키보드위에서 제스처를 작동해봐도 아예 작동조차안합니다.. 로그도 안찍히구요...

 

어떻게해야할지 조언부탁드립니다...

 

익명사용자 님이 2014년 11월 17일 질문

1개의 답변

0 추천
일단 안드로이드 공식사이트에 있는 키보드 문서는 읽어보고 구조를 이해하시기 바랍니다.

키보드를 구현할 때 Activity는 굳이 필요하지 않습니다.

http://developer.android.com/guide/topics/text/creating-input-method.html
익명사용자 님이 2014년 11월 17일 답변
...