文档章节

Android性能优化之View.gone

西皇小明
 西皇小明
发布于 2017/07/13 16:39
字数 369
阅读 10
收藏 0

我们经常会遇到这样的情况,运行时动态根据条件来决定显示哪个View或布局。常用的做法是把View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。

推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件。可以为ViewStub指定一个布局,在Inflate布局的时候,只有ViewStub会被初始化,然后当ViewStub被设置为可见的时候,或是调用了ViewStub.inflate()的时候,ViewStub所向的布局就会被Inflate和实例化,然后ViewStub的布局属性都会传给它所指向的布局。这样,就可以使用ViewStub来方便的在运行时,要还是不要显示某个布局。



作者:沈醉在夢
链接:http://www.jianshu.com/p/76ecd3b67515
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文转载自:http://www.jianshu.com/p/76ecd3b67515

共有 人打赏支持
西皇小明
粉丝 5
博文 40
码字总数 20601
作品 0
海淀
程序员
android版的path2.0菜单功能实现

path2.0的动态菜单确实很炫,可是在网上没找的android版本,于是就自己实现了一下。感觉效果还可以,就分享出来让大家一起来改进。最终希望能实现iPhone上那种效果。 见源码: Java代码 1 pa...

android技术开发
2013/07/11
0
0
如何实现可动态调整隐藏header的listview

需求:根据某种需要,可能需要动态调整listview的页眉页脚,譬如将header作为显示板使用。 难点:listView.addHeaderView()方法必须在setAdapter()方法前调用,否则就会抛异常。至于为什么会...

今晚打猴子
2015/08/25
0
0
Android中visibility属性VISIBLE、INVISIBLE、GONE的区别

其在XML文件和Java代码中设置如下: 可见(visible) XML文件:android:visibility="visible" Java代码:view.setVisibility(View.VISIBLE); 不可见(invisible) XML文件:android:visibilit...

____追梦人
2015/06/05
0
0
ListView下拉刷新,上拉加载更多,终结版

话不多说直接代码 代码结构,主要是两个类,实现头部功能的封装,写出一个自定义控件 1、头部封装类 /** * 该类主要是完成 头部部分的功能封装 * * 一个可以监听ListView是否滚动到最顶部或最...

董家二少
2014/03/27
0
3
webView中js调用android方法一调用程序就退出是怎么回事

webView中js调用android方法一调用程序就退出是怎么回事 webView.addJavascriptInterface(new Object(){ public void showToast(String name){ Toast.makeText(SujieEasyActivity.this, name......

wangwenya
2013/07/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Zookeeper总结

Zookeeper的部分概念 什么是zookeeeper? Zookeeper是一个分布式服务的协调中心 zookeeper节点的角色类型? Leader(领导者)、Follower(跟随者)、Observer(观察者) Leader 负责更新系统...

DemonsI
24分钟前
1
0
Redis学习笔记

常用命令 从Docker进入Redis的命令 sudo docker exec -it redis /bin/bash

OSC_fly
24分钟前
0
0
SqlServer查询某个日期的数据

select * from View_ZJMONITORINGCORROSION where ENTERDATE > CONVERT(datetime,DATEADD(day,1,'2017/12/28 14:53:07'))...

笑丶笑
26分钟前
0
0
常用编码规范

Standard characters https://ascii.cl/

yeahlife
28分钟前
0
0
flannel实战

docker swarm mode的出现是个里程碑,官方原生的编排调度看起来都成雏形了,但是swarm mode和容器外部系统的对接、网络性能始终不尽人意,swarm mode下各种开源周边不能使用,感觉swarm mod...

China_OS
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部