本文實例講述了Android編程實現popupwindow定時消失的方法。分享給大家供大家參考,具體如下:
因為是在其他界面彈出的popupwindow,要在橫屏切換回豎屏的時候,讓popupwindow自動消失,因為彈出popupwindow是普通的類,沒有監聽橫豎屏的函數,所以想到了使用定時器,定時3秒之后如果用戶沒有操作就讓popupwindow消失,代碼如下:
// 創建彈出窗口 popupMenu = new PopupWindow(view, sourceView.getWidth() * 2, LayoutParams.WRAP_CONTENT + 200); ColorDrawable cd = new ColorDrawable(R.color.white); popupMenu.setBackgroundDrawable(cd); popupMenu.update(); popupMenu.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED); popupMenu.setTouchable(true); // 設置popupwindow可點擊 popupMenu.setOutsideTouchable(true); // 設置popupwindow外部可點擊 popupMenu.setFocusable(true); // 獲取焦點 ColorDrawable dw = new ColorDrawable(0x00); popupMenu.setBackgroundDrawable(dw); popupMenu.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { popupMenu.dismiss(); return true; } timer.start(); return false; } });}CountDownTimer timer = new CountDownTimer(3000, 10) { @Override public void onTick(long millisUntilFinished) { } @Override public void onFinish() { popupMenu.dismiss(); }};@Overridepublic PopupWindow createPupupWindow() { return popupMenu;}@Overridepublic void showPopupMenu() { if (popupMenu != null && popupMenu.isShowing()) { popupMenu.dismiss(); } else { popupMenu.showAsDropDown(sourceView, -sourceView.getWidth() / 2, 0); timer.start(); }}關鍵點是使用CountDownTimer類,來進行定時,已經全部封裝好了,不要去考慮子線程無法去改變UI界面的問題,還是非常好用的。
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答