• PopupWindow 常用方法学习笔记


    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 

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

    PopupWindow消失时的动画,popup_exit.xml 

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

    再设定动画的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

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

    menu_bottombar_out.xml

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

    定义样式

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

  • 相关阅读:
    数据结构与算法基础 模块七
    操作系统
    数据结构与算法基础 模块六
    数据库技术
    数据库技术
    数据库 SQL语句
    数据结构与算法基础 模块五
    同源策略和解决
    初识单例模式
    Django—内置用户权限管理
  • 原文地址:https://www.cnblogs.com/daxin/p/3784749.html
Copyright © 2020-2023  润新知