2011-01-06 2 views
0

텍스트보기를 왼쪽으로 슬라이드하고 오른쪽에서 다시 슬라이드하는 애니메이션을 만들려고합니다. 본질적으로 이것은 스톱워치 & 타이머 응용 프로그램 (sportstracklive는 개발자)에서 사용되는 텍스트 효과와 같습니다.Android 애니메이션 startOffset을 사용하면 대상보기가 깜박이고 애니메이션이 적용되지 않습니다.

이 애니메이션 세트 중 하나를 다른 애니메이션 세트와 함께 사용할 수 있으며 제대로 작동하며 원하는대로 정확하게 작업 할 수 있습니다. 그러나 함께 사용하려고하면 TextView가 약 1 초 정도 동안 깜박입니다. startOffset을 제거하면 예상대로 작동합니다. 두 애니메이션 세트가 동시에 실행됩니다.

다음은 XML이다 :

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromXDelta="0%" 
     android:toXDelta="-25%" 
     android:fromYDelta="0%" 
     android:toYDelta="0%" 
     android:duration="@android:integer/config_shortAnimTime" 
    /> 
    <alpha 
     android:interpolator="@android:anim/decelerate_interpolator" 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" 
     android:duration="@android:integer/config_shortAnimTime" 
    /> 
    <set> 
     <translate 
      android:fromXDelta="25%" 
      android:toXDelta="0%" 
      android:fromYDelta="0%" 
      android:toYDelta="0%" 
      android:startOffset="@android:integer/config_shortAnimTime" 
      android:duration="@android:integer/config_shortAnimTime" 
     /> 
     <alpha 
      android:interpolator="@android:anim/decelerate_interpolator" 
      android:fromAlpha="0.0" 
      android:toAlpha="1.0" 
      android:startOffset="@android:integer/config_shortAnimTime" 
      android:duration="@android:integer/config_shortAnimTime" 
     /> 
    </set> 
</set> 

그리고 여기를 실행하는 긴 자바 코드는 다음과 같습니다

AnimationSet mSlideRightToLeft = 
     (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.slide_right_to_left); 
    mMyTextView.startAnimation(mSlideRightToLeft); 
+0

궁금한 점 : 태그 안에 애니메이션의 두 번째 부분이있는 이유는 무엇입니까? 나는 당신이 달성하려고하는 것과 비슷한 애니메이션을 만들었지 만 다른 애니메이션 안에 또 다른 태그 – justinl

답변

2

Justinl의 의견은 정확합니다. 몇 달 전에 똑같은 문제가있었습니다. 다른 애니메이션 주위에 설정된 태그를 제거하고 startOffsets을 유지하십시오.

다음 코드에서 애니메이션 세트를 제거 단지 정상적인 부하 애니메이션을 수행

Animation a = AnimationUtils.loadAnimation(this, R.anim.slide_right_to_left); 
mMyTextView.startAnimation(a); 

편집 : 안드로이드는 단순히 여러 개의 애니메이션이 같은에서가이 설정을 좋아하지 않는처럼 참으로 그것은 본다 시각. 각 애니메이션 집합에 대해 별도의 파일을 만든 다음 프로그램 내의 AnimationSet을 통해 구성해야 할 수도 있습니다.

+0

을 가지고 있지 않다. – justinl

+0

태그와 AnimationSet의 사용은 wreckless에서 나왔다. 실험. 방금 다시 확인하고 확인하기 위해 다시 시도했지만, 여기에 언급 된 방법은 동일한 결과가 있습니다. 어쩌면 깜박임이 조금 빨라졌지만 그럼에도 불구하고 깜박임. –

+0

편집 해 주셔서 감사합니다. 나는 그것을 밖으로 시도하고 그것이 어떻게되는지 알려주지. –

관련 문제