因为是在其他界面弹出的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() {@Overridepublic 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) {@Overridepublic void onTick(long millisUntilFinished) {}@Overridepublic 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界面的问题,还是非常好用的。

更多相关文章

  1. 【Android】悬浮按钮(FloatingActionButton)
  2. Android(安卓)系统api实现定位及使用百度提供的api来实现定位
  3. Android中文API——DatePicker&TimePicker
  4. (转)EditText 焦点控制,进入界面时不弹出键盘
  5. Android(安卓)欢迎界面及首次安装导航界面实例
  6. 【ArcGIS for Android】使用自定义Callout显示地图信息
  7. Android侧滑菜单之DrawerLayout用法详解
  8. Android的Button属性使用
  9. Android测试之Monkey原理及源码分析(一)

随机推荐

  1. Android之反编译APK文件,查看源代码
  2. android 短新单发
  3. android 使用MD5加密文件
  4. Android 实现定时任务之二 - Handler 结
  5. react-native调用Android原生组件
  6. Android 同步锁为什么锁不住问题
  7. Android客户端连接PC服务器端(Socket连接
  8. 内存管理之SLUB
  9. android实现uc和墨迹天气那样的左右拖动
  10. 36个Android开发常用代码片段