android PopupWindow 动画效果

本文介绍了如何在Android中为PopupWindow添加显示和消失的动画效果。通过创建XML动画资源文件,定义显示和消失的缩放动画,然后创建一个包含这些动画的样式。最后,在代码中使用`setAnimationStyle`方法应用动画风格到PopupWindow,实现PopupWindow从中心点平滑地放大显示和缩小消失的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间搞android 动画,在页面中使用动画后效果还是很不错的,大大提升了用户的体验感。 但是,偶然的机会,要在 popupwindow 中,添加一个 显示和消失的动画,我用之前的动画效果,居然显示效果不对了。

同样是相同的代码,在页面上,就可以很好的显示,但是在popupwindow 上显示的效果,就不一样了。

eg:

  //显示动画

  ScaleAnimation myanim = new ScaleAnimation
  (0.0f, 1.1f, 0.0f, 1.1f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,  0.5f);
  myanim.setDuration(duration); //设置时间间隔

  //隐藏动画

  ScaleAnimation myanim = new ScaleAnimation
  (1.0f, 0.0f, 1.0f, 0.0f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,  0.5f);
  myanim.setDuration(duration); //设置时间间隔
  

  这两个动画,就是一个简单的 以 视图的中心为参照点,放大显示,缩小隐藏 的动画效果。 在页面中,使用没有任何问题。但是在弹出的popupwindow上,却出现了,从左上角开始慢慢扩大的效果。

  起初以为是,设置 运动动画 view 的问题,但是经过反复调整还是无果。 最后,终于找到了答案。

 

以下是解决方法:

 

1> 首先定义好,显示和消失的动画xml;

 eg:

<!-- 显示动画 -->

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

</scale>
</set>

<!-- 消失动画 -->

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
 <!-- 透明度渐变 -->
 <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="200" />
</set>

 

2>  popupwindow 的显示和消失动画,是通过 setAnimationStyle(int id) 的方法,来设置动画的。 这个方法的参数是,一个style 的id ;

     所以需要一个 动画style; 

eg:

  <!-- popwidnow 显示消失 动画 -->
 <style name="mypopwindow_anim_style">
  <item name="android:windowEnterAnimation">@anim/popshow_anim</item>        <!-- 指定显示的动画xml  -->
   <item name="android:windowExitAnimation">@anim/pophidden_anim</item>       <!-- 指定消失的动画xml  -->
 </style>

3> 在代码中,添加 popupwindow 动画;

  eg:

  PopupWindow myimgpopupwindow = new PopupWindow( View (要显示的view对象), LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
  myimgpopupwindow.setAnimationStyle(R.style.mypopwindow_anim_style); //设置动画

  myimgpopupwindow.showAtLocation( View( 参照的view对象), Gravity.CENTER, 0, 0);     //居中来显示

 

好了,1,2,3, 搞定!这下,你是不是也会给popupwindow设置显示消失动画了?  Come on  ! 赶快试试吧!*~*

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值