Android API 中文(14) —— ViewStub


前言

  关键字: android.view.ViewStub,版本为Android 2.2 r1

  本章翻译来自唐明 ,这里本博负责整理和发布,欢迎其他译者一起参与Android API 的中文翻译行动,联系我over140@gmail.com。

 

声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com

    农民伯伯: http://www.cnblogs.com/over140/

 

正文

  一、结构

    public final class ViewStub extends View

    

    java.lang.Object

        android.view.View

              android.view.ViewStub

 

  二、类概述

    ViewStub 是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当ViewStub可见,或者调用 inflate()函数时,才会加载这个布局资源文件。 该ViewStub在加载视图时在父容器中替换它本身。因此,ViewStub会一直存在于视图中,直到调用setVisibility(int) 或者inflate()为止。ViewStub的布局参数会随着加载的视图数一同被添加到ViewStub父容器。同样,你也可以通过使用inflatedId属性来定义或重命名要加载的视图对象的Id值。例如:

    

    通过"stud"id可以找到被定义的ViewStub对象。加载布局资源文件"mySubTree "后, ViewStub对象从其父容器中移除。可以通过id"subTree"找到由布局资源"mySubTree"创建的View。这个视图对象最后被指定为宽120dip,高40dip。执行加载布局资源文件的推荐方式如下:

    

    当inflate()被调用, 这个ViewStub被加载的视图替代并且返回这个视图对象。这使得应用程序不需要额外执行findViewById()来获取加载视图的引用。
    (译者注:这个类大概意思是用ViewStub类和在XML文件里面指定的布局资源文件关联起来,让布局资源文件在需要使用的时候再加载上去。主要作用是性能优化,什么时候用什么时候加载,不用在开始启动的时候一次加载,既可以加快程序的启动速度,又可以节省内存资源。)

 

  三、嵌套类

    接口    ViewStub.OnInflateListener        一个用于接收ViewStub已经成功加载布局资源文件的通知的监听器。

 

  四、XML属性

属性名称

相关方法

描述

android:inflatedId

setInflatedId(int)

覆盖待加载视图的id值。

android:layout

setLayoutResource(int)

