popuWindow相关知识

今天做了个pupoWindow出现了很多问题。popuwindow 是线程阻塞的堆话框!默认弹出popuwindow后点击周围是没办法让popuwindow消失的,但是可以在 Activity里重写onTouchEnent解决:

@Override  
public boolean onTouchEvent(MotionEvent event) {    
if (popup != null && popup.isShowing()) {   
  popup.dismiss();   
  popup= null;  
  }   
 return super.onTouchEvent(event);  
}  



1创建popuwindow有一堆构造方法。

2.显示方法两种形式:

 showAtLocation()显示在指定位置,有两个方法重载:

/*第一个参数是父容器,第二个参数是在父容器相对位置,第三个参数是X轴偏移量(正数往右,负数往左),第四个参数是Y轴偏移量(正数往下,负数往上)  安卓手机的坐标系也苹果一样都是以屏幕左上点位原点!*/
public void showAtLocation(View parent, int gravity, int x, int y)
public void showAtLocation(IBinder token, int gravity, int x, int y)

 


  showAsDropDown()显示在一个参照物View的周围,有三个方法重载:

public void showAsDropDown(View anchor)
public void showAsDropDown(View anchor, int xoff, int yoff)
public void showAsDropDown(View anchor, int xoff, int yoff, int gravity)

在给popuwindow设置动画时,一定要现设动画后显示popuwindow否则动可能不出。先调用了 showAsDropDown()方法,再设置其他属性,导致了这种情况.!

showAsDropDown这个方法相当于 Dialog.show()方法,  如果是先show了, 然后其他属性即使是设置了,也起不到应有的作用. 

eg:

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

<!-- 显示动画-->

<?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;

  <!-- 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 动画;

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);     //居中来显示






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值