Android自定义View之LoadingLayout
2017-02-23 11:27
369 查看
介绍
上一篇博文写了一个通用的加载view,这篇在加载view的基础在包裹一层就是LoadingLayout了,主要的目的是免去每次加载时要隐藏主内容布局,然后加载成功之后显示主内容布局这些繁琐操作。如果你还不了解loadingView,可以简单的看一下上一篇博文:Android 自定义通用的loadingview,实现原理很简单,就是LoadingLayout在包裹内容层的基础上,在代码里添加loadingView作为第二个子view,所以不做过多讲解,大家看完直接下载源码参考。LoadingLayout
This is a view for simplify the operation to loading一个app加载数据通常是显示加载状态,加载成功之后显示主内容视图,如果是列表数据的话如ListView,GridView,RecyclerView一般就不用设置主内容视图隐藏了,
但是如果主视图有些控件如TextView会带效果而不是一片空白的,我们通常需要隐藏主视图,在请求到数据之后回填数据并显示主视图,而这些事情在代码里设置总是很麻烦,
该控件的目的就是为了简化这些步骤。
特点
1、使用简单,实现原理也简单。2、支持自定义各种视图,只需要把你要显示的视图set进去即可
3、支持设置错误视图点击事件。
这里只是提供个思路,大家可以下载源码去修改成最适合你的view。
使用
1、xml里声明view,包裹在内容视图的外层。<?xml version="1.0" encoding="utf-8"?> <com.qiangyuyang.demo.widget.CommonLoadingLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/loadingLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="主内容"/> </com.qiangyuyang.demo.widget.CommonLoadingLayout>
2、Java代码里获取控件并在合适的时候调用加载,加载失败,加载成功等方法。
public class LoadingLayoutActivity extends AppCompatActivity { protected CommonLoadingLayout mLoadingLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_loading_layout); mLoadingLayout = (CommonLoadingLayout) findViewById(R.id.loadingLayout); //设置错误视图点击重新加载事件 mLoadingLayout.setLoadingHandler(new CommonLoadingView.LoadingHandler() { @Override public void doRequestData() { mLoadingLayout.load(); mLoadingLayout.postDelayed(new Runnable() { @Override public void run() { mLoadingLayout.loadSuccess(); } }, 3000); } }); //模拟加载网络请求后出现错误 mLoadingLayout.load(); mLoadingLayout.postDelayed(new Runnable() { @Override public void run() { mLoadingLayout.loadError(); } }, 3000); } }
3、自定义加载、加载错误、等视图。
ProgressBar progressBar = new ProgressBar(this); this.mLoadingLayout.setLoadingView(progressBar); TextView textView = new TextView(this); textView.setText("加载失败..."); this.mLoadingLayout.setLoadingErrorView(textView); mLoadingLayout.load();
源码下载
https://github.com/yissan/LoadingLayout如果我的文章对你有帮助,请动动手指点个赞或关注,您的支持会是我永恒的动力。
相关文章推荐
- Android开发-将自定义View布局到Layout中并调用
- Android自定义View以及layout属性全攻略
- Android开发-使用自定义View实现loading效果
- Android自定义View之Layout的放缩(1)
- android实现自定义RelativeLayout可拖动、缩放、旋转TextView-更新版
- 【转】android:自定义layout动态改变view位置和大小
- Android自定义View以及layout属性全攻略
- 手把手带你做一个超炫酷loading成功动画view Android自定义view
- android SmartTabLayout——自定义标题带的Android ViewPager
- Android_自定义View之跳动的loading
- Android中layout.xml文件中加载自定义的View类
- Android开发-将自定义View布局到Layout中并调用
- 无废话Android之listview入门,自定义的数据适配器、采用layoutInflater打气筒创建一个view对象、常用数据适配器ArrayAdapter、SimpleAdapter、使用ContentProvider(内容提供者)共享数据、短信的备份、插入一条记录到系统短信应用(3)
- 手把手带你做一个超炫酷loading成功动画view Android自定义view
- Android自定义View以及layout属性全攻略
- 安卓主activity引用自定义的View——Android LayoutInflater原理分析
- Android学习个人笔记1-Layout界面布局-xml,java混合模式-自定义view
- 自定义Layout实现Android 5.0 Material Design的点击任意View的水波效果
- 手把手带你做一个超炫酷loading成功动画view Android自定义view
- android自定义钟摆loadingView