Android 自定义通用的loadingview实现代码

Android 自定义通用的loadingview实现代码,第1张

概述功能1、显示加载视图,加载失败的时候显示加载失败视图,数据为空时显示数据为空视图,支持为失败视图设置点击事件重新加载数据。

功能

1、显示加载视图,加载失败的时候显示加载失败视图,数据为空时显示数据为空视图,支持为失败视图设置点击事件重新加载数据。

2、支持个性化设置,自定义设置 加载、失败、空数据视图。

先放一张效果图压压惊

实现

实现思路其实就是一个FrameLayout里添加三个布局做处理显示隐藏,自定义视图其实就是替换里面的vIEw,代码比较简单,如果直接看过我的自定义view系列文章,或者对自定义view有所了解,都很容易看懂,所有直接上代码了。

具体代码

Java 代码

public class CommonLoadingVIEw extends FrameLayout {  //加载时显示文字  protected TextVIEw mloadingTextTv;  public Context mContext;  //加载错误视图  protected linearLayout mloadErrorLl;  //加载错误点击事件处理  private LoadingHandler mloadingHandler;  //加载vIEw  private VIEw loadingVIEw;  //加载失败vIEw  private VIEw loadingErrorVIEw;  //数据为空  private VIEw emptyVIEw;  public CommonLoadingVIEw(Context context,AttributeSet attrs) {    this(context,attrs,0);  }  public CommonLoadingVIEw(Context context,AttributeSet attrs,int defStyleAttr) {    super(context,defStyleAttr);    mContext = context;  }  public voID setLoadingHandler(LoadingHandler loadingHandler) {    mloadingHandler = loadingHandler;  }  public voID setLoadingErrorVIEw(VIEw loadingErrorVIEw) {    this.removeVIEwAt(1);    this.loadingErrorVIEw = loadingErrorVIEw;    this.loadingErrorVIEw.setonClickListener(new OnClickListener() {      @OverrIDe      public voID onClick(VIEw v) {        if (mloadingHandler != null) {          mloadingHandler.doRequestData();          CommonLoadingVIEw.this.load();        }      }    });    this.addVIEw(loadingErrorVIEw,1);  }  public voID setLoadingVIEw(VIEw loadingVIEw) {    this.removeVIEwAt(0);    this.loadingVIEw = loadingVIEw;    this.addVIEw(loadingVIEw,0);  }  @OverrIDe  protected voID onFinishInflate() {    super.onFinishInflate();    loadingVIEw = inflate(mContext,R.layout.common_loading_vIEw,null);    loadingErrorVIEw = inflate(mContext,R.layout.network_layout,null);    emptyVIEw = inflate(mContext,R.layout.empty_layout,null);    this.addVIEw(loadingVIEw);    this.addVIEw(loadingErrorVIEw);    this.addVIEw(emptyVIEw);    loadingErrorVIEw.setVisibility(GONE);    emptyVIEw.setVisibility(GONE);    initVIEw(this);  }  public voID setMessage(String message) {    mloadingTextTv.setText(message);  }  private voID initVIEw(VIEw rootVIEw) {    mloadingTextTv = (TextVIEw) rootVIEw.findVIEwByID(R.ID.loading_text_tv);    mloadErrorLl = (linearLayout) rootVIEw.findVIEwByID(R.ID.load_error_ll);    mloadErrorLl.setonClickListener(new OnClickListener() {      @OverrIDe      public voID onClick(VIEw v) {        if (mloadingHandler != null) {          CommonLoadingVIEw.this.load();          mloadingHandler.doRequestData();        }      }    });  }  public voID load(){    loadingVIEw.setVisibility(VISIBLE);    loadingErrorVIEw.setVisibility(GONE);    emptyVIEw.setVisibility(GONE);  }  public voID load(String message){    mloadingTextTv.setText(message);    loadingVIEw.setVisibility(VISIBLE);    loadingErrorVIEw.setVisibility(GONE);    emptyVIEw.setVisibility(GONE);  }  public voID loadSuccess(){    this.loadSuccess(false);  }  public voID loadSuccess(boolean isEmpty){    loadingVIEw.setVisibility(GONE);    loadingErrorVIEw.setVisibility(GONE);    if (isEmpty) {      emptyVIEw.setVisibility(VISIBLE);    }else{      emptyVIEw.setVisibility(GONE);    }  }  public voID loadError(){    loadingVIEw.setVisibility(GONE);    loadingErrorVIEw.setVisibility(VISIBLE);  }  public interface LoadingHandler{    voID doRequestData();  }}

使用

基本使用

几个基本的 load loadError loadSucccess方法的使用。

public class defaultviewActivity extends AppCompatActivity {  protected ListVIEw mListVIEw;  protected CommonLoadingVIEw mloadingVIEw;  private List<String> mList = new ArrayList<>();  ArrayAdapter adapter;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    super.setContentVIEw(R.layout.activity_default_vIEw);    initVIEw();  }  private voID initVIEw() {    mListVIEw = (ListVIEw) findVIEwByID(R.ID.ListVIEw);    mloadingVIEw = (CommonLoadingVIEw) findVIEwByID(R.ID.loadingVIEw);    mloadingVIEw.load();    //设置点击错误视图重新加载事件    mloadingVIEw.setLoadingHandler(new CommonLoadingVIEw.LoadingHandler() {      @OverrIDe      public voID doRequestData() {        mloadingVIEw.postDelayed(new Runnable() {          @OverrIDe          public voID run() {            for (int i = 1; i <=20 ; i++) {              mList.add(i+"");            }            adapter = new ArrayAdapter(defaultviewActivity.this,androID.R.layout.simple_List_item_1,androID.R.ID.text1,mList);            mListVIEw.setAdapter(adapter);            mloadingVIEw.loadSuccess(false);          }        },2500);      }    });    //模拟网络错误,加载失败    mloadingVIEw.postDelayed(new Runnable() {      @OverrIDe      public voID run() {        mloadingVIEw.loadError();      }    },2500);  }}

自定义视图 使用

只需要把自己自定义的vIEw调用set方法设置进去即可。

this.mloadingVIEw.setLoadingVIEw(loadingVIEw);this.mloadingVIEw.setLoadingErrorVIEw(loadingErrorVIEw);
public class CustomVIEwActivity extends AppCompatActivity {  protected ListVIEw mListVIEw;  protected CommonLoadingVIEw mloadingVIEw;  private List<String> mList = new ArrayList<>();  ArrayAdapter adapter;  @OverrIDe  protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    super.setContentVIEw(R.layout.activity_default_vIEw);    initVIEw();  }  private voID initVIEw() {    mListVIEw = (ListVIEw) findVIEwByID(R.ID.ListVIEw);    mloadingVIEw = (CommonLoadingVIEw) findVIEwByID(R.ID.loadingVIEw);    //设置自定义视图    Progressbar progressbar = new Progressbar(this);    this.mloadingVIEw.setLoadingVIEw(progressbar);    TextVIEw textVIEw = new TextVIEw(this);    textVIEw.setText("加载失败...");    this.mloadingVIEw.setLoadingErrorVIEw(textVIEw);    mloadingVIEw.load();    //设置点击错误视图重新加载事件    mloadingVIEw.setLoadingHandler(new CommonLoadingVIEw.LoadingHandler() {      @OverrIDe      public voID doRequestData() {        mloadingVIEw.postDelayed(new Runnable() {          @OverrIDe          public voID run() {            for (int i = 1; i <=20 ; i++) {              mList.add(i+"");            }            adapter = new ArrayAdapter(CustomVIEwActivity.this,2500);  }}

至于具体的布局和样式文件就不贴了,主要是实现思路,代码

下载请参考源码下载 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android 自定义通用的loadingview实现代码全部内容,希望文章能够帮你解决Android 自定义通用的loadingview实现代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存