LoadingPage
package com.example.framework.view;
import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import com.example.framework.R;
public abstract class LoadingPage extends FrameLayout {
private View loadingView;
private View successView;
private View errorView;
private TextView errorTv;
public LoadingPage(Context context) {
super(context);
init(context, null, 0);
}
public LoadingPage(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs, 0);
}
public LoadingPage(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs, 0);
}
private void init(Context context, AttributeSet attrs, int i) {
LayoutInflater inflater = LayoutInflater.from(context);
errorView = inflater.inflate(R.layout.view_error, null);
errorTv = errorView.findViewById(R.id.errorTv);
LayoutParams layoutParams = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
addView(errorView, layoutParams);
successView = inflater.inflate(getSuccessLayoutId(), null);
addView(successView, layoutParams);
loadingView = inflater.inflate(R.layout.view_loading, null);
addView(loadingView, layoutParams);
showSuccessView();
}
protected abstract int getSuccessLayoutId();
public void showLoadingView() {
errorView.setVisibility(GONE);
successView.setVisibility(GONE);
loadingView.setBackgroundColor(Color.WHITE);
loadingView.setVisibility(VISIBLE);
}
public void showErorView() {
errorView.setVisibility(VISIBLE);
successView.setVisibility(GONE);
loadingView.setVisibility(GONE);
}
public void showSuccessView() {
errorView.setVisibility(GONE);
successView.setVisibility(VISIBLE);
loadingView.setVisibility(GONE);
}
public void showTransparentLoadingView() {
errorView.setVisibility(GONE);
successView.setVisibility(VISIBLE);
loadingView.setBackgroundColor(Color.TRANSPARENT);
loadingView.setVisibility(VISIBLE);
}
public void showError(String showInfo) {
showErorView();
errorTv.setText(showInfo);
}
}
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/save"
android:layout_centerInParent="true"
android:id="@+id/save"
></ImageView>
<TextView
android:id="@+id/errorTv"
style="@style/bigTextStyle"
android:layout_below="@+id/save"
android:text="连接超时"
android:textColor="@android:color/holo_red_dark"
android:layout_centerInParent="true"/>
</RelativeLayout>
布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fff"
>
<ProgressBar
android:id="@+id/loadingBar"
android:layout_width="@dimen/dp_50"
android:layout_height="@dimen/dp_50"
android:layout_centerInParent="true"
/>
</RelativeLayout>