周辺エリアをクリックしてpopupwindowを消す

3088 ワード

popupwindow、ダイアログ式のactivity、dialogはすべてダイアログの効果を実現することができます;どちらも登場時のアニメーション効果を実現することができます.
popupwindow以外の領域をクリックして消すには、新しいpopupwindowを作成した後、プロパティを設定する必要があります.
pop = new PopupWindow(460, 600);

        //          

    pop.setContentView(contentView);
    pop.setAnimationStyle(R.anim.fade_in);
pop.setFocusable(true); pop.setBackgroundDrawable(res.getDrawable(R.drawable.setting_bg)); pop.setTouchInterceptor(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { if (pop != null && pop.isShowing()) { pop.dismiss(); } return true; } return false; } });

上の3つの操作でフォーカスを設定し、背景を設定し、リスニングイベントを設定することは、効果を達成するために不可欠です.
他のどの領域をクリックしても消えるのではなく、1回の戻りキーを押したときにpopwindowが消え、もう一度クリックしたときにアプリケーションが発売されると、戻りキーのリスニングイベントをリスニングできます.
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (event.KEYCODE_BACK == keyCode) {

            if (pop.isShowing()) {

                pop.dismiss();

            } else {

                ActivityExit.exit(SetupActivity.this);

            }

        }

        return true;



    }

しかし、このようにして問題が発見され、他のactivityに切り替えるとpopupwindowは依然として他のactivityにぶら下がって消えないことが発見され、この問題を解決するには、現在のactivityのonpauseイベントを傍受することができ、ここで判断する
if(pop!=null&&pop.isShowing()){

        pop.dismiss();

    }