2014-02-09 2 views
0

동일한보기에서 드래그 이벤트와 가로 챈 이벤트를 가로 채려고 시도하므로 사용자가 드롭보기 위치로 드래그하거나 사용자가 동일한보기를 두 번 탭하면 대화 상자를 열 수 있습니다. 문제는 SimpleOnGestureListener를 사용하여 View.DragShadowBuilder (view)를 설정 한 후 MotionEvent.ACTION_DOWN 이벤트를 가로 챌 때 onDoubleTap이 호출되지 않을 때입니다. 보기를 끌 수있는 방법에 대한 아이디어뿐만 아니라 더블 도청? 가능한 경우 SimpleEventGenerationListener의 MotionEvent.ACTION_CANCEL 또는 onSingleTapUp 메서드에서 view.startDrag를 취소 할 가능성이 있다고 생각했지만 지금까지는 드래그를 취소 할 방법을 찾지 못했습니다. 감사. 활동에동일한보기에서 리스너를 두 번 탭하고 드래그합니까?

@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 
     // AlbumHolder holder = null; 
     if(row == null) 
     { 
      LayoutInflater inflater = ((Activity)context).getLayoutInflater(); 
      row = inflater.inflate(layoutResourceId, parent, false); 
     } 


    final GestureDetector gdt = new GestureDetector(getActivity(),new GestureListener(textview,storyItem)); 
       textview.setOnTouchListener(new View.OnTouchListener() { 

        @Override 
        public boolean onTouch(View v, MotionEvent event) { 
          action = event.getActionMasked(); 
          return gdt.onTouchEvent(event); 

        } 
       }); 

외부 어댑터 : 어댑터의 getView에서

private class GestureListener extends SimpleOnGestureListener { 

     @Override 
      public boolean onDown(MotionEvent motionEvent) { 

      if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 

        ClipData data = ClipData.newPlainText("", ""); 
        DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
        view.startDrag(data, shadowBuilder, view, 0); 
        return true; 


        } 

       return true; 
      } 


      @Override 
      public boolean onDoubleTap(MotionEvent e){ 
       Toast.makeText(getActivity(), "double tapped", Toast.LENGTH_SHORT).show(); 

       showDialog(); 

       return true ; 

      } 
    } 

답변

0


내가 전에 같은 문제에 직면하고 내가 무슨 짓을하는 것은 내가에 드래그 & 놓기 작업을 이동했다 onLongPress GestureDetector의 이벤트입니다.

그래서 당신이 당신을 도울 것 대신

@Override 
public void onLongPress(MotionEvent motionEvent) {    

    ClipData data = ClipData.newPlainText("", ""); 
    DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view); 
    view.startDrag(data, shadowBuilder, view, 0);       

} 

희망을 onLongPress 사용할 수 있습니다.