小米手机无法使用WindowManager的addView,怎么解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小米手机无法使用WindowManager的addView,怎么解决相关的知识,希望对你有一定的参考价值。

参考技术A WindowManager用来在应用与window之间的管理接口,管理窗口顺序,消息等。对于windowManager来说一个系统只有一个,它是由系统底层实现的,用于负责调度当前显示那个窗口,消息处理我们获得一个windowManager的方式如下:
WindowManager windowManager = (WindowManager)context().getSystemService(Context.WINDOW_SERVICE);11

调用比较简单。
3.代码实现
把这个弹窗叫做PopupAction,后面统一为这个称呼。
显示PopupAction代码
/**
* Show quick menu popup. Popup is automatically positioned, on top of anchor view. Calc of anchor and mRootView
* view for look out the poosition. Every side margin of 10dp and the arrow at the top of anchor.
*
* @param context the global information about an applicaion environment
* @param anchor view of call for
* @param actions action list items @link #addActionItem(List)
*/
public void show(Context context, View anchor, List<ActionItem> actions)
mContext = context;
if (mContext == null)
Log.i("MenuDialog", "context is null");
return;

int xPos;
int yPos;
int arrowPos;
int[] location = new int[2];

//添加菜单项
addActionItem(actions);

mShowAction = true;
//计算要弹出的位置
anchor.getLocationOnScreen(location);
Rect anchorRect =
new Rect(location[0], location[1], location[0] + anchor.getWidth(), location[1] + anchor.getHeight());

int rootHeight = mRootView.getMeasuredHeight();
int rootWidth = mRootView.getMeasuredWidth();

xPos = anchorRect.centerX() - (rootWidth / 2);

//对弹窗靠近左边和右边的处理
if (xPos < 20)
xPos = 20;

DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
if ((dm.widthPixels - anchorRect.centerX()) < rootWidth / 2)
xPos = dm.widthPixels - rootWidth - 20;

arrowPos = anchorRect.centerX() - xPos;
yPos = anchorRect.top - rootHeight;

//设置箭头位置
showArrow((R.id.arrow_down), arrowPos);

//添加图层弹窗
android.view.WindowManager.LayoutParams params =
(android.view.WindowManager.LayoutParams) mRootView.getLayoutParams();

params.x = xPos;
params.y = yPos;
mWM.addView(mParentView, params);
mParentView.addView(mRootView);
mParentView.setOnTouchListener(this);

//设置弹出动画
Animation animationUp = AnimationUtils.loadAnimation(mContext, R.anim.grow_from_bottom);
mRootView.startAnimation(animationUp);

解决苹果手机绑定小米手环4支付宝,蓝牙无法连接问题。

小米手环绑定苹果手机支付宝,有时可能会遇到蓝牙连接不成功的问题,如下图所示:

 

 当你重启手机,或者重新绑定手环之后,还无法解决问题,还是在重复套娃操作,可以检查一下支付宝是否打开了蓝牙权限:设置==》支付宝==》蓝牙开启  即可。

 

以上是关于小米手机无法使用WindowManager的addView,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章

小米手机网络无法连接服务器怎么办

小米手机 - Charles无法安装证书 因为无法读取证书

小米手环可以支持苹果手机吗

Win10系统无法使用小米手机的远程管理功能

解决手机无法连接小米AI音箱播放音乐问题

android.view.WindowManager$BadTokenException: Unable to add window