2010-03-25 9 views
2

가시성 속성을 각각 "VISIBLE"및 "GONE"으로 설정하여 두 개의 LinearLayouts을 바꿔 보려고합니다. 또한 레이아웃이 바뀌는 동안 애니메이션을 사용하고 있습니다. 애니메이션이 성공적으로 완료되고 올바른 레이아웃이 표시됩니다. 그러나 visibility 속성이 "GONE"으로 설정된 이전 Layout은 보이지 않더라도 클릭을 계속받습니다. 동시에 "VISIBLE"인 레이아웃은 "GONE"레이아웃을 클릭 할 수없는 영역에서 클릭 할 때만 클릭을받습니다. 또한 "VISIBLE"레이아웃에서 requestFocus 메서드를 호출하고 있습니다. 그러나 도움이되지 않습니다.Android LinearLayout 애니메이션의 가시성 문제

또한 애니메이션 부분을 건너 뛰고 표시 속성을 설정하면 모든 것이 올바르게 작동합니다.

무엇이 여기에 있습니까?

답변

2

위젯을 움직이게하는 경우 레이아웃을 변경해야 결과가 "고정"됩니다. 그냥 fillAfter 물건을 사용하면 볼 수있는 효과 중 일부를 줄 것이다 - 그들은 새로운 위치에 그들을 그리기는하지만 실제로 그들은 새로운 위치에 있지 않습니다.

그럼 애니메이션에서 fill* 설정 (예 : fillAfter)을 사용 중지해야합니다. 애니메이션이 어떻게 동작하는지 확인하십시오. 대부분의 경우 시각적으로 클릭 수를 알려줍니다.

그런 다음 애니메이션이 끝날 때 컨트롤을 얻으려면 AnimationListener을 설정하고 그 시점에서 최종 위치에 영향을주기 위해 위젯과 컨테이너를 실제로 변경하십시오.

Here is a sample project 지나치게 복잡한 방식 임에도 불구하고 기성품 위젯보다는 사용자 정의보기에 애니메이션을 적용하고 있기 때문에 그 의미를 잘 보여줍니다.

+0

차갑다. 내 애니메이션에서 setFillAfter (true)를 제거했습니다. 그리고 그것은 효과적이었습니다! 나는 아직도 setfill이 실제로하는 일에 대해 명확하지 않습니다. 샘플 프로젝트는 귀하의 책에서 나온 것 같습니다. 나는 며칠 전에 그걸 겪어 보았고 데모는 효과가 없었습니다. 오늘 밤이 문제를 더 잘 이해하기 위해 다시 시도 할 것입니다. 도와 주셔서 감사합니다. – adityad

+0

샘플은 마지막으로 시도해 보았습니다 ... – CommonsWare