package com.gzsll.hupu.widget; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import com.gzsll.hupu.R; import com.gzsll.hupu.widget.state.ContentState; import com.gzsll.hupu.widget.state.EmptyState; import com.gzsll.hupu.widget.state.ErrorState; import com.gzsll.hupu.widget.state.NonState; import com.gzsll.hupu.widget.state.ProgressState; import com.gzsll.hupu.widget.state.ShowState; /** * Created by sll on 2015/3/13. */ public class ProgressFragment extends Fragment { public boolean isPrepare = false; //Override this method to change content view public View onCreateContentView(LayoutInflater inflater) { return null; } //Override this method to change error view public View onCreateContentErrorView(LayoutInflater inflater) { return null; } public View onCreateContentEmptyView(LayoutInflater inflater) { return null; } public View onCreateProgressView(LayoutInflater inflater) { return null; } private View mContentView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ViewGroup main = (ViewGroup) inflater.inflate(R.layout.epf_layout, container, false); View content = onCreateContentView(inflater); View error = onCreateContentErrorView(inflater); View empty = onCreateContentEmptyView(inflater); View progress = onCreateProgressView(inflater); replaceViewById(main, R.id.epf_content, content); replaceViewById(main, R.id.epf_error, error); replaceViewById(main, R.id.epf_empty, empty); replaceViewById(main, R.id.epf_progress, progress); mContentView = main; mAnimIn = onCreateAnimationIn(); mAnimOut = onCreateAnimationOut(); initStates(); isPrepare = true; return main; } public Animation onCreateAnimationIn() { return AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in); } public Animation onCreateAnimationOut() { return AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_out); } private void replaceViewById(ViewGroup container, int viewId, View newView) { if (newView == null) { return; } newView.setId(viewId); View oldView = container.findViewById(viewId); int index = container.indexOfChild(oldView); container.removeView(oldView); container.addView(newView, index); newView.setVisibility(View.GONE); } private ShowState mEmptyState, mProgressState, mErrorState, mContentState, mLoginState, mCollectState; private Animation mAnimIn, mAnimOut; private void initStates() { mEmptyState = new EmptyState(); mProgressState = new ProgressState(); mErrorState = new ErrorState(); mContentState = new ContentState(); initState(mEmptyState); initState(mProgressState); initState(mErrorState); initState(mContentState); } private void initState(ShowState state) { state.setAnimIn(mAnimIn); state.setAnimOut(mAnimOut); state.setFragmentView(mContentView); } private ShowState mLastState = new NonState(); public void showContent(boolean animate) { if (mLastState == mContentState) { return; } mContentState.show(animate); mLastState.dismiss(animate); mLastState = mContentState; } public void showEmpty(boolean animate) { if (mLastState == mEmptyState) { return; } mEmptyState.show(animate); mLastState.dismiss(animate); mLastState = mEmptyState; } public void showError(boolean animate) { if (mLastState == mErrorState) { return; } mErrorState.show(animate); mLastState.dismiss(animate); mLastState = mErrorState; } public void showProgress(boolean animate) { if (mLastState == mProgressState) { return; } mProgressState.show(animate); mLastState.dismiss(animate); mLastState = mProgressState; } }