文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

Spring加载properties文件的两种方式

在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可,不需要修...

架构师springboot
9分钟前
0
0
分布式事务,原来可以这么玩?

多个数据要同时操作,如何保证数据的完整性,以及一致性? 答 : 事务 ,是常见的做法。 举个栗子: 用户下了一个订单,需要修改 余额表 , 订单 表 , 流水 表 ,于是会有类似的伪代码: st...

微笑向暖wx
11分钟前
0
0
IE6兼容PNG32图片显示PNG8图片

IE6并不是不支持PNG图片,只是不支持半透明通道。 是支持PNG8色表引索全透明的。 以往都是通过滤镜或统统使用PNG8实现兼容。 但是我发现twitter的png图标可以在chrome中显示png32,在IE6显示...

linsk1998
23分钟前
0
0
linux运维需要掌握的基础知识

踏入linux运维工程师这一职业,其实有很多工具技能需要掌握,下面我来给大家一一介绍。 1、shell脚本和另一个脚本语言,shell是运维人员必须具备的,不懂这个连入职都不行,至少也要写出一些...

linuxprobe16
24分钟前
0
0
《netty入门与实战》笔记-03:数据传输载体 ByteBuf 介绍

ByteBuf结构 首先,我们先来了解一下 ByteBuf 的结构 以上就是一个 ByteBuf 的结构图,从上面这幅图可以看到: ByteBuf 是一个字节容器,容器里面的的数据分为三个部分,第一个部分是已经丢弃...

Funcy1122
57分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部