仿自下向上动画弹出菜单(同时背景窗口变暗/缩小)的实现原理,例小米,苹果等菜单

简单思路:

1.popup或布局添加位移动画,然后获取其所在window,再设置半透明属性,即可

2.POPUP添加位移动画,整个背景VIEW添加渐变动画使其变,(也可以添加缩小动画,带有层次效果)


参考:

http://104zz.iteye.com/blog/1685425

http://blog.csdn.net/luhuajcdd/article/details/10924469


思路:

1,注意window 的相关设置

  1. <style name="AnimBottom" parent="@android:style/Animation">  
  2.     <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>  
  3.     <item name="android:windowExitAnimation">@anim/push_bottom_out</item>  
  4. </style>  
  5.   
  6. <style name="MyDialogStyleBottom" parent="android:Theme.Dialog">  
  7.     <item name="android:windowAnimationStyle">@style/AnimBottom</item>  
  8.     <item name="android:windowFrame">@null</item>  
  9. ;!-- 边框 -->  
  10.     <item name="android:windowIsFloating">true</item>  
  11. ;!-- 是否浮现在activity之上 -->  
  12.     <item name="android:windowIsTranslucent">true</item>  
  13. ;!-- 半透明 -->  
  14.     <item name="android:windowNoTitle">true</item>  
  15. ;!-- 无标题 -->  
  16.     <item name="android:windowBackground">@android:color/transparent</item>  
  17. ;!-- 背景透明 -->  
  18.     <item name="android:backgroundDimEnabled">true</item>  
  19. ;!-- 模糊 -->  
  20. </style>  

有些是必需的:如浮现,背景色透明,模糊之类

2.添加向上位移和向下位移动画

push_bottom_in.xml

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- 上下滑入式 -->  
  3. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  4.   
  5.     <translate  
  6.         android:duration="200"  
  7.         android:fromYDelta="100%p"  
  8.         android:toYDelta="0"          
  9.      />        
  10. </set>  

 push_buttom_out.xml

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- 上下滑出式 -->  
  3. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  4.   
  5.       
  6.     <translate  
  7.         android:duration="200"  
  8.         android:fromYDelta="0"  
  9.         android:toYDelta="50%p" />  // 这里为什么是50%p?(p表示相对父容器) by zj 未测试
  10. </set>  

3.如果用代码则类似

[html]  view plain copy
  1. Window window = dialog.getWindow();  
  2. //设置显示动画  
  3. window.setWindowAnimations(R.style.main_menu_animstyle);  
  4. WindowManager.LayoutParams wl = window.getAttributes();  
  5. wl.x = 0;  
  6. wl.y = getWindowManager().getDefaultDisplay().getHeight();  
  7. //设置显示位置  
  8. dialog.onWindowAttributesChanged(wl);//设置点击外围解散  

注意:dialog的动画都是基于所在window实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值