1.获取全局上下文
2.加载view的方法
3.初始化view
4.懒加载
5.跳转
6.刷新loading
package com.huading.myvolley.base;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.huading.myvolley.widget.LoadingDialog;
/**
* 作者:LHZ on 2017/5/25 10:44
* 界面:
*/
public abstract class BaseFragment extends Fragment {
private static final String TAG = BaseFragment.class.getSimpleName();
// 加载进度条
public LoadingDialog mLoadingDialog = null;
// 第一次用户可见
private boolean isFirstVisible = true;
// 第一次用户不可见
private boolean isFirstInvisible = true;
// 是否已经加载view
private boolean isPrepared;
// 全局
public Activity mActivity;
/**
* 获得全局的
*
* @param context
*/
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.mActivity = (Activity) context;
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
if (getContentViewLayoutID() != 0) {
return inflater.inflate(getContentViewLayoutID(), null);
} else {
return super.onCreateView(inflater, container, savedInstanceState);
}
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initViewsAndEvents(view);
}
// 加载view
protected abstract int getContentViewLayoutID();
// 初始化view
protected abstract void initViewsAndEvents(View view);
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initPrepare();
}
// 是否已经加载view
private synchronized void initPrepare() {
if (isPrepared) {
onFirstUserVisible();
} else {
isPrepared = true;
}
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
if (isFirstVisible) {
isFirstVisible = false;
initPrepare();
} else {
onUserVisible();
}
} else {
if (isFirstInvisible) {
isFirstInvisible = false;
onFirstUserInvisible();
} else {
onUserInvisible();
}
}
}
// 第一次用户可见 加载数据
protected abstract void onFirstUserVisible();
// 用户可见 开启动画
protected abstract void onUserVisible();
// 第一次用户不可见
private void onFirstUserInvisible() {
}
// 用户不可见 暂停动画
protected abstract void onUserInvisible();
@Override
public void onDestroy() {
DestroyViewAndThing();
super.onDestroy();
}
// 销毁
protected abstract void DestroyViewAndThing();
protected void readyGo(Class<?> clazz) {
Intent intent = new Intent(getActivity(), clazz);
startActivity(intent);
}
protected void readyGo(Class<?> clazz, Bundle bundle) {
Intent intent = new Intent(getActivity(), clazz);
if (null != bundle) {
intent.putExtras(bundle);
}
startActivity(intent);
}
protected void readyGoForResult(Class<?> clazz, int requestCode) {
Intent intent = new Intent(getActivity(), clazz);
startActivityForResult(intent, requestCode);
}
protected void readyGoForResult(Class<?> clazz, int requestCode, Bundle bundle) {
Intent intent = new Intent(getActivity(), clazz);
if (null != bundle) {
intent.putExtras(bundle);
}
startActivityForResult(intent, requestCode);
}
/**
* 显示刷新Loadding
*/
public void showLoadingDialog(String message) {
try {
mLoadingDialog = LoadingDialog.createDialog(mActivity);
mLoadingDialog.setTitle(null);
mLoadingDialog.setCancelable(false);
mLoadingDialog.setMessage(message);
mLoadingDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
hideLoadingDialog();
}
return true;
}
});
mLoadingDialog.show();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 隐藏刷新Loadding
*/
public void hideLoadingDialog() {
try {
if (mLoadingDialog != null) {
if (mLoadingDialog.animation != null) {
mLoadingDialog.animation.reset();
}
mLoadingDialog.dismiss();
mLoadingDialog = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}