android 加载layout,Android自定义View加载视图之LoadingLayout

博客介绍了如何使用LoadingLayout来简化Android应用中加载数据时的显示操作。这个自定义视图在内容视图外层包裹加载视图,避免了手动隐藏和显示主内容视图的繁琐过程。支持自定义加载视图、错误视图,并提供了错误视图的点击重新加载事件。通过设置不同视图,可以轻松实现加载、加载失败和加载成功的UI状态。提供了源码下载供读者参考和定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

上一篇博文写了一个通用的加载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会带效果而不是一片空白的,我们通常需要隐藏主视图,在请求到数据之后回填数据并显示主视图,而这些事情在代码里设置总是很麻烦,

该控件的目的就是为了简化这些步骤。

a2bd9386d7c8

这里写图片描述

特点

1、使用简单,实现原理也简单。

2、支持自定义各种视图,只需要把你要显示的视图set进去即可

a2bd9386d7c8

这里写图片描述

3、支持设置错误视图点击事件。

这里只是提供个思路,大家可以下载源码去修改成最适合你的view。

使用

1、xml里声明view,包裹在内容视图的外层。

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">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:text="主内容"/>

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();

源码下载

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值