计算mView在view周围的位置

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

    /*** 计算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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/399318.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序6 - 页面之间传参及通知系统封装

1. 简单传参 wx.navigateTo({url: /pages/demo/index/index?id1})/pages/demo/index/index.js 中onLoad(options){var id options.id; //获取通过url参数传递来的参数}2. 复杂传参var json JSON.stringify({a:1});wx.navigateTo({url: /pages/demo/index/index?json json})…

aardio教程_官方AARDIO课程已经开课了!学习的速来报道!

aardio视频培训课程(2018新版)因为课程都是制作视频 - 所以上课时间不受限制。1、本次课程共计50节视频课程,每周一课,培训时间为一年(1月15日以后报名按报名交费时间开始计算)。2、所有参加本次培训课程 ,可同时获取为期2年的技术支持服务(1…

php 开源建站工具 -- 资料收集

迅睿 CMS 开源建站程序 XunRuiCMShttps://www.xunruicms.com/

神马是代码简单的cmd模式,这就是!

小狼正在研究 “怎么查找连在一起的同色方块?”算法问题 ,突然感觉我是不是需要一种开发模式,不然感觉自己的代码好乱的。 可能是研究算法吧,导致小狼的思路特别清晰,加上也用了差不多1年的nodejs、seajs,对…

找出数组中两个只出现了一次的数

原题:给一组数,只有两个数只出现了一次,其他所有数都是成对出现的。怎么找出这两个数。编写函数实现。 对于一组数中只有一个数只出现一次,其他所有数都是成对出现的,我们采用了对全部数组元素进行异或,经过…

aspx隐藏前台控件div_c# – 代码隐藏页面无法“查看”aspx页面中声明的任何项目/控件...

这是我的Default.aspx页面(删除了不必要的细节):UsernamePassword这是代码隐藏(删除了不必要的细节):namespace webapp{public partial class _Default : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){(webapp.MasterPages…

前端javascript知识(二)

documen.write和 innerHTML的区别 document.write只能重绘整个页面 innerHTML可以重绘页面的一部分 浏览器检测通过什么? (1) navigator.userAgent (2) 不同浏览器的特性,如addEventListener JavaScript有哪…

前端工具收集

1. Vue.js 介绍 | Vue.js Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项…

HDU 1754 I Hate It

线段树,单点更新,求区间最值 /* *********************************************** Author :Zhou Zhentao Email :774388357qq.com Created Time :2015/11/20 17:21:35 File Name :acm.cpp ***************************************…

请问运行py文件的时候怎么样可以不让那个黑框一闪...

wait input("wait")转载于:https://www.cnblogs.com/ftm-datablogs/p/7857831.html

c++模板类静态成员变量_一文讲透父子类中静态变量,成员变量初始化顺序原理...

推荐:从面试到入职到离职,我在B站工作的30天时光 爱了爱了,Alibaba顶级MySQL调优手册到手,加薪妥了 爱了爱了,Spring Cloud Alibaba内部微服务架构笔记真的太牛了 本文主要是想分析一下静态变量和成员变量的初始化顺序…

点击放大图片

<style> body{ text-align:center} div{ margin:50px auto}</style><script type"text/javascript"> function clik(t){ //获取所有的img标签 var imgs document.getElementsByTagName("img"); …

Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(八)

大熊猫猪侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 回到Xcode中,新建一个EndLayer类,继承于CCNode.因为我们得在其类方法中创建实例变量,所以我们得建立几个实例变量的属性.打开EndLayer.h文件,修改内…

转:(图文并茂)SQL Server 2005详细安装过程及配置

1、安装过程 注&#xff1a;在Windows7系统下安装SQL Server 2005时&#xff0c;可能会多次遇到提示兼容性问题的情况&#xff0c;此时不用理会&#xff0c;直接点击“运行程序”即可。首先解压下载到的SQL Server 2005压缩文件&#xff0c;如果还没有这个文件&#xff0c;可以…

设计模式范例代码

/* 1. 简单工厂模式 */ public class Operation {private double _numberA 0;private double _numberB 0;public double NumberA { get { return this._numberA; } set { this._numberA value; } }public double NumberB { get { return this._numberB; } set { this._numbe…

Node.js -- Router模块中有一个param方法

这段时间一直有在看Express框架的API&#xff0c;最近刚看到Router&#xff0c;以下是我认为需要注意的地方&#xff1a; Router模块中有一个param方法&#xff0c;刚开始看得有点模糊&#xff0c;官网大概是这么描述的&#xff1a; 1Map logic to route parameters.大概意思就…

如何测试数据库表空间不足场景

1、select * from DBA_DATA_FILES; 这个命令主要是了解数据库实例中各个模块数据库表空间的大小&#xff0c;是否支持自动扩展&#xff08;AUTOEXTENSIBLE&#xff09;,MAX扩展&#xff08;MAXBYTES&#xff09;,以及各个表空间的路径(\oracle\oradata\i2kdb\omscm.dbf) 查看AU…

2019年java安装步骤_win10的JAVA(jdk)2020年最新版安装教程心得

想学安卓反向解析&#xff0c;前期工作就把我折腾得够呛&#xff0c;java安装教程大多18年之前的&#xff0c;和现在的有一些不同&#xff0c;导致我按照网上的教程折腾了好几天都没安装成功&#xff0c;今天突然成功了&#xff0c;有点开心&#xff0c;迫不及待把自己的一些小…

蛋白质结构域的概念_Chapter1 蛋白质结构与功能2

本次回顾两大点&#xff1a;一、肽二、蛋白质结构————一、肽&#xff1a;概念&#xff1a;肽是由氨基酸通过肽键连接形成的线性分子。如上&#xff0c;该教学图涉及知识&#xff1a;1.肽键生成(最好能将反应式写出来)2.氨基酸残基residue3.肽的方向性N —> C4.肽命名5.肽…

css中的em 简单教程 -- 转

先附上原作的地址: https://www.w3cplus.com/css/px-to-em 习惯性的复制一遍~~~~ -------------------------------我是分界线----------------------------------- 什么是弹性布局&#xff1f; 用户的文字大小与弹性布局 用户的浏览器默认渲染的文字大小是“16px”&#xff0c…