一个应用中不缺乏给出用户提示的对话框或者选择框,Dialog 和PopupWindow是个不错的选择。
有时需要给提示框一个进入动画和退出动画,研究了下Dialog 网上很多说使用Dialog.getWindow()。后使用
window.setWindowAnimations(int) 的方法可以实现动画效果,可惜我没成功!
最后使用PopupWindow代替
PopupWindow & Dialog:
popupWindow是一个阻塞式的弹出框(在我们退出这个弹出框之前,程序会一直等待),Dialog非阻塞式弹出框(后台还可以做其他事情)
PopupWindow使用步骤总结
Ⅰ 自定义PopupWindow布局文件,并获取获取其实例
Ⅱ 创建PopupWindow对象,定义相关属性
Ⅲ PopupWindow界面显示
Ⅳ 响应自定义布局的事件
1.创建进入和退出的动画
popup_enter.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="800" android:fromYDelta="-100.0%p" android:interpolator="@android:anim/bounce_interpolator" android:toYDelta="0.0" /> </set>
popup_exit.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="700" android:fromYDelta="0.0" android:toYDelta="-100%p" /> </set>
2.动画的样式
<style name="animationPopup"> <item name="android:windowEnterAnimation">@anim/popup_enter</item> <item name="android:windowExitAnimation">@anim/popup_exit</item> </style>
3.使用一个工厂模式得到 PopupWindow的实例
package com.example.slimplepopupwindow; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.PopupWindow; public class PopupWindowFactory { public static PopupWindow getInsance(Context context, int resource){ PopupWindow popupWindow = new PopupWindow(context); View contentView = LayoutInflater.from(context).inflate(resource, null); popupWindow.setWidth(LayoutParams.WRAP_CONTENT); popupWindow.setHeight(LayoutParams.WRAP_CONTENT); popupWindow.setFocusable(true); // 设置popupWindow外部是否可以触摸 popupWindow.setOutsideTouchable(true); popupWindow.setContentView(contentView); // 添加动画的样式. popupWindow.setAnimationStyle(R.style.animationPopup); return popupWindow; } }
4.设置PopupWindow显示的位置.
显示在指定View 下方左边位置.
private void showPopupWindow(View view){ int[] location = new int[2]; view.getLocationInWindow(location); if(popupWindow != null && !popupWindow.isShowing()){ popupWindow.showAtLocation(view, Gravity.LEFT | Gravity.TOP, getResources().getDimensionPixelOffset(R.dimen.d5), location[1] + view.getHeight()); } }
动画效果可以查看:
【android】动画效果研究
相关推荐
博客《 PopUpWindow使用详解(一)——基本使用》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/49272285
android中popupWindow使用案列。点击按钮,显示出菜单按钮。
Android PopupWindow使用示例,更多信息请访问http://blog.csdn.net/qingdujun/article/details/42609549
博客《PopUpWindow使用详解(二)——进阶及答疑》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/49278705
popupWindow使用的方法,以及PopupWindow样式的使用
PopupWindow 使用实例
这个demo主要介绍了,popupwindow的基本使用,实现了popupwindow和listView的结合希望可以帮助需要的同学
PopupWindow的简单使用!
主要为大家详细介绍了Android中PopupWindow使用方法,感兴趣的小伙伴们可以参考一下
PopupWindow精确计算要显示位置原理和方法;实现带箭头的上下文菜单遇到的坑;Android7.0 PopupWindow的兼容… 方案是为解决特定问题或达成特定目标而制定的一系列计划或步骤。它的作用是提供一种系统性的方法,以...
NULL 博文链接:https://hz-chenwenbiao-91.iteye.com/blog/2086352
popupwindow的简单使用,对提示框的显示位置做了详细描述,和用popupwindow做简单的下拉列表。
主要介绍了Android PopupWindow使用实例,本文直接给出代码实例,需要的朋友可以参考下
主要为大家详细介绍了Android组件popupwindow使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
popupwindow使用以及渐变背景
使用PopupWindow很简单,可以总结为三个步骤: 创建PopupWindow对象实例; 设置背景、注册事件监听器和添加动画; 显示PopupWindow。 其中,第二步是可选的(不过基本上都要进行第二步的设置)。下面是一个简单的...
使用popupWindow实现类似微信点击右上角加号弹出添加好友的列表,还有在底部弹出的popupWindow
(1)Popupwindow在显示之前一定要设置宽高,Dialog无此限制。 (2)Popupwindow默认不会响应物理键盘的back,除非显示设置了popup.setFocusable(true);而在点击back的时候,Dialog会消失。 (3)Popupwindow不会...
该项目演示了,PopupWindow的基本使用,相关PopupWindow代码有独立的Class文件,并且有大量的注释说明。实现的功能有弹出的PopupWindow上有EditText能与软键盘并存不冲突,弹出PopupWindow的时候背景自动改变灰度为...