重构封装SwipeRefreshLayout,实现同业务多页面复用,提高开发和维护效率, 让开发变得更简洁方便,让维护变得省心省时。
直接上代码。
1. MySwipeRefreshLayout.class
/**
* @Author: rhj
* @CreateDate: 2021/1/13 19:19
* @Version: 1.0.0
* @Description: 自定义刷新控件
*/
public class MySwipeRefreshLayout {
private String TAG = MySwipeRefreshLayout.class.getSimpleName();
private WeakReference<AppCompatActivity> weakReference;
private SwipeRefreshLayout mSwipeRefreshLayout;
private MyRefreshInterface mMyRefreshInterface;
public void initMySwipeRefreshLayout(AppCompatActivity activity , int viewId){
if (activity == null){
return;
}
weakReference = new WeakReference<>(activity);
// setContextView(weakReference.get());
mSwipeRefreshLayout = weakReference.get().findViewById(viewId);
initSwipeRefreshLayout();
}
public void initMySwipeRefreshLayout(AppCompatActivity activity , SwipeRefreshLayout swipeRefreshLayout){
if (activity == null){
return;
}
weakReference = new WeakReference<>(activity);
// setContextView(weakReference.get());
mSwipeRefreshLayout = swipeRefreshLayout;
initSwipeRefreshLayout();
}
private void initSwipeRefreshLayout() {
if (mSwipeRefreshLayout == null){
return;
}
// 设置下拉进度的背景颜色,默认就是白色的
mSwipeRefreshLayout.setProgressBackgroundColorSchemeResource(android.R.color.white);
// 设置下拉进度的主题颜色
mSwipeRefreshLayout.setColorSchemeResources(R.color.purple_200, R.color.purple_700, R.color.teal_700);
// mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary, R.color.colorPrimaryDark);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Log.e(TAG, "刷新数据 --------------------------------------- ");
if (mMyRefreshInterface != null) {
mMyRefreshInterface.onRefresh();
}
new Handler().postDelayed(new Runnable() {
// new Handler(Objects.requireNonNull(Looper.myLooper())).postDelayed(new Runnable() {
@Override
public void run() {
mSwipeRefreshLayout.setRefreshing(false);
if (mMyRefreshInterface != null) {
mMyRefreshInterface.setRefreshing(false);
}
}
}, 2000);
}
});
}
public void setRefreshing(boolean b){
if (mSwipeRefreshLayout != null) {
mSwipeRefreshLayout.setRefreshing(b);
}
if (mMyRefreshInterface != null) {
mMyRefreshInterface.setRefreshing(b);
}
}
public void setmMyRefreshInterface(MyRefreshInterface mMyRefreshInterface) {
this.mMyRefreshInterface = mMyRefreshInterface;

本文介绍了如何通过重构封装SwipeRefreshLayout,实现同一业务在多个Android页面的复用,从而简化开发过程,提高维护效率。通过提供具体的XML布局文件示例,展示了如何将复杂的初始化代码精简,使得代码维护更加便捷。
580

被折叠的 条评论
为什么被折叠?



