ViewStub的使用示例
发布日期:2021-06-30 11:22:34
浏览次数:2
分类:技术文章
本文共 2331 字,大约阅读时间需要 7 分钟。
mainActivity如下:
package c.c;import android.os.Bundle;import android.view.View;import android.view.ViewStub;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.app.Activity;/** * Demo描述: 利用ViewStub显示和隐藏布局 * ViewStub的引入: * 在开发的时候,有些布局是要根据条件而动态显示,达到一个布局两用的效果, * 运用View.VISIBLE和View.GONE去改变布局的可见性. * 这样的做法显然是没什么多大的问题,优点逻辑清晰,控制灵活,但缺点就是耗费资源 * 在setContentView()或者用inflate加载布局文件时无论View是否 * 被设置为View.GONE和View.VISIBLE,都会创建对象,占用一定程度上的内存,所以在考虑优化程序的时候, * 尽量避免资源浪费,降低程序的资源占有量,提高响应速度,提升软件的用户体验 * * 推荐的做法是使用android.view.ViewStub. * ViewStub是一个轻量级的View,它一个看不见的,不占布局位置,占用资源非常小的控件. * ViewStub是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件当 ViewStub可见,或者调用 * inflate()函数时,才会加载这个布局资源文件 注意的问题: ViewStub只能用来Inflate一个布局文件,而不是某个具体的View * * 遇到的问题: * 报错 ViewStub must have a non-null ViewGroup viewParent * 原因: * 官方文档:viewstub不能反复inflate,只能inflate一次 * * 参考资料: * http://blog.csdn.net/hitlion2008/article/details/6737537 */public class MainActivity extends Activity { private Button mButton_show; private Button mButton_hidden; private ViewStub mViewStub; private View mView=null; private boolean isInflate=true; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ mButton_show=(Button) findViewById(R.id.button_show); mButton_show.setOnClickListener(new ButttonClickListenerImpl()); mButton_hidden=(Button) findViewById(R.id.button_hidden); mButton_hidden.setOnClickListener(new ButttonClickListenerImpl()); mViewStub=(ViewStub) findViewById(R.id.viewStub); } private class ButttonClickListenerImpl implements OnClickListener { public void onClick(View v) { switch (v.getId()) { case R.id.button_show: if (isInflate) { mView=mViewStub.inflate(); isInflate=false; }else { mView.setVisibility(View.VISIBLE); } TextView textView= (TextView) mView.findViewById(R.id.viewStub_TextView); textView.setText("time="+System.currentTimeMillis()); break; case R.id.button_hidden: mViewStub.setVisibility(View.GONE); break; default: break; } } }}main.xml如下:
testviewstublayout.xml.xml如下:
转载地址:https://it9527.blog.csdn.net/article/details/8512602 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月09日 23时38分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java并发以及多线程基础
2019-04-30
软件质量的8个特性
2019-04-30
应届渣渣前端的艰难求职之路
2019-04-30
2021年不可错过的17种JS优化技巧(一)
2019-04-30
2021年不可错过的17种JS优化技巧(二)
2019-04-30
月薪15~20k的前端面试问什么?
2019-04-30
一文学会使用Vue3
2019-04-30
我是如何看Vue源码的
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
LVM逻辑卷------基础命令详解(三分钟入门)
2019-04-30
LVM逻辑卷------详细操作过程(三分钟上手)
2019-04-30
mysql——介绍及安装与基本用法
2019-04-30
MySQL数据库之索引
2019-04-30
MYSQL——事务操作+视图+存储引擎
2019-04-30
Mysql——完全备份+增量备份+备份恢复
2019-04-30
MySQL进阶查询(SELECT 语句高级用法)
2019-04-30
Mysql 之主从复制
2019-04-30
LVS负载均衡------NAT模式
2019-04-30
squid代理-----透明代理模式
2019-04-30
squid代理介绍----ACL控制应用+sarg日志分析+反向代理
2019-04-30