2013-06-21 3 views
3

Android에서는 클릭 한 항목의 높이가 변경되는 목록을 만들려고합니다. 높이가 변경되면 해당 항목 아래의 모든보기가 위아래로 움직입니다. 내가 대신있는 LinearLayout의 ListView에, 클릭 한 항목 애니메이션의 높이에이 LayoutTransition을 적용 할 때, 그러나ListVIew에서 'Changing'LayoutTransition 유형을 사용하면 아무런 효과가 없습니다.

LayoutTransition t = new LayoutTransition(); 
t.enableTransitionType(LayoutTransition.CHANGING); 
myLinearLayout.setLayoutTransition(t); 

: 나는있는 LinearLayout 내부 항목의 '목록'으로 다음 코드를 사용하여 성공을 거두었습니다 그러나 그 아래의 모든 항목은 즉시 새로운 위치로 점프합니다. 클릭 한 항목으로 나머지보기에 애니메이션 효과를 적용하려면 어떻게해야합니까?

답변

1

이 작업을 쉽게 수행 할 수 없습니다 (더 좋은 방법이 있습니다). ListView 행의 위치는 AdapterView에 의해 고정되고 제어됩니다.

약간의 연구를했습니다. 첫째, CHANGING 애니메이션을 실행하기 위해 행을 일반적으로 제거 할 수 없습니다 (어댑터에서 항목 삭제). 가시성을 GONE으로 설정하여 항목을 숨겨야하는 경우 DISAPPEARING 애니메이션과 그에 따른 CHANGING 애니메이션이 실행됩니다. 그러나 CHANGING 애니메이션을 사용 가능하게하려면 행 높이를 변경할 때 언제든지 ListView에서 레이아웃을 요청해야합니다. 애니메이션이 끝나면 어댑터에서 항목을 삭제하고 ListView를 다시 그릴 수 있습니다. 또한 행 ID를 모든 ListView를 다시 그리지 않는 위치로 안정화시킬 수 있습니다. 나는 이런 식으로 시도했지만 안드로이드 API의 여러 버전에 합병증이있었습니다.

결국 LayoutTransition을 사용하여 ListView에서 애니메이션을 구현할 수 있지만 구현 관점에서 볼 때 복잡하고 가치가 없습니다. 간단한 경우에는 충분하지만 ListView에서는 더 복잡한 애니메이션에는 적합하지 않습니다. 애니메이션을 구현하려면 이미 요리 된 구성 요소를 사용하는 것이 좋습니다. https://github.com/nhaarman/ListViewAnimations

관련 문제