周辺エリアをクリックしてpopupwindowを消す
3088 ワード
popupwindow、ダイアログ式のactivity、dialogはすべてダイアログの効果を実現することができます;どちらも登場時のアニメーション効果を実現することができます.
popupwindow以外の領域をクリックして消すには、新しいpopupwindowを作成した後、プロパティを設定する必要があります.
上の3つの操作でフォーカスを設定し、背景を設定し、リスニングイベントを設定することは、効果を達成するために不可欠です.
他のどの領域をクリックしても消えるのではなく、1回の戻りキーを押したときにpopwindowが消え、もう一度クリックしたときにアプリケーションが発売されると、戻りキーのリスニングイベントをリスニングできます.
しかし、このようにして問題が発見され、他のactivityに切り替えるとpopupwindowは依然として他のactivityにぶら下がって消えないことが発見され、この問題を解決するには、現在のactivityのonpauseイベントを傍受することができ、ここで判断する
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();
}