PopupWindow 常用方法记录

2020-12-13 02:50

阅读:536

标签:android   style   class   blog   code   java   

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 

 

soscw.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>
soscw.com,搜素材

 

PopupWindow消失时的动画,popup_exit.xml 

soscw.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>
soscw.com,搜素材

再设定动画的style

style name="PopupAnimation" parent="android:Animation">
    item name="android:windowEnterAnimation">@anim/popup_enteritem>
    item name="android:windowExitAnimation">@anim/popup_exititem>
style>

 

最后通过Java代码设置动画 

popupWindow.setAnimationStyle(R.style.PopupAnimation);  

 

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

menu_bottombar_in.xml

soscw.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>
soscw.com,搜素材

 

menu_bottombar_out.xml

soscw.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>
soscw.com,搜素材

 

定义样式

style name="anim_menu_bottombar">
    item name="android:windowEnterAnimation">@anim/menu_bottombar_initem>
    item name="android:windowExitAnimation">@anim/menu_bottombar_outitem>
style>

 

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

PopupWindow 常用方法记录,搜素材,soscw.com

PopupWindow 常用方法记录

标签:android   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/daxin/p/3784749.html


评论


亲,登录后才可以留言!