为什么80%的码农都做不了架构师?>>>   

    /*** 计算mView在view周围的位置** @param view** @param mMargin mView与view或边界的间距*    *     titleBarHeight 标题栏的高度*   mContext当前的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){//如果两种方法都获取不到长宽,则默认给一个值,下次用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;}// 根据计算,设置坐标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 (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

转载于:https://my.oschina.net/reone/blog/533426

计算mView在view周围的位置相关推荐

  1. ios view添加上边框_iOS开发之如何给View添加指定位置的边框线详解

    本文主要给大家介绍了关于iOS如何给View添加指定位置边框线的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 略微封装了一下,给View添加指定位置的边框线,其中位移枚举 ...

  2. ios 绘制线框_iOS开发 给View添加指定位置的边框线

    略微封装了一下,给View添加指定位置的边框线,其中位移枚举的使用询问了哥们儿,总算搞定: 封装一:直接封装成了一个方法 /// 边框类型(位移枚举) typedef NS_ENUM(NSIntege ...

  3. Android编程之如何取得View的当前位置

    初始化View后,我们可能需要得到某个View的具体位置,你可以使用下面这个方式获得: view.getViewTreeObserver().addOnGlobalLayoutListener(new ...

  4. 【笔记】Yolo_v3 损失:正例,计算bbox与GT之间的位置和大小差异(MSE),计算80个类别维度与target的one-hot向量间的交叉熵损失;正例和负例,加权求和置信度与GT之间的交叉熵

    根据pytorch的代码,Yolov3的损失函数主要包括3个部分: (1)对于正例,计算bbox与GT之间的位置和大小差异,采用MSE损失函数: (2)对于正例,计算80个类别维度与target的on ...

  5. 辐射角系数计算(the view factor)

    图1为两个等温表面间的两种极端布置情况:(a)中两表面无限接近,相互间的换热量最大:(b)中两表面位于同一平面上,相互间的辐射传热量为零.由图可以看出,两个表面间的相对位置不同时,一个表面发出而落到另 ...

  6. Android开发之自定义view绘制坐标位置出错的问题解决

    老套路先看效果图 解释下:如上图我自定义view的时候再onDraw方法进行绘制文本的时候想要的效果是让文字居中,计算都是正确的,相应的坐标也打印出来手动计算检查了下都是对的,但是就是有问题,问题就是 ...

  7. 计算机重镜像网络文件夹位置,利用备份的Win10映像系统文件还原win10的教程

    利用备份的win10映像系统文件还原win10的教程.在前面的教程中,我们讲解了<win10系统镜像怎么备份>,相信很多的小伙伴们都会了.刚好现在有网友就遇到了win10系统故障需要还原的 ...

  8. 计算机能算出用户的位置吗,计算机应用基础模拟试卷9

    一.1.单项选择题 单项选择题 每小题1分.在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将"答题卡"的相应代码涂黑.未涂.错涂或多涂均无分. 0.在进位计数中, ...

  9. 卫星位置计算的c语言,gps卫星位置的计算

    c语言的,还好啦,一般般的 #include #include #include #include #include #definebPI #definebGM84 #definebOMEGAE843 ...

最新文章

  1. 怎么判断时double和floatc++_安居客堂:您知道怎么选择优质的轻钢龙骨吗?
  2. 在MFC中创建动态控件的生成与响应
  3. c++运算符和结合性
  4. 神仙在双11晚上,都干了些啥?
  5. git tag怎么使用_GIT中tag使用,打版本必备
  6. 二叉树的各种操作(转)
  7. Object.definePropety
  8. 关于头文件,全局变量,extern,static
  9. 几种常用的键盘钩子技术
  10. coreldraw x5 选择工具快捷键_coreldraw x5快捷键大全 coreldraw快捷键分享
  11. 最新版QQ机器人搭建保姆教程,保熟【最新beta2版本】
  12. PDFJS集成批注功能
  13. 【如何20秒内进入XP系统】
  14. hadoop3访问hdfs web控制页面遇到的各种问题总结
  15. 视频打赏/付费视频引流吸粉/定时弹窗广告+自带视频+支付接口+自适应设计/带安装教程
  16. cf四大服务器位置,CF:从最初的42个服务器到现在的四大战区,穿越火线还能火多久?...
  17. 【PP-1】定义生产计划参数文件
  18. 云米科技的变与不变:毛利率连降3年,核心高管仅剩陈小平一人
  19. net开发android教程,Xamarin 开发Android应用简易教程(1)
  20. 《写给大家看的设计书》粗读整理

热门文章

  1. cmd运行php文件以及环境配置出现的问题、 php.exe不是内部或外部命令,也不是可运行的程序 或批处理文件、PHP startup: Unable to load dynamic library
  2. windows内核情景分析---进程线程2
  3. 540. 有序数组中的单一元素 golang
  4. 海量数据处理--位图(BitMap)
  5. linux 消息队列机制
  6. 移植wpa_supplicant 2.2问题
  7. [C/C++]关于C++11中的std::move和std::forward
  8. 多路IO转接服务器 epoll
  9. 【计算机网络实验·北航】实验一:网络实验入门(1)
  10. /proc 虚拟文件系统(实例)