API11을 사용하고 있으므로 Animator API을 사용하십시오. 모든 뷰에는 현재 해당 setter 및 getter가있는 속성이 있습니다.
View viewToShiftOut = getOutView();
ObjectAnimator outAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", 0, -widthOfScreen);
outAnim.setDuration(1000);
outAnim.start();
이보기를 이동하고 그것이 1 초 (1000 밀리 초)의 기간 동안 화면에서 전체 내용이다 : 범위에서 왼쪽으로 볼을 이동하려면, 화면의 폭을 얻을 다음 할 . 애니메이션 완료 할 때 수행 할 수 있습니다, 그래서보기를 따를 것이다
View viewToShiftIn = getInView();
ObjectAnimator inAnim = ObjectAnimator.ofFloat(viewToShiftIn, "x", widthOfScreen, 0);
inAnim.setDuration(1000);
inAnim.start();
모든 속성, 클릭 가능한 영역 등 : 그것의 장소를 이동하기 위해이 작업을 수행. 당신과 같이 함께 애니메이션을 적용 할 수 있습니다 :
View viewToShiftOut = getOutView();
View viewToShiftIn = getInView();
ObjectAnimator outAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", 0, -widthOfScreen);
ObjectAnimator inAnim = ObjectAnimator.ofFloat(viewToShiftOut, "x", widthOfScreen, 0);
outAnim.setDuration(1000);
inAnim.setDuration(1000);
outAnim.start();
inAnim.start();
Blog post
편집 : 난 당신이 단지 1/3로 뷰를 이동하고 싶었 발견, 당신은 widthOfScreen/3
으로 각각 이동하는 픽셀의 양을 얻을 수 있도록 .
EDIT 2 : 또 다른 장점은 대부분의 3.0+ 태블릿에 문제가없는 하드웨어 가속 기능과 함께 사용할 수 있다는 것입니다.
그래, 그게 내가 한 일이야. view.layout (새 좌표) 호출 후보기가 올바른 위치로 이동하더라도 (x에도 음수 여백이 필요함) 잠시 후 시스템에서 레이아웃을 다시 호출하고보기가 다시 제자리에 스냅됩니다. 나는 이것이 레이아웃을 확장하고 올바른 위치를 반영하기 위해 레이아웃 (r, t, l, b)의 값을 변경했는지 확인하는 다양한 방법을 시도했지만이 경우 전혀 효과가 없습니다. – totem
코드를 게시 할 수 있습니까? 나는 네가 정확히 말하는 것을 분명히 알지 못한다. –