1

3 개의 드래그 가능한 가로보기가 있습니다. 예를 들어, 내가 두 번째로 먼저 떨어지면 두 번째와 세 번째는 오른쪽으로 이동해야합니다. 초기 위치 : 코드 enter image description hereAndroid보기는 시각적으로 정상 위치에 있지만 사실 - TranslateAnimation 이후의 시작 위치에 있습니다.

: After drop

받는 것을 나는 오래 누르면 :

case DragEvent.ACTION_DROP: 
       targetIndex = ((ViewInfo) targetView.getTag()).index; 
       int lastIndex = getChildCount() - 1; 
       droppedView = (View) event.getLocalState(); 
       droppedIndex = ((ViewInfo) droppedView.getTag()).index; 

       if (droppedView == this) { 
        return false; 
       } 

       for (int i = targetIndex; i <= lastIndex; i++) { 
        if (getChildAt(i) != droppedView) { 
         moveChildToRight(i); 
        } 
       } 

private void moveChildToRight(int index) { 
      .... 
      TranslateAnimation anim = new TranslateAnimation(0, 200, 0, 0); 
      anim.setDuration(1000); 
      anim.setFillAfter(true); 
      anim.setAnimationListener(new AnimationListener() { 

       @Override 
       public void onAnimationEnd(Animation animation) { 
        Log.d(TAG, "Animation ended"); 
        requestLayout(); 
       } 

       @Override 
       public void onAnimationRepeat(Animation arg0) { 
        // TODO Auto-generated method stub 

       } 

       @Override 
       public void onAnimationStart(Animation arg0) { 
        // TODO Auto-generated method stub 

       } 

      }); 

      child.startAnimation(anim); 
     } 

확인 후 2 층과 3보기 드롭이 오른쪽으로 이동 1 번째와 2 번째 + 3 번째보기 사이의 빈 공간과 무엇이 보입니까? 두 번째보기의 드래그가 시작됩니다! 그러나 실제로 만져질 수있는 것보다 훨씬 가볍습니다. 두 번째 또는 세 번째보기의 '시각적'표현은 애니메이션 후에는 접할 수 없습니다. Bug

왜?

답변

1

나는 1 년이 넘었다는 것을 알고 있지만 누군가 다른 사람이 페이지를 발견하면 대답 할 것입니다.

번역 애니메이션 (보기 애니메이션)이 작동하는 방식입니다. 객체를 시각적으로 이동하지만 실제로 X/Y 속성은 업데이트하지 않습니다. 예를 들어보기가 버튼 인 경우 원래 영역을 터치하면 버튼이 시각적으로 보이는 곳에 클릭이 표시되지만 실제 버튼이 절대로 움직이지 않으므로 아무 것도하지 않는 버튼을 클릭하면 볼 수 있습니다.