为待加载的资源视图提供一个标识,在ViewStub变为可见或获取焦点时使用它。(译者注:要引用的布局资源文件id

 

  五、构造函数

    ViewStub(Context context, int layoutResource)

    创建一个与指定的布局资源文件关联的ViewStub对象。

             参数

                       layoutResource   要加载的布局资源文件的id值。 


  六、公共方法

         public void draw (Canvas canvas)

         手动在指定的画布绘制这个视图(及所有其子视图)。这个视图必须在调用这个函数之前做好了整体布局。当要自己实现一个视图时,不要重载这个方法;相反,你应该重载onDraw(Canvas)方法。(译者注:主要用于自定义的视图组件的方法。

                   参数

                            canvas    这个画布传到那个已渲染的视图对象。

 

         public int getInflatedId ()

         返回加载的布局资源文件的ID,如果加载的布局资源文件的idNO_ID,那么这个加载的View将保留它原来的id值。

                   相关XML 属性

                            android:inflatedId

                   返回值

                            一个正整数来标识这个要加载的视图或者NO_ID将保持加载视图原来的id

                   参见

                            setInflatedId(int)

 

         public int getLayoutResource ()

         返回加载的布局资源文件的id值。

                   相关XML 属性

                            android:layout

                   返回值

                            加载到视图对象的布局资源文件id值。

                   参见

                            setLayoutResource(int)

                            setVisibility(int)

                            inflate()

 

         public View inflate ()

         加载getLayoutResource()方法标识的布局资源,并通过加载布局资源替换父容器中它自己。

                   返回值

                            这个已加载的布局资源文件.

 

         public void setInflatedId (int inflatedId)

         设置加载视图的ID。如果这个idNO_ID,这个加载视图保持它原来的id不变。

                   相关XML 属性

                            android:inflatedId

                   参数

                            inflatedId         一个正整数来标识这个加载视图或者NO_ID将保持加载视图原来的id

                   参见

                            getInflatedId()

 

         public void setLayoutResource (int layoutResource)

         设置待加载的布局资源文件,当ViewStub被设置为visibleinvisible或调用inflate()时使用。这个在加载布局资源文件时创建的视图用来在父容器中替换它自己。

                   相关XML 属性

                            android:layout

                   参数

                            layoutResource       一个有效的布局资源文件id值(不等于0)。

                   参见

                            getLayoutResource()

                            setVisibility(int)

                            inflate()

 

         public void setOnInflateListener (ViewStub.OnInflateListener inflateListener)

      设置成功加载布局资源文件后事件通知的监听器。

                 参数

                            inflateListener         OnInflateListener在成功加载后得到事件通知。

                 参见

                            ViewStub.OnInflateListener

 

         public void setVisibility (int visibility)

当可见性设置为VISIBLEINVISIBLEinflate()将被调用,并且加载视图资源在父容器中替换ViewStub

                   参数

                            visibility 设置为VISIBLE(显示), INVISIBLE(隐藏), GONE(完全隐藏,不暂用布局位置).

                   参见

                              inflate() 

 

  七、受保护方法

         protected void dispatchDraw (Canvas canvas)

调用这个函数去绘制这个控件的子视图。可以通过派生类重写在绘制子类之前获取控制(但是是在他自己的视图已经被绘制完之后)

                  参数

                            canvas    这个画布传到那个已渲染的视图对象。

 

         protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)

测量这个视图以确定其内容的高度和宽度。通过measure(int, int)来调用这个方法,并且应该由子类重写以提高内容测量的效率和精确度。

    约定:当该方法被重写时,你必须调用setMeasuredDimension(int, int)来存储已测量视图的高度和宽度。否则将通过measure(int, int)抛出一个IllegalStateException异常。调用父类的onMeasure(int, int)方法是一个有效的办法。

    父类的实现是以背景大小为默认大小,除非MeasureSpec(测量细则)允许更大的背景。为了更好测量内容子类应该重写onMeasure(int, int)

    如果这个方法被重写,子类有责任确保测量它的高度和宽度至少是视图的最小宽度和高度(getSuggestedMinimumHeight()getSuggestedMinimumWidth())。

      参数

  widthMeasureSpec         由于父类有横向空间要求,参见View.MeasureSpec

                              heightMeasureSpec        由于父类有纵向空间要求,参见View.MeasureSpec 

 

  八、下载

    CSDN:http://download.csdn.net/source/2764163

 

  九、补充

    文章链接

       【译】使用ViewStub(Layout Tricks: Using ViewStubs)

 

结束

  比较抱歉,上周唐明就已经把稿件交给我了,并叮嘱我帮忙校稿,由于自己这边比较忙一直耽误到现在才发布,再次感谢他!也欢迎大家提出意见,翻译不准确的地方也欢迎批评指正。

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

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

相关文章

stm32l0的停止模式怎么唤醒_「正点原子STM32Mini板资料连载」第十九章 待机唤醒实验...

1)实验平台:正点原子STM32mini开发板2)摘自《正点原子STM32 不完全手册(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子第十九章 待机唤醒实验本章我们将向大家介绍 STM32 的待机唤醒功能。在本章中,我们将使用 WK_UP 按…

Pgbouncer 介绍

Pgbouncer 介绍 PostgreSQL 的轻量的连接池。 特性 在轮转连接的时候有好几种方式:Session pooling/会话连接池最礼貌的方法。在客户端连接的时候,在它的连接生命期内,会给它赋予一个服务器连接。在客户端断开的时候,服务器连接会…

阿里全球数学竞赛落幕:全球最强73人出炉,北大获奖人数第一,还“炸出”各路世界大牛...

全世界只有3.14 % 的人关注了爆炸吧知识来源:量子位 ID:QbitAI作者:边策 金磊又是一场学霸的盛宴。阿里达摩院举办的第二届数学竞赛今天顺利结束,这场号召全民参与的数学竞赛,初赛的题目画风是这样的:是不…

【Azure + Core】实现CI/CD(一)构建镜像并推送仓库

(海上生明月,天涯共此时)今天是农历八月十六,大家中秋节快乐!放了三天假,和家人整理下屋子,打扫下卫生,闲着无聊就研究点儿新东西。最近一直再看DevOps相关的内容,自从开…

detectron2训练自己的数据集_keras版MaskRCNN来训练自己的目标检测数据集

向AI转型的程序员都关注了这个号👇👇👇机器学习AI算法工程 公众号:datayx一、运行环境的安装:1、下载好cuda9跟cudnn7,然后在安装好后,cuda其会自动添加到环境变量里,所以使用kera…

Win7系统中必需记住的14个常用快捷键

在使用电脑时,多多少少地都会用到一些快捷键,尤其是在玩游戏,或使用一些软件时。快捷键不仅方便,如果用的好,甚至可以大大提升我们的工作效率。而且,快捷键不仅可以在软件中使用,在Win7系统中其…

git 删除远程分支

2019独角兽企业重金招聘Python工程师标准>>> git branch -r -d origin/dev git push origin :dev 注意: git push origin 后面有个空格 转载于:https://my.oschina.net/u/1176097/blog/391573

我看过《隐秘的角落》才知道,理科生有多可怕!

全世界只有3.14 % 的人关注了爆炸吧知识最近,大家都被《隐秘的角落》刷屏了吧?但吃瓜、看瓜的背后,我看到了理科生的可怕之处。数学课上,为了暗示朱朝阳自己杀人其实是因为被背叛,张东升利用笛卡尔在爱情里或美好与悲惨…

mysql sleep详解_sql注入详解(二)

sql注入详解4、检测方法首先是判断能不能进行sql注入是哪种sql注入(1)数字型?id1 and 11 返回成功?id1 and 12 返回失败这说明是数字型注入,或者叫整型注入此时后台是select * from where id x and 11select * from where id x and 12显然一个判断为真&#x…

Visual Studio的奇淫技巧,你知道多少?

如果你像我一样,或许你也沉迷于开发者工具。这就是我喜欢 Visual Studio 的原因之一——它有无数的生产力技巧。这篇文章将展示五个这样的技巧,这些技巧对我每天的工作都有帮助。请注意,这些仅适用于 Visual Studio。有像ReSharper[1]、Rosly…

promise的状态以及api介绍_前端 api 请求缓存

作者:wsafighthttps://github.com/wsafight/personBlog/issues/2web开发时,性能都是必不可少的话题。对于webpack打包的单页面应用程序而言,我们可以采用很多方式来对性能进行优化,比方说 tree-shaking、模块懒加载、利用 extrens…

哎,累死了~..~

下午睡觉一起床,打开博客园时,才发现后台原来可以用CSS来弄主页啊,我个猪头,才发现。。。弄了一下午,终于搞了个像样的,嘿嘿,浪漫典雅,不失严谨,有点类似Metro风格&#…

RedHat el5.0 搭建 Postfix 邮件服务器系统一

RedHat el5.0 搭建 Postfix 邮件服务器系统 (postfixcyrus-sasl2courier-authlibcourier-imapextmailmaildrop) 一、系统环境 操作系统:rhel-5.2 所需软件(按网上以前的文档,好多版本都找不到&#xff…

C# 数据结构--排序[下]

希尔排序&#xff08;Shell Sort&#xff09; 排序思想&#xff1a; 先取一个小于n的整数d1作为第一个增量&#xff0c;把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序&#xff1b;然后&#xff0c;取第二个增量d2<d1重复上述的…

奥林匹克数学竞赛教练员汇编,最牛奥数资料全集!

全世界只有3.14 % 的人关注了爆炸吧知识1985年&#xff0c;由北京大学、南开大学、复旦大学和中国科技大学四所大学倡议&#xff0c;中国数学会决定&#xff0c;自1986年起每年一月份&#xff08;第29届起改为每年12月举行&#xff09;举行全国中学生数学冬令营&#xff0c;后又…

成长 | 《大厂晋升指南》学习总结(中)

【学习总结】| Edison Zhou上一篇总结了晋升体系和职级详解&#xff0c;本篇总结面评技巧和学习方法。温馨提示&#xff1a;文中的贴图均来自极客时间《大厂晋升指南》课程。1面评技巧PPT框架华仔在多年的晋升答辩评委经历中总结了晋升答辩PPT的3个常见误区&#xff1a;&#x…

window.location.reload()会掉参数吗_iPhone手机电量不够用,你真的会用苹果吗?设置好这几个就OK了!...

用过iPhone的小伙伴都知道iPhone手机里的IOS系统&#xff0c;正是因为IOS系统独特的流畅度吸引了很多的用户成为了果粉。但是如今在中国市场上&#xff0c;iPhone手机在市场上占据的份额一年比一年低&#xff0c;近几年新兴崛起的国产手机华为、VIVO、小米以及年青人品牌的魅族…

Linux 下 MySQL 启动与关闭 说明

一.启动1.1 MySQL 进程可以用ps 命令查看进程&#xff1a;[rootrac2 ~]# ps -ef|grep mysqlroot 2161 1 0 09:38 ? 00:00:00 /bin/sh /usr/bin/mysqld_safe--datadir/var/lib/mysql --pid-file/var/lib/mysql/rac2.pidmysql 2418 2161 0 09:38 ? …

历史上有哪些看似经PS处理实则没有的照片?

全世界只有3.14 % 的人关注了爆炸吧知识使用过xp系统的朋友&#xff0c;对这张图&#xff0c;肯定很是熟悉&#xff0c;毕竟是作为xp系统的经典桌面&#xff0c;名为Bliss。这张图是1996年在美国加利福尼亚州锁诺玛县&#xff0c;锁诺玛山谷南部靠近一家乳品公司旧址拍摄。摄影…

iNeuLink硬件网关与iNeuOS工业互联网操作系统互联互通应用案例

目 录1. 应用概述... 22. 模拟硬件设备配置... 23. iNeuLink硬件网关配置... 43.1 硬件介绍... 43.2 硬件网关配置... 44. iNeuOS工业互联网操作系统配置... 61. 应用概述有一个生产镍的矿业集团&#xff0c;要整合不同厂区的…