大道之行,天下为公。这篇文章主要讲述Android自定义View之LoadingLayout相关的知识,希望能为你提供帮助。
介绍 上一篇博文写了一个通用的加载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之LoadingLayout】如果我的文章对你有帮助, 请动动手指点个赞或关注, 您的支持会是我永恒的动力。
推荐阅读
- Android-RecylerView控件
- Android的Fragment的自定义转场动画
- Android N特性解析
- 安卓界面组件-文本框
- 基于ksoap2-android的soap的封装
- Android学习笔记(十七) BroadcastReceiver
- Android EditText中输入价格判断
- Android开发之Fragment的替换显示
- 安卓开源项目周报0222