2013-04-18 3 views
1
에 번역 알파 애니메이션을 수행 할 수 없습니다

나는 다음과 같은 애니메이션 자원 한 : 대화 상자를 해제 할 때 그래서 나는 대화에서이 애니메이션 세트를는 진저 브레드

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

, 그것은 약간 페이드를 아래로 이동 아웃. 이것은 Android 3.0 이상에서 작동하지만 3.0 이전 장치에서는 애니메이션의 알파 부분이 아무 것도하지 않습니다. 지속 시간을 길게 설정하면 대화 상자가 즉시 사라지지 않으므로 대화 상자가 사라지고있는 것 같지 않습니다. 번역을 주석으로 처리하거나 번역의 toDelta 값을 0으로 설정하면 (번역이 없으므로) 알파가 2.3.4에서 작동합니다. 대화가 사라져서 움직이지 않을 것입니다.

이유가 무엇인가요? 4.0으로 업데이트 할 수있는 HTC Evo 3d에서 문제가 발생하지만 업데이트하지 않아 테스트 장치로 사용할 수 있습니다.

답변

0

인터폴 레이터를 공유 할 때 문제가 발생했습니다. android:shareInterpolator을 사용하지 않고 각 애니메이션에 대해 보간기를 설정해보십시오.

+0

같은 효과가 있었지만 번역 작업은했으나 알파는 효과가 없었습니다. 그래도 고마워. –

0

float를 사용하는 알파 애니메이션은 API 레벨 11에서만 도입되었습니다. setAlpha (int) 애니메이션은 API 레벨 1 이후로 존재합니다. 내장 된 메서드에서와 같은 방식으로 XML에서 작동하는지 확실하지 않지만 float 대신 정수 값 "1"과 "0"을 사용할 수 있습니다.

0

알파를 특정 부동 소수점 값으로 설정하는 것 외에는 아무것도 수행하지 않는 애니메이션을 수행 할 수 있습니다. 알파를 설정할 때마다 애니메이션을 사용해야하므로 리소스 비용이 많이 든다고 생각합니다.

public void setLayoutAlpha(float alpha, View v){ 
    AlphaAnimation alphaAnim = new AlphaAnimation(alpha, alpha); 
    alphaAnim.setFillAfter(true); 
    alphaAnim.setFillEnabled(true); 
    v.startAnimation(alphaAnim); 
} 

이렇게 호출 할 수 있습니다. 이것은 내가 3.0

는 희망이 당신이 그것을 사용할 필요가 무엇을 위해 작동 할 사전 작업 페이딩 경관을 감상 할 수있는 swipeToDismiss 레이아웃을 만드는 데 사용되는 것입니다

setLayoutAlpha(1f,viewToChangeAlpha); 

.

관련 문제