简单思路:
1.popup或布局添加位移动画,然后获取其所在window,再设置半透明属性,即可
2.POPUP添加位移动画,整个背景VIEW添加渐变动画使其变,(也可以添加缩小动画,带有层次效果)
参考:
http://104zz.iteye.com/blog/1685425
http://blog.csdn.net/luhuajcdd/article/details/10924469
思路:
1,注意window 的相关设置
- <style name="AnimBottom" parent="@android:style/Animation">
- <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
- <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
- </style>
- <style name="MyDialogStyleBottom" parent="android:Theme.Dialog">
- <item name="android:windowAnimationStyle">@style/AnimBottom</item>
- <item name="android:windowFrame">@null</item>
- ;!-- 边框 -->
- <item name="android:windowIsFloating">true</item>
- ;!-- 是否浮现在activity之上 -->
- <item name="android:windowIsTranslucent">true</item>
- ;!-- 半透明 -->
- <item name="android:windowNoTitle">true</item>
- ;!-- 无标题 -->
- <item name="android:windowBackground">@android:color/transparent</item>
- ;!-- 背景透明 -->
- <item name="android:backgroundDimEnabled">true</item>
- ;!-- 模糊 -->
- </style>
有些是必需的:如浮现,背景色透明,模糊之类
2.添加向上位移和向下位移动画
push_bottom_in.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 上下滑入式 -->
- <set xmlns:android="http://schemas.android.com/apk/res/android" >
- <translate
- android:duration="200"
- android:fromYDelta="100%p"
- android:toYDelta="0"
- />
- </set>
push_buttom_out.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 上下滑出式 -->
- <set xmlns:android="http://schemas.android.com/apk/res/android" >
- <translate
- android:duration="200"
- android:fromYDelta="0"
- android:toYDelta="50%p" /> // 这里为什么是50%p?(p表示相对父容器) by zj 未测试
- </set>
3.如果用代码则类似
- Window window = dialog.getWindow();
- //设置显示动画
- window.setWindowAnimations(R.style.main_menu_animstyle);
- WindowManager.LayoutParams wl = window.getAttributes();
- wl.x = 0;
- wl.y = getWindowManager().getDefaultDisplay().getHeight();
- //设置显示位置
- dialog.onWindowAttributesChanged(wl);//设置点击外围解散
注意:dialog的动画都是基于所在window实现