PopupWindow 常用方法记录

时间:2014-06-13 15:49:36   收藏:0   阅读:356

PopupWindow可以实现浮层效果,而且可以自定义显示位置,出现和退出时的动画。

首先解析一个View

 

LayoutInflater inflater = getLayoutInflater();
final View view = inflater.inflate(R.layout.popup, null);

 

创建PopupWindow 构造参数 PopupWindow(View contentView, int width, int height, boolean focusable)。

contentView为要显示的view,width和height为宽和高,值为像素值,也可以是MATCHT_PARENT和WRAP_CONTENT。

focusable为是否可以获得焦点,这是一个很重要的参数。

 

这里需要为popupWindow设置一个背景,点击其他区域才能让PopupWindow消失

PopupWindow popupWindow = new PopupWindow(view, 400, 400, true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());

 

显示PopupWindow

showAsDropDown(View anchor)://相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff)://相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y)://相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

 

为PopupWindow指定动画 

PopupWindow出现时的动画,popup_enter.xml 

 

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <scale android:fromXScale="1.0" android:toXScale="1.0"  
        android:fromYScale="0" android:toYScale="1.0" 
        android:pivotX="50%" android:pivotY="0%"
        android:duration="100" />  
</set>
bubuko.com,布布扣

 

PopupWindow消失时的动画,popup_exit.xml 

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8"?>  
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <scale  
        android:fromXScale="1.0" android:toXScale="1.0"  
        android:fromYScale="1.0" android:toYScale="0"  
        android:pivotX="50%" android:pivotY="0%"  
        android:duration="50" />  
</set>
bubuko.com,布布扣

再设定动画的style

<style name="PopupAnimation" parent="android:Animation">
    <item name="android:windowEnterAnimation">@anim/popup_enter</item>
    <item name="android:windowExitAnimation">@anim/popup_exit</item>
</style>

 

最后通过Java代码设置动画 

popupWindow.setAnimationStyle(R.style.PopupAnimation);  

 

另外在记录一个从屏幕底部弹出的动画

menu_bottombar_in.xml

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="250"
        android:fromYDelta="100.0%"
        android:toYDelta="0.0" />
</set>
bubuko.com,布布扣

 

menu_bottombar_out.xml

bubuko.com,布布扣
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <translate
        android:duration="250"
        android:fromYDelta="0.0"
        android:toYDelta="100%" />
</set>
bubuko.com,布布扣

 

定义样式

<style name="anim_menu_bottombar">
    <item name="android:windowEnterAnimation">@anim/menu_bottombar_in</item>
    <item name="android:windowExitAnimation">@anim/menu_bottombar_out</item>
</style>

 

最后显示showAtLocation(findViewById(R.id.layout_main), Gravity.BOTTOM, 0, 0);

PopupWindow 常用方法记录,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!