zoukankan      html  css  js  c++  java
  • 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);

  • 相关阅读:
    .NET Framework 3.0 和 Windows SDK
    用 C# 开发 SQL Server 2005 的自定义聚合函数
    IronPython 源码剖析系列(2):IronPython 引擎的运作流程
    IronPython 个人网站样例宝藏挖掘
    SetRenderMethodDelegate 方法
    使用 Castle ActiveRecord 开发发现的一些问题
    IronPython for ASP.NET CTP WhitePaper 摘要翻译
    关于 IE 模态对话框的两个问题
    逐步改用 IronPython 开发你的 ASP.NET 应用程序
    使用 Flash 和 C# WinForm 配合打造界面漂亮的应用程序(摘要)
  • 原文地址:https://www.cnblogs.com/daxin/p/3784749.html
Copyright © 2011-2022 走看看