2011-12-20 1 views
0

내 게임의 레벨 선택 메뉴에 대한 갤러리보기를 만들려고합니다. 가로로 세 개의 항목이 있고 왼쪽과 오른쪽의 두 개의 단추가 있습니다. 오른쪽 버튼을 누르면 세 항목이 모두 왼쪽으로 이동해야하고 왼쪽 버튼이 클릭되면 항목이 오른쪽으로 이동합니다. 변형 애니메이션 android:fillAfter atribute를 사용하여 문제를 발견했습니다 : true 인 경우 항목을 처음으로 이동하고 예상대로 위치를 유지해야합니다. 그러나 두 번째 클릭에서 초기 위치에서 이동하기 시작합니다. 실제 좌표는 첫 번째 변형 이후 변경되지 않습니다. 내가 놓친 게 있니? 어떻게 그 목표를 달성 할 수 있습니까?순차적으로 애니메이션 번역 및 축척 적용

답변

0

android:fillAfter은보기의 속성을 변경하지 않습니다. 애니메이션이 완성되면 그 자리에 그림이 그려지지만, 물리적 속성은 동일합니다. 번역 애니메이션은 실제로 위치하는 곳을 기준으로 움직이는 애니메이션입니다. 또한보기는 사용자가 이동 한 위치에 실제로 있지 않으므로 사용자가 터치하면 터치가 등록되지 않습니다. 사용자가 어디에 있었는지 만지면 등록됩니다.

이 경우 수행해야하는 작업은 현재보고있는 위치에서 원하는 위치로 애니메이션을 적용하는 것입니다.

가능한 해결 방법 :

왼쪽에서 오른쪽으로 :

TranslateAnimation (Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0); 

오른쪽에서 왼쪽으로 :이 경우

TranslateAnimation (Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0); 

를, I는 0 %에서 왼쪽에서 오른쪽으로 애니메이션 해요 ~ 100 %입니다. fillAfter을 사용하면보기가 표시됩니다. 그 후, 저는 부모와 관련하여 오른쪽에서 왼쪽으로 100 %에서 0 %로 움직이는 것입니다.

+0

답변 해 주셔서 감사합니다.하지만 그것이 실제로하고있는 작업입니다. 매번 항목에 100 % 왼쪽 오프셋을 적용하지만 매번 처음 위치에서 벗어납니다. 애니메이션이 끝난 후에 뷰의 좌표를 재정의하는 방법이 있습니까? – Egor

+0

프리 허니 콤 애니메이션을 사용하면 속성을 직접 변경하지 않고도 할 수있는 방법이 있다고 생각하지 않습니다. 현재 위치'onAnimationEnd'를 읽고, 위치를 변경 한 다음,'layout' 패스를 강제 실행하는 커스텀 뷰가 필요할 수도 있습니다. – DeeV

+0

@ Egor : 여기에 분명히 언급되어 있지만, 다른 점은 마음에 듭니다. 'fillBefore' 속성을 true에 적용하려고 할 수도 있습니다. 기본적으로 true이지만 false로 설정하면 (true로 설정된 'fillEnabled') 애니메이션의 초기 속성은 애니메이션 전에 적용되지 않습니다. – DeeV