Android Popupwindow

popupwindow主要是用于弹出一个悬浮在页面上的提示框 可自拟定属性较多

动画,大小,位置,背景等等

在项目中styles.xml添加

    <style name="popupAnimation" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/more_open</item>
        <item name="android:windowExitAnimation">@anim/more_close</item>
    </style>

more_open 开始动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="100"
        />
</set>

more_open 结束动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="100"
        />
</set>

java 方法

    PopupWindow mPopupWindow;

    public void showpop(View v) {
        // 屏幕的width
        int mScreenWidth;
        
        // 屏幕的height
        int mScreenHeight;

        // PopupWindow的width
        int mPopupWindowWidth;

        // PopupWindow的height
        int mPopupWindowHeight;

        View popupWindow = LayoutInflater.from(v.getContext()).inflate(R.layout.dialog_more, null);

        Button shield = (Button) popupWindow.findViewById(R.id.hall_bon_shield);
        Button report = (Button) popupWindow.findViewById(R.id.hall_bon_report);
        Button collection = (Button) popupWindow.findViewById(R.id.hall_bon_collection);
        Button tvCancel = (Button) popupWindow.findViewById(R.id.hall_bon_off);
        tvCancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mPopupWindow.dismiss();

            }
        });



        mScreenWidth = ScreenUtils.getScreenWidth(v.getContext());
        mScreenHeight = ScreenUtils.getScreenHeight(v.getContext());
        mPopupWindow = new PopupWindow(popupWindow, mScreenWidth, LinearLayout.LayoutParams.WRAP_CONTENT);
        mPopupWindow.setAnimationStyle(R.style.popupAnimation);
        mPopupWindow.setOutsideTouchable(true);
        mPopupWindow.setFocusable(true);
        mPopupWindow.setBackgroundDrawable(new ColorDrawable(0));
        mPopupWindowWidth = mPopupWindow.getWidth();
        mPopupWindowHeight = mPopupWindow.getHeight();
        mPopupWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0);

    }
Table of Contents