Android提高布局加载性能ViewStub的快速实战应用
来源:互联网 发布:淘宝围巾 知乎 编辑:程序博客网 时间:2024/05/22 04:38
在APP的开发过程中我们往往会遇到没有数据或者没有网络情况时使用一个布局view提示当前数据加载的情况 ,就如下图所示
我们可以用平常使用的布局来写也可以实现,但是这对于我们布局的加载会存在一定的压力,所以我们使用ViewStub来加载。
那么什么是ViewStub呢?
ViewStub是一个轻量级的View,没有尺寸,它不绘制任何东西,因此绘制或者移除时更省时。(ViewStub不可见,大小为0)
当然,这是我用简短的话语描述的,你也可也参照官方文档了解更多使用方法点击进入ViewStub使用官网
我不想浪费更多时间去顺着文档翻译一遍(有兴趣的自己去研读,官网链接需要翻墙进入),目的只有一个快速写入项目中
首先看看布局文件吧!
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/empty_icon" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/img_kong"/> <TextView android:id="@+id/empty_text" android:layout_marginTop="10dp" android:layout_centerInParent="true" android:layout_below="@+id/empty_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/hint_line" android:text="当前暂无数据"/></RelativeLayout>
在使用的布局文件中通过ViewStub引入上面的布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:fitsSystemWindows="true" android:background="@color/white" android:orientation="vertical" > <include android:id="@+id/include" layout="@layout/title_bar" /> <TextView android:id="@+id/tv_kid_online" android:layout_width="wrap_content" android:layout_height="30dp" android:gravity="center_vertical" android:layout_marginLeft="10dp" android:text="" android:textColor="@color/content_hint_text" android:textSize="14sp" /> <ListView android:divider="@color/white" android:cacheColorHint="@color/white" android:dividerHeight="0dp" android:listSelector="@android:color/transparent" android:id="@+id/lv_kid_online" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" > </ListView> <ViewStub android:id="@+id/emptyView" android:layout_width="match_parent" android:layout_height="match_parent" android:inflatedId="@+id/view_id_after_inflate" android:layout="@layout/view_empty" /></LinearLayout>
下面是在activity中区初始化,以及通常的使用方法
private ViewStub stubView;private View emptyView;
stubView = (ViewStub) findViewById(R.id.emptyView);
在activity中使用如下方法
//显示数据空的效果 private void showErrorView() { if (emptyView == null) { //ViewStub 只能加载一次 emptyView = stubView.inflate(); TextView text = (TextView) findViewById(R.id.empty_text); text.setText("当前园所没有设置摄像头,请联系园所设置"); } emptyView.setVisibility(View.VISIBLE); listView.setVisibility(View.GONE); } //隐藏数据空的效果 private void hintErrorView() { if (emptyView == null) { emptyView = stubView.inflate(); } emptyView.setVisibility(View.GONE); listView.setVisibility(View.VISIBLE); }
最后你只需要在需要在比如数据为空,或者没有网络的时候使用showErrorView();这个方法就能够显示图片上的效果,反之使用hintErrorView();隐藏该视图,text.setText(“当前园所没有设置摄像头,请联系园所设置”);这个地方添加自己想使用的提示语,或者增加图片更换也是同样的道理
阅读全文
0 0
- Android提高布局加载性能ViewStub的快速实战应用
- Android使用ViewStub提高布局性能
- Android中使用ViewStub提高布局性能
- Android使用ViewStub提高布局性能
- ViewStub动态加载布局提高UI加载性能
- Android实战技巧:ViewStub的应用 (安卓性能相关)
- Android实战技巧:ViewStub的应用(性能优化)
- 【Android性能优化】优化布局:ViewStub的应用
- Android中使用ViewStub来提高UI的加载的性能
- 【layout】Android中使用ViewStub来提高UI的加载的性能
- Android实战技巧:ViewStub的应用
- Android实战技巧:ViewStub的应用
- Android实战技巧:ViewStub的应用
- Android实战技巧:ViewStub的应用
- Android实战技巧:ViewStub的应用
- Android实战技巧:ViewStub的应用
- Android实战技巧:ViewStub的应用
- Android实战技巧:ViewStub的应用
- 12月送书活动获奖名单
- Linux操作系统根文件系统的注册与挂载
- idea2017.3激活
- 七种回归技术
- iscsi
- Android提高布局加载性能ViewStub的快速实战应用
- 【传智播客郑州校区分享】Laravel框架——为 WEB 艺术而生
- 当function遇到return函数真的执行结束了吗?
- 新iPhone会更好看吗?艾维重新掌控苹果设计团队
- 【Mycat】数据库性能提升利器(二)——Mycat水平切分数据库
- 页面使用iframe进行嵌套,关于如何实现,在子页面使整个页面跳转到其他页面
- 外媒评选2017年度最佳手机:仅这一部中国手机入选
- 华为P11外形首曝:也配刘海屏 神似iPhone X
- 从Win32程序中的主函数中获取命令行参数