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

使用 ViewStub 延迟展开视图

阅读更多

 

1)定义 ViewStub

<ViewStub android:id = "@+id/stub_import"

android:inflatedId="@+id/panel_import"

android:layout="@layout/progress_overlay"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_gravity="bottom"/>

 

2)展开视图

findViewById(R.id.stub_import).setVisibility(View.VISIBLE);

// 或者 获取视图

View importPanel = ((ViewStub)

findViewById(R.id.stub_import)).inflate();

 

        有一点需要记住的是:当ViewStub inflate后,这个ViewStub就从View层次中移除了。因此,没有必要保留一个对ViewStub的引用(如在类的字段里)。

ViewStub是快捷编程与高效编程之间的产物。与其手动的inflate View并在运行时添加到View层次上,不如简单的使用ViewStub它相当“廉价”且易于使用。ViewStub唯一的缺点是现在不支持<merge />标签。

 

        用ViewStub类和在XML文件里面指定的布局资源文件关联起来,让布局资源文件在需要使用的时候再加载上去。主要作用是性能优化,什么时候用什么时候加载,不用在开始启动的时候一次加载,既可以加快程序的启动速度,又可以节省内存资源。


 

分享到:
评论

相关推荐

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

    2. **展开视图** 有两种方法可以展开ViewStub: - **通过设置可见性**:调用`setVisibility(View.VISIBLE)`方法,将ViewStub的可见性设置为可见,这会导致指定的布局被加载和显示。 ```java findViewById(R.id....

    ListView之ViewStub的使用

    - 使用ViewStub可以避免一次性加载所有ListView项的复杂视图,减少内存消耗,提高滚动流畅性。 - 当ListView项的某些部分只在特定条件下显示时,使用ViewStub可以避免不必要的计算和渲染。 4. **ViewStub与...

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

    2. **底部导航菜单**:当底部导航栏的某一项内容为空时,可以使用ViewStub来延迟加载内容,直到用户切换到该选项时才填充内容。 3. **广告或推荐模块**:在列表或其他视图中,可以利用ViewStub来动态加载广告或个性...

    Android中使用ViewStub实现布局优化

    通过使用ViewStub,我们可以只在用户点击展开按钮时才加载子话题的视图,这样就有效地减少了不必要的资源消耗。 接下来,我们了解一下如何在代码中使用ViewStub。在XML布局文件中,你可以像添加其他View一样添加...

    Android开发技巧

    本文将根据提供的文件信息中的几个关键知识点进行详细解析,包括:如何检测网络连接状态、实现全屏与无标题界面、使用ViewStub进行延迟加载以及如何移除窗口背景。 #### 一、检测网络连接状态 在Android应用开发中...

    ExpandableListView展开折叠动画效果

    使用`ViewStub`可以延迟加载子视图,只有当需要时才实例化。 6. **其他高级特性** 进一步提升用户体验,可以考虑添加平滑滚动、过渡动画等。例如,当用户点击一个组时,自动滚动到该组的位置,同时显示展开动画。 ...

    Android_开发技巧杂集_网络_半透明_异步线程

    #### 展开视图 ```java findViewById(R.id.stub_import).setVisibility(View.VISIBLE); ``` 或获取视图: ```java View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate(); ``` 当需要显示...

    Android 实现iphone主屏幕文件夹展开合并效果(OpenFolder)

    可以使用ViewStub来延迟加载文件夹内容,避免一次性加载大量视图导致卡顿。同时,合理利用缓存和复用策略,减少不必要的资源创建。 9. **兼容性测试**: Android设备众多,不同的屏幕尺寸、分辨率和系统版本可能会...

    百度地图 Fragment之间切换黑屏现象解决方案 Demo

    3. **利用ViewStub延迟加载**:使用ViewStub组件来延迟加载地图Fragment,直到真正需要时才将其展开,避免黑屏。 4. **优化布局过渡**:确保在切换Fragment时,上一个Fragment的视图正确地隐藏,下一个Fragment的...

    类似qq左拉的效果

    避免在滑动过程中执行耗时操作,使用ViewStub来延迟加载侧边栏内容,以减少内存消耗。同时,考虑使用RecyclerView来展示侧边栏中的列表,提高滚动性能。 总结起来,创建类似QQ的左拉效果需要对Android的布局、手势...

    Android ExpanableListView 的使用

    此外,还可以使用`ViewStub`来延迟加载复杂子项的视图,以减少初始加载时的资源消耗。 7. **自定义布局**: `ExpanableListView`的组和子项视图可以通过XML布局文件来定制。在`getGroupView`和`getChildView`中,...

    ScrollViewOnTou顶部背景折叠的滚动页面

    因此,应尽量减少不必要的计算和布局更新,适时使用ViewStub来延迟加载不常显示的视图,或者采用硬件加速来提升性能。 7. **测试与调试**: 完成设计后,需要在各种设备和屏幕尺寸上进行测试,确保在不同情况下都...

    Android应用源码之ScrollView版悬浮菜单.rar

    为优化滚动体验,可以考虑使用ViewStub来延迟加载部分视图,或者使用ListView或RecyclerView来动态加载内容。 10. 材质设计指南:Android的悬浮菜单设计应遵循Material Design指南,这包括颜色、形状、阴影和过渡...

    GuillotineMenu的Demo

    - 使用ViewStub延迟加载菜单,减少初始化时的资源消耗。 - 对动画进行优化,避免过度绘制,提高应用性能。 6. **适配不同设备**: - 考虑到不同设备的屏幕尺寸和分辨率,确保菜单在不同设备上显示正常。 - 对横...

    《Android高性能实践

    - **使用`ViewStub`**:延迟加载视图,节省初始启动时间和内存消耗。 - **减少重绘和布局计算**:通过监控`hierarchyviewer`工具发现性能瓶颈,使用`Lint`工具查找可能的优化点。 - **GPU渲染优化**:减少过度...

    Android仿qq聊天界面顶部导航条

    在代码实现过程中,还要注意性能优化,比如通过复用`View`、使用`RecyclerView`来减少内存消耗,以及合理使用`ViewStub`来延迟加载不常用的部分。同时,适配不同的屏幕尺寸和分辨率也是必不可少的,可以借助`dimen`...

    自定义HorizontalScrollView完成QQ5.0的菜单

    - 使用`ViewStub`延迟加载不立即显示的视图,减少内存消耗。 - 使用`SparseArray`或者`WeakHashMap`存储菜单项的数据,提高查找效率。 7. **测试与调试** - 在不同的设备和Android版本上进行测试,确保兼容性和...

    展开与折叠布局

    可以使用`ViewStub`来延迟加载不常显示的内容,或者使用`RecyclerView`来高效地管理大量数据和视图复用。此外,通过使用硬件加速和适当的缓存策略,可以进一步提升动画的性能。 总的来说,"展开与折叠布局"是一种...

    使用UI布局

    例如,可以使用Android的ViewStub组件来延迟加载不常用的内容,或者利用CollapsingToolbarLayout(在Android的Material Design库中)来实现头部内容的收缩和展开效果。 在iOS开发中,可以使用UITableView的cell展开...

    水平方向伸缩的path按钮菜单,非弧形

    可以使用`ViewStub`延迟加载未显示的菜单项,或者使用`LayoutInflater`来复用菜单项视图。 综上所述,实现一个水平方向伸缩的path按钮菜单涉及多个Android开发的子领域,包括自定义视图、图形绘制、动画、事件处理...

Global site tag (gtag.js) - Google Analytics