我们在进行网络加载的时候,有时候需要一个能覆盖界面的loading界面,比如第一次进应用,加载数据的时候,需要这么个loading页面,体验比较友好,再比如第一次进来,数据加载失败了,或者无网络了,需要有个友好的提示,空空荡荡的效果不好,有时候点击无网络图片可以重新刷新,所以写了个通用的LoadingView。


看效果

使用方法

1、 在布局里面使用我们的自定义LoadingView

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.picasso.loadview.MainActivity">

    <ImageView  android:id="@+id/iv_bg" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" />

    <com.picasso.loadview.LoadingView  android:id="@+id/loading_view" android:layout_width="match_parent" android:layout_height="match_parent" />

</RelativeLayout>

2、根据不同情况调用 
2.1 正在加载

mLoadView.setStatue(LoadingView.LOADING);

2.2无网络情况

mLoadView.setStatue(LoadingView.NO_NETWORK);

2.3无数据情况

mLoadView.setStatue(LoadingView.NO_DATA);

2.4 无网络或者加载失败后,如果需要点击界面重新刷新, 
则这里需要回调一个refresh方法

mLoadView.setRefrechListener(this);

2.5 loadingview消失

mLoadView.setStatue(LoadingView.GONE);

下面写了个demo,模拟效果用。

public class MainActivity extends AppCompatActivity implements LoadingView.OnRefreshListener {

    @Bind(R.id.iv_bg)
    ImageView ivBg;
    @Bind(R.id.loading_view)
    LoadingView mLoadView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        mLoadView.setStatue(LoadingView.LOADING);
        mLoadView.setRefrechListener(this);

        //刷新3s后模拟无网络
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                mLoadView.setStatue(LoadingView.NO_NETWORK);
            }
        }, 5 * 1000);
    }

    //刷新界面方法
    @Override
    public void refresh() {
        // TODO Auto-generated method stub
        Toast.makeText(this, "refresh", Toast.LENGTH_SHORT).show();

        //刷新3s后模拟刷新成功
        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                mLoadView.setStatue(LoadingView.GONE);
                Picasso.with(MainActivity.this).load(R.mipmap.jozomu).into(ivBg);
            }
        }, 3 * 1000);

    }
}

github地址:LoadView