在开发中我们经常遇到PopupWindow从底部弹出的情况,比如从底部向上弹出分享按钮、菜单等等,下面先上效果图:


一、首先简单介绍一下PopupWindow的使用:

1、首先看一下 构造函数(一共5个):

public PopupWindow()

public PopupWindow(View contentView)

public PopupWindow(int width, int height)

public PopupWindow(View contentView, int width, int height)

public PopupWindow(View contentView, int width, int height, boolean focusable)

本人比较习惯用三个参数或四个参数的构造,ps:用其他的也可以(可以用 对象.setXXX方法进行设置),如:


1 PopupWindowm

PopupWindow  = new PopupWindow(contentView, width, height, focusable);


1 PopupWindow mPopupWindow = newPopupWindow();

2 mPopupWindow.setContentView(contentView);

mPopupWindow.setWidth(width);

mPopupWindow.setHeight(height);

mPopupWindow.setFocusable(focusable);

上面的1行代码 下面的5行代码 产生的效果相同的 ,我们分别说一下4个参数的含义

/**

     * @param contentView the popup's    //contentPopupWindow的布局文件 

     * @param width the popup's width    //PopupWindow的宽

     * @param height the popup's height    //PopupWindow的高

    * @param focusable true if the popup canbe focused, false otherwise    //PopupWindow是否获取焦点(具体表现为其中EditText是否可以编辑)

     */

好了现在PopupWindow的准备工作完成了,下一步就是让我们的PopupWindow显示出来了

PopupWindow 显示的方法有两种:showAsDropDown(显示在相对于某个控件的位置)和showAtLocation(显示在相对于整个屏幕的位置):

mPopupWindow.showAsDropDown(Button对象);

 

mPopupWindow.showAtLocation(findViewById(R.id.linear_parent),Gravity.BOTTOM,0,0); //其中linear_parent是activity最外层LinearLayout的id


二、PopupWindow效果篇

我们的PopupWindow已经可以显示出来了,怎样可以实现点击空白处让我们的PopupWindow消失呢?只需要加上下面这行代码就可以了(具体原理博主也不知道,请各位明白的看官不吝赐教):

mPopupWindow.setBackgroundDrawable(newBitmapDrawable(getResources(), (Bitmap) null));


可是到了这里,我们的PopupWindow弹出时的效果跟我们常见的还是不太一样啊,不用担心,让我们来看一下,原来PopupWindow可以设置动画样式,我们只需要自己定义一下我们需要的动画就可以了,下面是代码:

具体应该是这样:

mPopupWindow.setAnimationStyle(R.style.anim_bottom_pop);

首先我们要在res目录下建一个anim目录(存放我们需要的动画效果)

然后新建两个xml文件 分别为:

bottom_pop_in.xml

<?xm version="1.0" encoding="utf-8"?>

   

         android:duration="250"

         android:fromYDelta="100.0%"

         android:toYDelta="0.0" />


bottom_pop_out.xml

<?xml version="1.0" encoding="utf-8"?>

   

        android:duration="250"

        android:fromYDelta="100.0%"

        android:toYDelta="0.0" />


然后我们还需要在res/values/styles中定义一个style

    

好了大功告成了,现在我们在调用showAsDropDown 和 showAtLocation 时,我们的PopupWindow就会自动加载动画效果了。


PS:本人是一枚小菜,错误之处欢迎各位大虾斧正


Demo地址:https://github.com/zhiweiSunday/PopupWindowDemo





更多相关文章

  1. Android--SQLite数据库应用技巧分享
  2. android之两种设置全屏或者无标题的方法
  3. Android培训班(68)dex文件打开流程
  4. android 学习资源整理(二)
  5. android studio快捷键集合
  6. Android组件----1.文本TextView详解
  7. Android(安卓)中LayoutInflater的使用!
  8. 【Android】 ImageView.ScaleType设置图解
  9. android html 与webview属性从冲突

随机推荐

  1. RecyclerView 各种相关问题解决方法
  2. android开关控件使用(一)
  3. Android Context详解
  4. Android UI 中 gravity 与 layout_gravit
  5. Android之ContentProvider源码解析
  6. EditText焦点问题
  7. android 图片画画板
  8. Android Wi-Fi EAP-SIM代码解析
  9. Android如何设置EditText不自动弹出软键
  10. Android自定义样式style.xml