小米手机无法使用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,怎么解决的主要内容,如果未能解决你的问题,请参考以下文章
android.view.WindowManager$BadTokenException: Unable to add window