时间:2015-02-13 来源:

Android不能乱用的View.getHeight()(尤其是UI线程里)【编程语言】

原因:

这是一个很有趣的BUG View.getHeight(),得到的高度居然和我们想的不一样,承接网站前端这个是从XListView的一个BUG说起,html切图报价刚开始以为是Scroller没有执行团队网页接活,经过一个小时的调试,团队网页接活发现原因是在这里,手机网页制作View.getHeight(),返回的高度和真实的高度不一样.

解决方案:

原来的代码
public int getVisiableHeight() {
		return mContainer.getHeight();
	}
FIXED后的代码:

public int getVisiableHeight() {
		return mContainer.getLayoutParams().height;
	}

为什么呢?
让我们看下日志
02-12 18:15:49.774: E/Windows(5761): mContainer.getHeight():157
02-12 18:15:49.774: E/Windows(5761): mContainer.getLayoutParams().height:284
02-12 18:15:49.774: E/Windows(5761): mContainer.getHeight():157
02-12 18:15:49.774: E/Windows(5761): mContainer.getLayoutParams().height:284
02-12 18:15:49.774: E/Windows(5761): mContainer.getHeight():157
02-12 18:15:49.774: E/Windows(5761): mContainer.getLayoutParams().height:284
02-12 18:15:49.884: E/Windows(5761): mContainer.getHeight():247
02-12 18:15:49.884: E/Windows(5761): mContainer.getLayoutParams().height:240

可以看出,网页切图制作两个差距很大div+css+js切图,为什么呢?
主要是因为这个是因为计算的问题.mContainer.getLayoutParams().height 是自己相对于父控件设置的固定值.而mContainer.getHeight()源码是这样写的
  public final int getHeight() {
        return mBottom - mTop;
    }
底部减去顶部,网页重构报价确实可以计算出来承接网站前端,但是这个过程不可靠,承接网站前端原因就在于多线程问题了psd切图html,当我们处理onTouchEvent的时候UI线程还没有刷新,psd切图htmlUI线程和onTouchEvent是同一个线程web外包,不信自己阻塞下试试就知道了,div切图排版这时候我们得到的View.getHeight()肯定是个错误的数据网页切图制作,所以当View刷新完毕的时候肯定是这个数值.



点击次数:1349
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日微软发布WindowsAzure应用整合服务预览版 ,,2016年06月23日Firefox9.0正式候选版发布下载 ,,2016年06月23日effectivec++笔记(3) 【编程语言】2015年03月30日如何学习(Java)【移动开发】2014年11月27日GB2312、GBK、Unicode和UTF-8编码介绍【综合】2014年12月04日推荐技术站点 【架构设计】2014年12月16日Excel表格的快捷键2014年01月28日tomcat启动批处理——setclasspath.bat 【架构设计】2014年11月04日【R语言绘图】plot函数的使用 【系统运维】2015年06月11日2015-02-02 【综合】2015年02月03日状态栏的字符先杂乱出现再排列组合2014年01月28日SQL更新时间字段的年份【移动开发】2015年08月16日ZOJ3600TaxiFare(数学啊) 【编程语言】2015年04月24日调试工具GDB7.5发布,支持Go语言 ,,2016年07月24日iOS用户交互-设计原则【移动开发】2015年04月02日BinaryTreeRightSideView 【移动开发】2015年04月07日hibernate4实战1—入门【系统运维】2014年12月10日LiteralControlASP.NET中的另类控件2014年01月29日中软数据为您提供免费铁通电信网通超级主机2014年01月29日堆排序2015年04月01日BigDecimal类 【综合】2014年12月04日【HDOJ1068】GirlsandBoys 【移动开发】2015年07月31日云计算设计模式(十五)——管道和过滤器模式【移动开发】2014年11月07日hdu3564AnotherLIS 【移动开发】2015年05月29日腾讯发布Web版“海纳”应用搜索,通过自然语言搜索App ,,2016年06月23日jsie非ie浏览器的几种判断方法小结2014年01月29日设计模式之建造模式 【Web前端】2015年04月13日Android谷歌开源通信框架VOLLEY(二)——StringJson处理 【移动开发】2015年08月07日Web设计趋势分析2014年01月28日lowleveldescriptorsandhighleveldescriptors 【架构设计】2014年12月01日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)