悬浮窗口WindowManager
来源:互联网 发布:mac双系统快速切换 编辑:程序博客网 时间:2024/04/30 18:26
安卓中Activity,Dialog,Toast等视图都是附在Window上的,Window是View的直接管理者
final WindowManager windowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);// "window"final WindowManager.LayoutParams windowParams = new WindowManager.LayoutParams();//若不设置gravity ,并且不设置windowParams.x和windowParams.y,则默认位于屏幕中除去通知栏以外部分的中间位置//若设置为windowParams.gravity = Gravity.RIGHT|Gravity.TOP;并且不设置windowParams.x和windowParams.y//则位于屏幕除通知栏以外的左上角//windowParams.x和windowParams.y的是偏移量//由于没有设置windowParams.gravity,所以下面的设置会看到新窗口位于中央(屏幕中除去通知栏以外部分的中央)偏右100像//素,偏上200像素处,若x或y超出了屏幕中除去通知栏以外部分,则新窗口也会位于边沿而不会一块在里面一块在外面windowParams.x=100;windowParams.y=-200;// 设置宽和高windowParams.height = WindowManager.LayoutParams.WRAP_CONTENT;windowParams.width = WindowManager.LayoutParams.WRAP_CONTENT;//当前Window区域以外的事件会交给下层Window,当前Window区域以内的事件自己处理,通常会设置这个属性,否则其他Window无法收到单击事件windowParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;windowParams.format = PixelFormat.TRANSLUCENT;windowParams.windowAnimations = 0;//透明度windowParams.alpha=0.3f;final ImageView iv=new ImageView(getApplicationContext()){float startLayoutX,startLayoutY,startTouchX,startTouchY;@Overridepublic boolean onTouchEvent(MotionEvent event) {/*windowParams.x和windowParams.y是偏移量,所以要记录一开始的触摸位置和窗口位置, * */if (event.getAction()==MotionEvent.ACTION_DOWN) {startLayoutX=windowParams.x;startLayoutY=windowParams.y;startTouchX=event.getRawX();startTouchY=event.getRawY();}float x=event.getRawX();float y=event.getRawY();//当前位置和按下的位置的差值为偏移量,把该偏移量加到按下时的偏移量上作为窗口新的位置windowParams.x= (int) (startLayoutX+(x-startTouchX)) ;windowParams.y=(int) (startLayoutY+(y-startTouchY));//更新位置windowManager.updateViewLayout(this, windowParams);return true;}};iv.setImageResource(R.drawable.ic_launcher);iv.setBackgroundColor(Color.BLUE);windowManager.addView(iv, windowParams);
不管怎么拖动都不会超出屏幕边界
0 0
- WindowManager实现悬浮窗口
- windowManager添加悬浮窗口
- 悬浮窗口WindowManager
- android WindowManager实现悬浮窗口
- 使用WindowManager实现悬浮窗口
- Android windowmanager 制作悬浮窗口
- WindowManager 和window 悬浮窗口
- WindowManager实现悬浮窗口&可自由移动的悬浮窗口
- WindowManager实现悬浮窗口&可自由移动的悬浮窗口
- WindowManager实现悬浮窗口&可自由移动的悬浮窗口
- Android之悬浮窗口实现(WindowManager)
- Android之悬浮窗口实现(WindowManager)
- Android中使用WindowManager实现悬浮窗口
- 【Android】【Framework】悬浮窗口相关(WindowManager)
- android悬浮窗口的实现 Windowmanager
- 【Android】WindowManager悬浮窗口 分析和示例
- Android的WindowManager实现悬浮窗口
- Android之悬浮窗口实现(WindowManager)
- Hibernate SQLQuery执行原生SQL
- 线程 和handle的应用
- Java Socket发送与接收HTTP消息简单实现
- leetcode_4_Two Sorted Arrays
- 天声人语
- 悬浮窗口WindowManager
- fl2440内核移植(三)——LCD移植
- 【odroid-xu3】 ODROID-XU3软件环境搭建记录
- Android 数据存储
- Android小知识9
- 代码动态设置远角
- odbccp32.lib(dllload.obj) : error LNK2019: 无法解析的外部符号 __imp___vsnprintf
- ospf添加路由
- cloudera 卸载