Android自定义View之LoadingLayout

标签: android loading 加载 自定义view
2788人阅读 评论(0) 收藏 举报
分类:

介绍

上一篇博文写了一个通用的加载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

如果我的文章对你有帮助,请动动手指点个赞或关注,您的支持会是我永恒的动力。

查看评论

每个App都会用到的LoadingLayout(加载中、正在加载、无网络连接等......)

前言 ps:这个项目我是在看一篇文章的时候收集的,暂时没有实际运行。 http://gold.xitu.io/post/583c242061ff4b006b59c7fb 项目里都会遇到几...
  • qq_35534596
  • qq_35534596
  • 2016-12-01 12:18:48
  • 3866

LoadingLayout封装网络请求的各种效果

继承FrameLayout,在xml渲染完成后,加上加载中、无网络、无数据、出错四个页面,根据需要控制显示哪一层,花了些时间,开了很多方法出来,支持很多属性的设置,算是比较实用,源码里已对各个方法的作...
  • baidu_29601793
  • baidu_29601793
  • 2016-12-03 22:26:53
  • 859

能展示不同页面的加载LoadingLayout布局

版权声明:本文为博主原创文章,未经博主允许不得转载。加载LoadingLayout布局,是借用的网上的一个代码实例,来完成的,我在此也感谢作者,现在借用一下,来做一个实体的笔记记录,只是记录而且,它可...
  • zr940326
  • zr940326
  • 2016-10-23 19:19:42
  • 410

自定义页面加载LoadingLayout

做项目当中总是遇到页面数据加载的情况,自定义了几个加载情况的xml布局,例如加载失败,加载数据为空,加载成功,正在加载等,但是发现每次都需要根据加载情况去处理显示哪种xml,很麻烦,也很容易出错,所以...
  • u011625768
  • u011625768
  • 2016-05-10 12:50:52
  • 1562

每个 App 都会用到的 LoadingLayout

前言:项目里都会遇到几种页面,分别为加载中、无网络、无数据、出错四种情况,经常要使用,所以封成库引用了,方便使用,使用时发现此框架使用简单清楚,所以总结归纳如下,可作为一个知识点一次吸收,先上图: ...
  • u013110200
  • u013110200
  • 2017-06-30 13:52:11
  • 287

动手写一个Android数据加载时界面状态切换的开源库

文章伊始,让我们先静心回忆三秒:在我们写过的Android应用当中,是不是有很多地方都离不开数据加载的需求呢?如果是,那么我们首先来看下图:好的,从这里开始我们暂时忘记自己是一个安卓开发者,而是以一个...
  • ghost_Programmer
  • ghost_Programmer
  • 2016-09-09 19:12:01
  • 7214

SwipeToLoadLayout布局中添加自定义控件仿美团、饿了吗等下拉效果

SwipeToLoadLayout是一个可重用的下拉刷新和上拉加载控件,理论上支持各种View和ViewGroup(RecyclerView,GridView等)的刷新和加载,还支持自动刷新,手动刷新...
  • u010347226
  • u010347226
  • 2017-07-04 09:43:40
  • 1394

LoadLayout快速实现加载中界面,加载错误界面,空界面等功能

LoadLayout快速实现加载中界面,加载错误界面,空界面等功能标签(空格分隔): 未分类1.使用方法1.引用compile 'com.z:LoadLayout:1.0.0' ```[点击此处跳转g...
  • qq_31340657
  • qq_31340657
  • 2016-10-26 14:44:32
  • 926

LayoutInflater和inflate()方法的用法 (自定义View中加载xml布局)

实现LayoutInflater的实例化共有3种方法, 1 通过SystemService获得     LayoutInflaterinflater = (LayoutInflater)c...
  • androidstar_cn
  • androidstar_cn
  • 2016-09-23 22:18:19
  • 852

Android 自定义View引用xml布局

一参 Context上下文 二参 xml布局文件id 三参 ViewGroup inflate(context, R.layout.activity_main, this);public cla...
  • w18756901575
  • w18756901575
  • 2016-06-12 15:38:31
  • 3526
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 19万+
    积分: 2622
    排名: 1万+
    百度统计
    博客专栏
    最新评论