本文主要是介绍Android爬坑-悬浮窗显示位置问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
需求是实现一个悬浮窗,这里使用了WindowManager
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);mLayoutParams = new WindowManager.LayoutParams();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//不需要manifest声明悬浮窗权限,但是2.3上无法接收点击事件mLayoutParams.type = LayoutParams.TYPE_TOAST;} else {mLayoutParams.type = LayoutParams.TYPE_TOAST;}//设置图片格式,效果为背景透明mLayoutParams.format = PixelFormat.RGBA_8888;//设置浮动窗口不可聚焦(实现操作除浮动窗口外的其他可见窗口的操作)mLayoutParams.flags = LayoutParams.FLAG_NOT_FOCUSABLE;DisplayMetrics metric = new DisplayMetrics();mLayoutParams.width= LayoutParams.MATCH_PARENT;mLayoutParams.height = LayoutParams.MATCH_PARENT;mLayoutParams.gravity = Gravity.CENTER;mLayoutParams.y = DisplayUtil.dip2px(mContext,8);if (null == mFloatWindowView) {mFloatWindowView = new FlowWindowView(mContext, this, flowWindowConfig);}FlowWindowLogHelper.logFlowWindowShow(mContext);
问题:发现悬浮窗是出来了,但是不管怎么设置Gravity,一直显示在屏幕的最上方,x,y坐标也不生效,折腾了老旧。
问题在于,所显示的view的高度不能使用match_parent,会导致view的高度为整个屏幕,自然也就靠顶部显示,x,y也控制不了view的位置了,所以将param的高度设置为Wrap_content即可!
这篇关于Android爬坑-悬浮窗显示位置问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!