package com.moral.screen.base;
|
|
import android.content.Context;
|
import android.os.Bundle;
|
import android.support.annotation.Nullable;
|
import android.support.v7.app.AppCompatActivity;
|
import android.util.SparseArray;
|
import android.view.MotionEvent;
|
import android.view.View;
|
import android.view.inputmethod.InputMethodManager;
|
import android.widget.TextView;
|
import com.moral.andbrickslib.utils.ActivityManager;
|
import com.moral.andbrickslib.utils.ToastUtils;
|
import com.moral.andbrickslib.utils.dialog.SweetDialogUtils;
|
import com.moral.andbrickslib.views.EmptyLayout;
|
import com.moral.andbrickslib.views.SweetAlert.SweetAlertDialog;
|
import com.moral.screen.R;
|
import com.moral.screen.httputils.HttpUtils;
|
|
|
/**
|
* Activity基类
|
* Created by haijiang on 2017/5/2.
|
*/
|
|
public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener {
|
/**
|
* 头部导航栏
|
*/
|
protected TextView tv_left;
|
protected TextView tv_right, tv_title;
|
/**
|
* 多状态界面
|
*/
|
protected EmptyLayout mEmptyLayout;
|
/**
|
* 加载进度条
|
*/
|
protected SweetAlertDialog progressDialog;
|
/**
|
* 吐司工具类
|
*/
|
protected ToastUtils mToatUtils;
|
protected HttpUtils mHttpUtils;
|
|
@Override
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
ActivityManager.getActivityManager().addActivity(this);
|
Bundle extras = getIntent().getExtras();
|
if (null != extras) {
|
getBundleExtras(extras);
|
}
|
progressDialog = SweetDialogUtils.showProgressDialog(this, "正在努力加载...", R.color.colorAccent);
|
|
mToatUtils = new ToastUtils(this);
|
mHttpUtils = new HttpUtils(this);
|
|
mViews = new SparseArray<>();
|
setContentView(getLayoutId());
|
initViews();
|
initData();
|
initListener();
|
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
}
|
|
/**
|
* 初始化头部导航
|
*/
|
protected void initTopBar() {
|
tv_left = findView(R.id.tv_left);
|
tv_right = findView(R.id.tv_right);
|
tv_title = findView(R.id.tv_title);
|
tv_left.setOnClickListener(this);
|
tv_right.setOnClickListener(this);
|
}
|
|
/**
|
* 初始化多状态界面
|
*/
|
protected void initMulitiStatusView(int id) {
|
mEmptyLayout = findView(id);
|
/**
|
* 错误页面刷新
|
*/
|
mEmptyLayout.setOnLayoutClickListener(new View.OnClickListener() {
|
@Override
|
public void onClick(View v) {
|
setLoadingView();
|
onErrorPageClick();
|
}
|
});
|
}
|
|
@Override
|
protected void onResume() {
|
super.onResume();
|
}
|
|
@Override
|
protected void onPause() {
|
super.onPause();
|
}
|
|
@Override
|
protected void onDestroy() {
|
super.onDestroy();
|
ActivityManager.getActivityManager().finishActivity(this);
|
}
|
|
private SparseArray<View> mViews;
|
|
protected abstract void getBundleExtras(Bundle extras);
|
|
protected abstract int getLayoutId();
|
|
protected abstract void initViews();
|
|
protected abstract void initListener();
|
|
protected abstract void initData();
|
|
protected abstract void processClick(View view);
|
|
@Override
|
public void onClick(View view) {
|
processClick(view);
|
}
|
|
/**
|
* 界面加载出错重载
|
*/
|
protected abstract void onErrorPageClick();
|
|
/**
|
* 空界面
|
*/
|
public void setEmptyView() {
|
if (mEmptyLayout == null) {
|
return;
|
}
|
mEmptyLayout.setErrorType(EmptyLayout.NODATA);
|
}
|
|
/**
|
* 错误界面
|
*/
|
public void setErrorView() {
|
if (mEmptyLayout == null) {
|
return;
|
}
|
mEmptyLayout.setErrorType(EmptyLayout.NETWORK_ERROR);
|
}
|
|
/**
|
* 我的界面
|
*/
|
public void setNormalView() {
|
if (mEmptyLayout == null) {
|
return;
|
}
|
mEmptyLayout.dismiss();
|
}
|
|
/**
|
* 加载中界面
|
*/
|
public void setLoadingView() {
|
if (mEmptyLayout == null) {
|
return;
|
}
|
mEmptyLayout.setErrorType(EmptyLayout.NETWORK_LOADING);
|
}
|
|
/**
|
* 代替findViewById
|
*
|
* @param viewId
|
* @param <E>
|
* @return
|
*/
|
public <E extends View> E findView(int viewId) {
|
E view = (E) mViews.get(viewId);
|
if (view == null) {
|
view = (E) findViewById(viewId);
|
mViews.put(viewId, view);
|
}
|
return view;
|
}
|
|
@Override
|
public boolean onTouchEvent(MotionEvent event) {
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
if (event.getAction() == MotionEvent.ACTION_DOWN) {
|
if (BaseActivity.this.getCurrentFocus() != null) {
|
if (BaseActivity.this.getCurrentFocus().getWindowToken() != null) {
|
imm.hideSoftInputFromWindow(BaseActivity.this.getCurrentFocus().getWindowToken(),
|
InputMethodManager.HIDE_NOT_ALWAYS);
|
}
|
}
|
}
|
return super.onTouchEvent(event);
|
}
|
|
/**
|
* 解决getActivity为null
|
*
|
* @param outState
|
*/
|
@Override
|
public void onSaveInstanceState(Bundle outState) {
|
super.onSaveInstanceState(outState);
|
if (outState != null) {
|
String FRAGMENTS_TAG = "android:support:fragments";
|
// remove掉保存的Fragment
|
outState.remove(FRAGMENTS_TAG);
|
}
|
}
|
}
|