`

popupwindow 显示和消失的动画

阅读更多

前段时间搞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  ! 赶快试试吧!*~*

 

分享到:
评论

相关推荐

    自定义PopupWindow动画效果

    显示动画通常是在PopupWindow显示时执行,而消失动画则在它隐藏时执行。我们可以使用`Animation`类或`Animator`类来创建这些动画。 1. 使用Animation类: 创建一个AlphaAnimation(透明度变化)或ScaleAnimation...

    popupWindow动画显示

    对于PopupWindow,我们可以使用视图动画来实现显示和消失的动画效果。 例如,我们可以为PopupWindow的显示添加一个滑动动画: ```java Animation animation = AnimationUtils.loadAnimation(context, R.anim.slide...

    popupwindow动画

    我们可以使用ObjectAnimator或ValueAnimator来控制PopupWindow的出现和消失动画。 示例代码: ```java // 创建ObjectAnimator,改变PopupWindow的透明度 ObjectAnimator fadeIn = ObjectAnimator.ofFloat...

    Android 仿Keep,探索向上滑动时PopupWindow向右退出消失,向下移动时PopupWindow向左推出出现

    6. **PopupWindow的显示与隐藏**:在滑动监听器中,根据滑动方向和动画执行显示或隐藏PopupWindow的操作。当检测到向上滑动且满足一定距离时,启动向右的退出动画并逐渐降低PopupWindow的透明度,直至完全消失;相反...

    PopupWindow封装-view上方显示和下方显示

    综上所述,对PopupWindow进行封装,实现其在view上方或下方显示,主要是通过计算和设置PopupWindow的显示位置。通过创建一个通用的PopupUtil工具类,可以方便地在不同场景下复用这段代码,同时还能进行功能扩展。

    PopupWindow中显示PickerView

    接下来,设置PopupWindow的位置,通常是在某个按钮下方显示,可以通过getAnchorView()方法获取到触发PopupWindow显示的按钮的视图,然后利用showAsDropDown()或showAtLocation()方法定位。 PickerView的创建涉及到...

    PopupWindow

    锚点则决定PopupWindow显示的位置,通常是与之相关的视图或控件。 2. **创建PopupWindow** 创建PopupWindow通常包括以下几个步骤: - 创建一个View对象,作为PopupWindow的内容视图。 - 实例化PopupWindow对象,...

    Android中的popupwindow进入和退出的动画效果

    要实现PopupWindow的动画效果,我们需要定义两个动画文件:进入动画和退出动画。下面是进入动画的XML文件: ```xml android:fromXDelta="0" android:toXDelta="0" android:fromYDelta="120" android:...

    PopupWindow动画以及监听返回键

    下面将详细探讨PopupWindow的使用及其相关的动画和返回键监听。 首先,让我们了解PopupWindow的基本使用。要创建一个PopupWindow,你需要提供一个布局资源,它的尺寸,以及是否允许触摸外部区域关闭PopupWindow。...

    PopupWindow的基本使用

    实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为半透明黑色,消失后背景灰度复原,PopupWindow还能根据自己的实际需求制定自己想要的弹出动画,以及...

    自定义popupWindow修改版

    3. **触摸事件处理**:当PopupWindow显示时,可能需要阻止背景触摸事件,以防止意外关闭。可以设置`setTouchInterceptor()`监听触摸事件,并在需要时返回true。同时,也要处理PopupWindow自身的点击事件,以便在适当...

    自定义popupWindow

    通过`setAnimationStyle()`设置动画资源,可以在PopupWindow出现和消失时添加过渡效果。在`res/anim`目录下创建相应的动画XML文件。 4. 自定义尺寸: 如果需要动态改变PopupWindow的大小,可以通过`update()`方法...

    安卓popupwindow相关-仿微信popupwindow.zip

    PopupWindow可以设置为触摸外部自动消失,也可以手动控制其显示和隐藏。 2. **创建PopupWindow**: 创建PopupWindow需要三个基本步骤:(1) 创建一个View,作为PopupWindow的内容;(2) 初始化PopupWindow对象,传入...

    封装PopupWindow(1)

    内容视图是你希望显示的内容,背景可以设置为透明或者某种颜色,锚点则是PopupWindow显示的位置参照。 封装PopupWindow的主要目的是使其易于配置和控制,同时提高代码的可读性和维护性。下面是一些封装的关键点: ...

    仿微信PopupWindow效果

    你可以通过`Animation`类来创建这些动画,并在PopupWindow显示和关闭时调用: ```java // 弹出动画 Animation animationIn = AnimationUtils.loadAnimation(context, R.anim.popup_in); // 消失动画 Animation ...

Global site tag (gtag.js) - Google Analytics