그래서 내 레이아웃에 ImageView가 있고 사용자가 후자를 스 와이프하면 이미지를 오른쪽 또는 왼쪽으로 밀기를 원했습니다. 아래 그림과 같이 TranslateAnimation을 사용하여 ImageView를 번역했습니다.TranslateAnimation on ImageView (안 드 로이드)
ImageView logoFocus = (ImageView) findViewById(R.id.logoFocus);
Animation animSurprise2Movement = new TranslateAnimation(logoFocus.getLeft(), logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getTop());
animSurprise2Movement.setDuration(1000);
animSurprise2Movement.setFillAfter(true);
animSurprise2Movement.setFillEnabled(true);
logoFocus.startAnimation(animSurprise2Movement);
내 오른쪽으로 스 와이프 섹션에서이 코드를 배치하고, 동일한 코드 만 메쏘드 getLeft()를 사용하여 한 - 슬쩍 왼쪽 섹션 (150). 처음으로 스 와이프하면 예상대로 작동하지만 다른 방향으로 스 와이프하면 ImageView가 원래 위치로 돌아가 원래 위치로 슬라이드하는 대신 다른 방향으로 슬라이드됩니다.
나는 이미 AnimationListener의 onAnimationEnd 메소드에 다음을 추가하려고 시도했지만, AnimationListener는 Animation으로 설정했지만 헛된 것입니다.
MarginLayoutParams params = (MarginLayoutParams) logoFocus.getLayoutParams();
params.setMargins(logoFocus.getLeft()+150, logoFocus.getTop(), logoFocus.getRight(), logoFocus.getBottom());
logoFocus.setLayoutParams(params);
다음과 같은 방법으로 시도했지만 예상대로 작동하지 않았습니다.
((RelativeLayout.LayoutParams) logoFocus.getLayoutParams()).leftMargin += 150;
logoFocus.requestLayout();
아무도 도와 주시겠습니까? 애니메이션 후 setFillAfter (true) 및 setFillEnabled (true)를 사용하더라도 위치가 변경되지 않는 것 같습니다. TranslateAnimation 사용에 대한 대안이 있습니까?
도움을 제공해 주셔서 감사합니다. :)
예, TranslateAnimation API로 디자인 제한이 있습니다. ImageView가 화면 상에 렌더링되는 곳에서는 애니메이션이 변경되지만 실제로 레이아웃의 ImageView 위치는 변경되지 않습니다. Android 3.0에서 소개 된 새로운 객체 기반 애니메이션 API (http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html) – mportuesisf
응답 해 주셔서 감사합니다. 하지만 Android 2.3 (API 레벨 9) 용으로 개발한다면 어떻게 될까요? 다른 방법은 없나요? :/ – jpmastermind
수동으로 항목을 이동할 수 있다고 생각합니다. 그렇게하기위한 올바른 마법 방법을 찾지 못했습니다. 현재 레이아웃을 업데이트하는 대신 ImageView에 새로운 LayoutParams를 설정하십시오. 죄송합니다. 내가 시도한 코드를 놓친 것을 유감스럽게 생각합니다. 프로그래밍 방식으로 레이아웃에서 ImageView를 이동할 수 있으므로 안심하십시오. 다른 사람이 코드에서 결함을 발견 할 수 있습니다. – mportuesisf