Android 创建指定位置和大小的PopupWindow,带进入和退出动画

效果截图:



功能代码比较简单,就不描述了,直接上代码。

MainAcvitity.java中,创建PopupWindow:

    private PopupWindow popupWindow;

    private void createPopupWindow(){
        if(popupWindow == null){
            View contentView = getLayoutInflater().inflate(R.layout.dialog_content,null);
            popupWindow = new PopupWindow(contentView,mContentLayout.getMeasuredWidth()/2,
                    mContentLayout.getMeasuredHeight());
            popupWindow.setFocusable(true);
            popupWindow.setAnimationStyle(R.style.PopupWindowStyle);
            popupWindow.setBackgroundDrawable(new ColorDrawable(0xffffff00));
            popupWindow.setOutsideTouchable(false);
            popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
                @Override
                public void onDismiss() {
                    WindowManager.LayoutParams wlp = getWindow().getAttributes();
                    wlp.alpha = 1.0f;
                    getWindow().setAttributes(wlp);
                }
            });
        }

    }

显示PopupWindow

       mTextView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                createPopupWindow();
                if(!popupWindow.isShowing()){
                    popupWindow.showAsDropDown(mTitleLayout,mContentLayout.getMeasuredWidth()/2,0);
                    WindowManager.LayoutParams wlp = getWindow().getAttributes();
                    wlp.alpha = 0.7f;
                    getWindow().setAttributes(wlp);
                }else{
                    popupWindow.dismiss();
                }
            }
        });


styles文件中:

<style name="PopupWindowStyle">
    <item name="android:windowEnterAnimation">@anim/anim_left_in</item>
    <item name="android:windowExitAnimation">@anim/anim_right_out</item>
</style>


动画文件如下,anim_left_in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:interpolator/accelerate_decelerate"
    >
    <translate android:fromXDelta="100%p"
        android:toXDelta="0"
        android:duration="400"
    />

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

anim_right_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:interpolator/accelerate_decelerate"
    >
    <translate android:fromXDelta="0"
        android:toXDelta="100%p"
        android:duration="400"
    />

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值