日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算mView在view周围的位置

發(fā)布時間:2023/11/29 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。