2011-09-15 10 views
11

애니메이션과 함께 표시하고 싶은 멋진 PopupWindow가 있습니다. 나는 이런 식으로 작업을 수행합니다PopupWindow 애니메이션이 작동하지 않습니다.

popup.setAnimationStyle(R.anim.appear); 
popup.showAtLocation(popupMenuLayout, gravity, offsetX, offsetY); 

나는 다음 애니메이션을 변경하는 리스너를 설정 :

popup.setOnDismissListener(new PopupWindow.OnDismissListener(){ 
@Override 
public void onDismiss(){ 
    popup.setAnimationStyle(R.anim.disappear); 
}  
}); 

하지만, 이봐, 그것은 작동하지 않습니다. 둘에 대한 고해상도/ANIM/표시 :

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:fromYDelta="0" 
android:toYDelta="100%" 
android:duration="1000" 
/> 

모든 단서 :

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:fromYDelta="100%" 
android:toYDelta="0" 
android:duration="1000" 
/> 

아니다 고해상도/ANIM/사라에 대한

?

답변

49

실제로 PopupWindow.setAnimationStyle에는 2 개의 항목이있는 스타일이 필요합니다. 두 개의 xml이 있어야합니다. 두 개의 xml은 각각 <set>을 포함하고 있습니다. 하나는 표시 용이고 다른 하나는 창을 숨기기위한 것입니다.

<style name="AnimationPopup"> 
    <item name="android:windowEnterAnimation">@anim/popup_show</item> 
    <item name="android:windowExitAnimation">@anim/popup_hide</item> 
</style> 

R.style.AnimationPopup에 애니메이션 스타일을 설정이 완료되면, 값/styles.xml에 다음 조각을 넣어. 그럴거야.

https://github.com/lorensiuswlt/NewQuickAction3D에서이 정보를 얻었습니다. 문서에 언급 된 내용이 없습니다.

업데이트 :

2012 년 안드로이드 SDK의 업데이트가 변경된 XML 구문. 원래 @android:windowEnterAnimationandroid:windowEnterAnimation이되었습니다. 따라서이 답변은 그에 따라 업데이트됩니다.

+0

감사합니다. 나는 이것을 시도 할 것이다 – slipbull

+0

고마워! 귀하의 제안은 저에게 효과적이었습니다. – kgiannakakis

+2

도움이 되었다면 대답으로 받아 들여야합니다. 그래서 다른 사람이 쉽게이 사실을 알 수 있습니다. –

관련 문제