`
iaiai
  • 浏览: 2196869 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android ViewStub的应用

 
阅读更多
在开发应用程序的时候,经学会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。

  在开发应用程序的时候,经学会遇到这样的情况,会在运行时动态根据条件来决定显示哪个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来方便的在运行时,要还是不要显示某个布局。

  但ViewStub也不是万能的,下面总结下ViewStub能做的事儿和什么时候该用ViewStub,什么时候该用可见性的控制。

  首先来说说ViewStub的一些特点:

  1. ViewStub只能Inflate一次,之后ViewStub对象会被置为空。按句话说,某个被ViewStub指定的布局被Inflate后,就不会够再通过ViewStub来控制它了。

  2. ViewStub只能用来Inflate一个布局文件,而不是某个具体的View,当然也可以把View写在某个布局文件中。

  基于以上的特点,那么可以考虑使用ViewStub的情况有:

  1. 在程序的运行期间,某个布局在Inflate后,就不会有变化,除非重新启动。

  因为ViewStub只能Inflate一次,之后会被置空,所以无法指望后面接着使用ViewStub来控制布局。所以当需要在运行时不止一次的显示和隐藏某个布局,那么ViewStub是做不到的。这时就只能使用View的可见性来控制了。

  2. 想要控制显示与隐藏的是一个布局文件,而非某个View。

  因为设置给ViewStub的只能是某个布局文件的Id,所以无法让它来控制某个View。

  所以,如果想要控制某个View(如Button或TextView)的显示与隐藏,或者想要在运行时不断的显示与隐藏某个布局或View,只能使用View的可见性来控制。
分享到:
评论

相关推荐

    Android ViewStub 页面状态动态切换

    在Android开发中,ViewStub是一个轻量级的组件,它在布局文件中...合理地利用和优化ViewStub,可以极大地提高应用的可维护性和用户体验。在实际项目中,可以根据具体需求进行适当的定制,以满足更加复杂的功能场景。

    DataBinding中ViewStub例子

    总结来说,DataBinding结合ViewStub可以让我们在Android应用开发中更高效地管理视图,实现延迟加载和动态添加视图的功能,同时保持代码的整洁和易于维护。合理利用这两个工具,可以显著提升应用的用户体验和开发效率...

    第三章 Android开发 使用ViewStub延迟展开视图.docx

    在Android开发中,ViewStub是一个轻量级的组件,它允许开发者延迟加载和初始化布局。ViewStub不占用屏幕空间,直到被显式地设置为可见或者调用`inflate()`方法时,才会加载指定的布局并将其插入到父视图中。这种特性...

    Android UI优化之ViewStub标签的使用

    总结来说,ViewStub是Android UI优化的重要工具,通过延迟加载和减少内存占用,可以显著提升应用的性能和用户体验。结合`merge`标签,开发者可以创建更高效、更轻量级的布局。在实际开发中,根据需求灵活运用这些...

    ViewStub的使用简单示例

    在Android开发中,ViewStub是一个轻量级的组件,它在初始加载时并不可见,不占用任何空间,常用于延迟加载布局或者实现布局复用。这个简单的示例旨在教你如何在项目中有效地利用ViewStub。 首先,了解ViewStub的...

    Android下使用ViewStub控件加载

    标题"Android下使用ViewStub控件加载"主要探讨的是如何在Android应用程序中利用ViewStub来实现高效、节省资源的视图加载策略。ViewStub的主要优势在于其懒加载机制,即在需要时才进行加载,避免了无谓的资源消耗,...

    android 用ViewStub实现Tab选项卡效果

    在Android开发中,创建Tab选项卡效果是一种常见的需求,它能帮助用户在多个视图间进行切换,提高交互体验。ViewStub是一个轻量级的View,通常用于延迟加载布局,它在XML布局文件中占据几乎为0的内存空间,直到被 ...

    惰性控件ViewStub实现布局东动态加载

    总之,ViewStub是Android开发中的一个重要工具,它能够帮助我们实现布局的动态加载,提升应用性能,同时降低内存消耗。在设计和开发过程中,合理利用ViewStub,可以为用户带来更流畅的体验,同时优化应用的整体架构...

    深入分析Android ViewStub的应用详解

    深入理解Android中的...总结,理解并恰当运用ViewStub可以帮助我们优化Android应用的性能,减少不必要的资源开销。在设计布局时,根据实际需求选择合适的控制方式,既能够提升用户体验,也能保证应用的高效运行。

    Android开发中ViewStub的应用方法

    在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能...  推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看

    Android中使用ViewStub实现布局优化

    ViewStub在Android开发中是一个非常实用的工具,用于优化布局加载,尤其是在处理复杂视图时。它是View的一个子类,其主要特点在于不可见、...了解并掌握ViewStub的使用,将有助于你编写出更加高效、流畅的Android应用。

    Android笔记之:深入ViewStub的应用

    在开发应用程序的时候,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把...推荐的做法是使用android.view.ViewStub,ViewStub是一个轻量级的View,它一个看不见的

    ViewStub利用ViewStub显示和隐藏布局

    在Android开发中,ViewStub是一个轻量级的组件,它在初始加载时占用的资源非常少,主要用于延迟加载和动态插入布局。ViewStub在XML布局文件中定义,但默认情况下它是不可见的,不会占据任何空间,直到被显式地设置为...

    Android布局技巧之使用ViewStub

    通过合理利用`ViewStub`,可以在保证用户体验的同时,优化应用的内存使用和运行效率。在实际项目中,尤其是在处理复杂布局或者需要根据用户操作动态显示隐藏内容的场景下,`ViewStub`是一个值得考虑的解决方案。

    ViewStub的简单Demo

    在Android开发中,`ViewStub` 是一个非常实用但经常被忽视的组件。它是一个轻量级的视图,主要用于延迟加载和初始化视图。在本文中,我们将深入理解`ViewStub`的工作原理,以及如何在实际项目中使用它。 **一、...

    ListView之ViewStub的使用

    本文将深入探讨如何在ListView中应用ViewStub。 1. **ViewStub基本概念** - ViewStub是一个特殊的轻量级视图,初始状态是不可见的,不占用布局空间。 - 它通常用来延迟加载某个布局,以节省内存和提高应用启动...

    Android应用:StubView显示与隐藏

    总结来说,`ViewStub`在Android应用中用于延迟加载视图,通过调整其`visibility`属性可以实现显示和隐藏的效果。开发者可以根据需求,在适当的时间点调用`inflate()`方法加载布局,同时通过`setOnClickListener()`...

    ViewStub的简单使用

    ViewStub在Android开发中是一个非常实用的轻量级组件,常用于延迟加载或者动态加载一些不常用但必不可少的UI元素。这个组件默认是不可见的,并且占据的布局空间几乎可以忽略不计,直到被激活时才会加载并显示在界面...

    Android在layout xml中使用ViewStub完成动态加载问题

    Android 在 layout xml 中使用 ViewStub 完成动态加载问题 Android 中的动态加载问题是指在应用程序中根据不同的条件来决定显示哪个 View 或某个布局的问题。在 Android 中,通常的做法是把可能用到的 View 都写在...

Global site tag (gtag.js) - Google Analytics