计算mView在view周围的位置
生活随笔
收集整理的這篇文章主要介紹了
计算mView在view周围的位置
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
??? /*** 計算mView在view周圍的位置** @param view** @param mMargin mView與view或邊界的間距*?? ?*?? ? titleBarHeight 標(biāo)題欄的高度*?? mContext當(dāng)前的Activity*/private void aroundView(View view, float mMargin) {if (view == null) {return;}boolean showLeft;boolean showRight;boolean showUp;boolean showDown;if (titleBarHeight == 0) {Rect frame = new Rect();((Activity) mContext).getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;int contentTop = ((Activity) mContext).getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();titleBarHeight = contentTop - statusBarHeight;}int width = mView.getWidth();//如果Params獲取不到長寬,就在Dialog顯示之后獲取長寬int height = mView.getHeight();android.view.ViewGroup.LayoutParams lp = mView.getLayoutParams();if(lp!=null){ //主要以這步計算長寬為主,如果獲取不到再退而求其次width = lp.width;height = lp.height;}if(width == 0 && height == 0){//如果兩種方法都獲取不到長寬,則默認(rèn)給一個值,下次用getWidth獲得width = (int) (mWinWidth/2 - mMargin);height = (int) (mWinheight/2 - mMargin);}showLeft = showRight = showUp = showDown = false;if ((view.getX() - mMargin) >= width) {//左showLeft = true;showRight = false;}if ((mWinWidth - view.getX() - mMargin) >= width) {//右showLeft = false;showRight = true;}if ((view.getY() - mMargin) >= height) {//上showUp = true;showDown = false;}if ((mWinheight - view.getY() - mMargin) >= height) {//下showUp = false;showDown = true;}// 根據(jù)計算,設(shè)置坐標(biāo)if (showLeft) {mView.setX(view.getX() + view.getWidth() - width - mMargin);} else if (showRight) {mView.setX(view.getX() + mMargin);} else {mView.setX(mWinWidth - mMargin - width);}// 根據(jù)計算,設(shè)置坐標(biāo)if (showLeft) {mView.setX(view.getX() + view.getWidth() - width - mMargin);} else if (showRight) {mView.setX(view.getX() + mMargin);} else {mView.setX(mWinWidth - mMargin - width);//如果寬度偏大,則右對齊}if (showUp) {mView.setY(view.getY() - height + titleBarHeight - mMargin);} else if (showDown) {mView.setY((view.getY() + view.getHeight()) + titleBarHeight+ mMargin);} else {//如果高度偏大,在下面顯示mView.setY((view.getY() + view.getHeight()) + titleBarHeight+ mMargin);}}本博客原地址:http://my.oschina.net/reone/blog/533426
轉(zhuǎn)載于:https://my.oschina.net/reone/blog/533426
總結(jié)
以上是生活随笔為你收集整理的计算mView在view周围的位置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux shell multifil
- 下一篇: 找出数组中两个只出现了一次的数