2012-11-21 6 views
1

dev 옵션을 사용하지 않는 활동이 켜져있을 때 잘 작동하는 앱이 있습니다.onCreate가 다시 호출 될 때 Android 애니메이션이 시작되지 않습니다.

언제

응용 프로그램이 백그라운드로 이동하고 다시 모든 시간의에서 onCreate 함수가 다시 호출하지만 OFF입니다. 거기에 마지막 앱 상태가 다시 생성됩니다.

이제는 사용자 작업에서 발생하는 간단한 애니메이션이 시작되지 않고 애니메이션 처리기가 호출되지 않는 것이 문제입니다.

애니메이션이 무시 된 것처럼 보입니다. 그리고 이것은 활동이 살해되고 다시 생성 될 때만 발생합니다.

그리고 가장 이상한 부분은 하나의 이미지 뷰 (개폐식)에 2 개와 다른 이미지 뷰 (개폐식)에 2 개씩 4 개의 애니메이션이 있다는 것입니다.

그리고 이것은 오프닝 애니메이션에서 일어납니다.

나를 도와 줄 수 있습니까?

애니메이션 XMLS (개구 중 하나로/폐쇄 anims)

redShow 애니메이션

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator"> 
    <alpha 
     android:fromAlpha="0.1" 
     android:toAlpha="1.0" 
     android:duration="800" 
     /> 
    <scale android:fromXScale="0.0" 
     android:toXScale="1.0" 
     android:fromYScale="0.0" 
     android:toYScale="1.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:duration="800"> 

    </scale> 
</set> 

redHide 애니메이션

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator"> 
    <alpha 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" 
     android:duration="300" 
     /> 
    <scale android:fromXScale="1.0" 
     android:toXScale="0.0" 
     android:fromYScale="1.0" 
     android:toYScale="0.0" 
     android:pivotX="50%" 
     android:pivotY="50%" 
     android:duration="300"> 

    </scale> 
</set> 

(에서 onCreate에서) 코드 I 초기화 중하고 물건

red = (ImageView) findViewById(R.id.red); 

redHide = AnimationUtils.loadAnimation(this, R.anim.red_hide); 
redHide.setFillAfter(true); 
redHide.setAnimationListener(this); 

redShow = AnimationUtils.loadAnimation(this, R.anim.red_show);   
redShow.setFillAfter(true); 
redShow.setAnimationListener(this); 

핸들러 및 방법 나는 당신이 시도 할 수

private void showRed() { 
    red.startAnimation(redShow); //this is the one that is not happening 
} 

private void hideRed() { 
    red.startAnimation(redHide); 
} 

@Override 
public void onAnimationEnd(Animation a) { 
} 

@Override 
public void onAnimationRepeat(Animation a) { 
} 

@Override 
public void onAnimationStart(Animation a) { 
} 

G

+0

코드를 게시해야합니다. – Rawkode

+1

코드없이 도움을 얻을 수 없습니다. 그리고 팁은 onCreate에서 가능한 한 적게하십시오. onResume() 또는 onStart()가이 점을 처리하는 데 더 좋은 장소입니다. – Simon

+0

startAnimation()이 호출되는 것이 확실합니까 (예 : 중단 점)? – Simon

답변

3

상황을 callling 오전 : onResume에서 애니메이션 초기화

  • () 대신.
  • 각 애니메이션을 시작하기 전에 clearAnimation()을 호출하십시오.
  • fillAfter()없이 애니메이션하려고하면 어쩌면 애니메이션이 최신 상태로 고정되어있을 수 있습니다. 당신은 당신이 우리에게 보여주고 코드가 잘 보이는부터 마지막 ​​응용 프로그램의 상태를 재현하는 것을 썼을 때 깜박이는 빨간색 경고 램프가 꺼져 갔다

    그냥 몇 가지 아이디어

....

관련 문제