2017-11-27 12 views
0

달성하려는 것은 사용자 지정보기가 있다는 것입니다. 뷰는 화면에서 드래그 할 수 있습니다.사용자 지정보기 및 터치 리스너

하지만보기를 탭하면 다른보기가 어떻게 표시됩니까?

내가 원하는 것을 얻는 방법에 대한 내 아이디어는보기를 길게 누른 다음 이동할 수 있는지 그리고보기를 표시하지 않는지 확인하는 것입니다. 사전에 어떤 도움

collapsedLayout.setOnTouchListener(new View.OnTouchListener() { 
     private int initialX; 
     private int initialY; 
     private float initialTouchX; 
     private float initialTouchY; 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
       case MotionEvent.ACTION_DOWN: 

         initialX = params.x; 
         initialY = params.y; 
         initialTouchX = event.getRawX(); 
         initialTouchY = event.getRawY(); 

        return true; 

       case MotionEvent.ACTION_UP: 

        return true; 


       case MotionEvent.ACTION_MOVE: 
        params.x = initialX + (int) (event.getRawX() - initialTouchX); 
        params.y = initialY + (int) (event.getRawY() - initialTouchY); 
        mWindowManager.updateViewLayout(entireLayout, params); 
        return true; 
      } 
      return false; 
     } 
    }); 

감사 :

이 내 코드입니다!

답변

0
private static final int THRESHOLD_X = 120; 
private static final int THRESHOLD_Y = 120; 
private static final int NONE = 0; 
private static final int MOVE = 1; 
private static int mode = NONE; 

collapsedLayout.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      switch (motionEvent.getAction()){ 
       case MotionEvent.ACTION_DOWN: 
        // Action Down 
        break; 
       case MotionEvent.ACTION_MOVE: 
        if(view.getX() > THRESHOLD_X && view.getY()> THRESHOLD_Y){ 
         // performDrag 
         mode = MOVE; 
         performDrag(view); 
        } 
        break; 
       case MotionEvent.ACTION_UP: 
        // Action up 
        if(mode == MOVE){ 
         // Do nothing and return 
         return true; 
        } 
        // Perform click to the view 
        view.performClick(); 
        break; 
       default: 
        // Handle default case. 
        break; 
      } 
      return false; 
     } 
    });