2012-08-14 4 views
8

showPrevious가 호출 될 때 뷰 애니메이션을 실행하는 ViewFlipper가 있습니다. 애니메이션이 잘 작동합니다. 그러나 문제는 1 초 이상의 지연으로 시작된다는 것입니다. 이제는별로 좋아 보이지 않지만 앱 사용이 진지하게 지연됩니다.'거대한'지연이있는 ViewFlipper

내 애니메이션은 다음과 같습니다.

Animation inFromLeft = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, -1.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f); 
inFromLeft.setDuration(350); 
inFromLeft.setInterpolator(new LinearInterpolator()); 

Animation outtoRight = new TranslateAnimation(
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, +1.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f, 
    Animation.RELATIVE_TO_PARENT, 0.0f); 
outtoRight.setDuration(350); 
outtoRight.setInterpolator(new LinearInterpolator()); 

setInAnimationsetOutAnimation를 이용한 애니메이션을 설정; 애니메이션은 1 초 이상 지연으로 시작하는 이유

setInAnimation(inFromLeft); 
setOutAnimation(outtoRight); 

가 그리고 난 그냥 어떤 이유가 showPrevious

사용하여 애니메이션을 시작, 애니메이션에 대한 startTime을은 -1과 startOffset은 0입니다.

답변

2

두 가지 제안 사항. 가능한 경우 먼저 ViewPager를 사용하도록 전환하십시오. 둘째, 첫 번째가 불가능한 경우 XML 기반 애니메이션을 사용하십시오. 코드에서 자원으로 밀어내는 것이 보통 승리입니다.

+0

솔루션이 ViewPager로 전환 중이며 애니메이션이 원하는 애니메이션과 정확히 일치하지 않지만 지연이 사라졌습니다. 애니메이션을 XML로 변경해도 아무 것도 변경되지 않았습니다. – Thys

1

애니메이션에서 지연이 발생 했습니까? AnimationListener의 startAnimation 메소드를 포함한 일부 로깅을 추가하려고 시도 했습니까?

애니메이션을 시작한 후에 지연이 발생하면 애니메이션을 시작하기 전과 끝내고 (AnimationListener를 다시 사용) 사이에 traceview을 사용해 볼 수 있습니다. 그 동안 Android가하는 일을 알려줍니다.

0

@MrThys와 동일한 문제가 있지만 진저 브레드 기기에서만 볼 수 있습니다. JellyBean 디바이스에는 그러한 문제가 없습니다.

+0

이것은 답변이 아니라 주석입니다. – Joel

+0

당신이 옳습니다. 하지만 나는 실제 게시물에 대해 최대 - 투표/논평을 할 수 없었고 같은 문제에 직면 해있다. XML 기반 애니메이션을 시도했지만 도움이되지 않았습니다. – user1102412

+0

답변으로 게시하는 것이 타당하지 않습니다. 충분한 평판을 얻거나 다른 질문을 할 때까지 기다리십시오. – Joel