Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

android 加载布局的两种方式: QuickLoadLayout 和 SuperLoadLayout,完美支持 androidx 和 Android 库!!

License

Notifications You must be signed in to change notification settings

bugyun/LoadLayout

Repository files navigation

LoadLayout

android 加载布局的两种方式

  • QuickLoadLayout
  • SuperLoadLayout

完美支持 androidx 和 Android 库。


QuickLoadLayout

使用方法,在使用的子 build.gradle 中添加配置

implementation 'vip.ruoyun.widget:quick-load-layout:1.0.3'

xml设置

  • loadEmptyLayout : 没有数据显示的界面,对应状态 LoadMode.NO_DATA
  • loadErrorLayout : 网络错误显示的界面,对应状态 LoadMode.ERROR
  • loadLoadingLayout : 加载中的界面,对应状态 LoadMode.LOADING
  • loadNoNetworkLayout : 没有网络显示的界面,对应状态 LoadMode.NO_NETWORK
  • 成功的界面 : LoadMode.SUCCESS
<vip.ruoyun.widget.quick.QuickLoadLayout
 android:id="@+id/mQuickLoadLayout"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 app:loadEmptyLayout="@layout/quick_layout_load_no_data"
 app:loadErrorLayout="@layout/quick_layout_load_error"
 app:loadLoadingLayout="@layout/quick_layout_load_loading"
 app:loadNoNetworkLayout="@layout/quick_layout_load_no_network">
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="我是内容" />
</vip.ruoyun.widget.quick.QuickLoadLayout>

代码设置

可以添加点击事件,重新加载,NO_DATA,ERROR,NO_NETWORK 的布局会响应此事件

mQuickLoadLayout = findViewById(R.id.mQuickLoadLayout);
mQuickLoadLayout.setOnReloadListener(new QuickLoadLayout.OnReloadListener() {
 @Override
 public void onReload() {
 mQuickLoadLayout.setLoadMode(QuickLoadLayout.LoadMode.LOADING);
 }
});

最佳实现

public class QuickLoadLayoutActivity extends AppCompatActivity {
 private Handler handler = new Handler();
 private QuickLoadLayout mQuickLoadLayout;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_quick_load_layout);
 mQuickLoadLayout = findViewById(R.id.mQuickLoadLayout);
 mQuickLoadLayout.setOnReloadListener(new QuickLoadLayout.OnReloadListener() {
 @Override
 public void onReload() {
 mQuickLoadLayout.setLoadMode(QuickLoadLayout.LoadMode.LOADING);
 handler.postDelayed(new Runnable() {
 @Override
 public void run() {
 mQuickLoadLayout.setLoadMode(QuickLoadLayout.LoadMode.SUCCESS);
 }
 }, 2000);
 }
 });
 mQuickLoadLayout.setLoadMode(QuickLoadLayout.LoadMode.LOADING);
 handler.postDelayed(new Runnable() {
 @Override
 public void run() {
 mQuickLoadLayout.setLoadMode(QuickLoadLayout.LoadMode.ERROR);
 }
 }, 2000);
 }
}

SuperLoadLayout

使用方法,在使用的子 build.gradle 中添加配置

implementation 'vip.ruoyun.widget:super-load-layout:1.0.3'

xml

<vip.ruoyun.widget.superlayout.SuperLoadLayout
 android:id="@+id/mSuperLoadLayout"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <TextView
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="我是成功界面" />
</vip.ruoyun.widget.superlayout.SuperLoadLayout>

创建 state ,各种状态创建对应的类

public class SuperCreateLoadBuildHelper {
 public static SuperLoadLayout.Builder create(IFetchData iFetchData) {
 return new SuperLoadLayout.Builder()
 .buildCreateErrorLayout(new ErrorILoadLayoutState(iFetchData))//网络错误
 .buildCreateLoadingLayout(new LoadingLayoutState(iFetchData))//加载中
 .buildCreateNoDataLayout(new NoDataLayoutState(iFetchData))//没有数据
 .buildCreateNoNetworkLayout(new NoNetworkLayoutState(iFetchData))//没有网络
 .build();
 }
}

创建对应的状态,需要实现 ISuperLoadLayoutState 接口,

public class LoadingLayoutState implements ISuperLoadLayoutState {
 //或者通过接口来实现
 private IFetchData iFetchData;
 public LoadingLayoutState(IFetchData iFetchData) {
 this.iFetchData = iFetchData;
 }
 @Override
 public int onCreateLayoutId() {//对应的布局
 return R.layout.layout_load_loading;
 }
 @Override
 public void onCreateView(View view) {
 //在这里进行一些 findviewbyid
 //setOnClick 等操作
 }
 @Override
 public void onShow() {
 //当界面要展示的时候,会回调此方法,比如开始动画
 }
 @Override
 public void onHide() {
 //当界面要展示的时候,会回调此方法,比如结束动画
 }
}

把创建好的 build 传入到 SuperLoadLayout 类中。

mSuperLoadLayout.setBuilder(SuperCreateLoadBuildHelper.create(this));

最佳实现

public interface IFetchData {
 void fetchData();//加载数据的接口
}
public class SuperLoadLayoutActivity extends BaseActivity {
 private SuperLoadLayout mSuperLoadLayout;
 private Handler handler = new Handler();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_super_load_layout);
 mSuperLoadLayout = findViewById(R.id.mSuperLoadLayout);
 mSuperLoadLayout.setBuilder(SuperCreateLoadBuildHelper.create(this));
 mSuperLoadLayout.setLoadMode(SuperLoadLayout.LoadMode.LOADING);
 handler.postDelayed(new Runnable() {
 @Override
 public void run() {
 mSuperLoadLayout.setLoadMode(QuickLoadLayout.LoadMode.NO_NETWORK);
 }
 }, 2000);
 }
 @Override
 public void fetchData() {
 mSuperLoadLayout.setLoadMode(SuperLoadLayout.LoadMode.LOADING);
 handler.postDelayed(new Runnable() {
 @Override
 public void run() {
 mSuperLoadLayout.setLoadMode(SuperLoadLayout.LoadMode.SUCCESS);
 }
 }, 3000);
 }
}

About

android 加载布局的两种方式: QuickLoadLayout 和 SuperLoadLayout,完美支持 androidx 和 Android 库!!

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

AltStyle によって変換されたページ (->オリジナル) /