Android中PopupWindow的使用(二)

本文深入探讨了Android中PopupWindow的高级使用技巧,包括showAtLocation方法的灵活定位、构造方法参数详解、动画效果设置及dismiss事件监听,帮助开发者更好地掌握PopupWindow的定制与优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

很久前,写过一篇关于PopupWindow使用的文章。今天,接着总结一下,PopupWindow使用方面的一些知识。

一、showAtLocation方法的使用。

使用该方法,我们可以在指定的位置显示PopupWindow,更加灵活,能满足我们的更多需求。

public void showAtLocation (View parent, 
                int gravity, 
                int x, 
                int y)

四个参数含义分别为:

parent:相对的父视图,也就是说我们的PopupWindow的显示位置是以这个视图为基准。

gravity:可以理解为用于控制其显示方式,如果我们不想使用这一项,则直接用Gravity.NO_GRAVITY即可。

x:PopupWindow在x轴方向上的偏移量。

y:PopupWindow在y轴方向上的偏移量。

 

通过控制这四个参数,我们可以将PopupWindow指定在我们想要的位置上显示。

 

二、PopupWindow(View contentView, int width, int height, boolean focusable)

PopupWindow的这个构造方法。比如,

reportSearchPopupWindow = new PopupWindow(view_report_search_popup_window, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, false);

其中最后一个参数,如果为true,那么点击屏幕的空白处,可以让PopupWindow消失;如果为false,那么点击屏幕的空白处,不可以让PopupWindow消失。

 

三、我们可以给PopupWindow设置显示和消失的动画。实现方式如下:

1、我们分别写一个PopupWindow显示和消失的动画。

popup_window_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="300">

    <alpha
        android:fromAlpha="0"
        android:toAlpha="1"/>

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

    <alpha
        android:fromAlpha="1"
        android:toAlpha="0"/>

    <scale
        android:fromXScale="1.0"
        android:toXScale="1.0"
        android:fromYScale="1.0"
        android:toYScale="0.0"
        android:pivotX="100%"
        android:pivotY="0"/>
</set>

2、我们写一个样式。

 

    <style name="PopupWindowAnimation" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/popup_window_enter</item>
        <item name="android:windowExitAnimation">@anim/popup_window_exit</item>
    </style>

3、

reportSearchPopupWindow.setAnimationStyle(R.style.PopupWindowAnimation);

至此,就搞定了。

 

四、setOnDismissListener方法的使用。

有时我们需要监听PopupWindow消失,在PopupWindow消失后,执行某些操作。这时我们就用到了setOnDismissListener

实现如下:

         reportSearchPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
                    @Override
                    public void onDismiss() {
                        iv_high_search.setImageResource(R.mipmap.down_arrow);
                    }
                });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值