package com.moral.yunfushao.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.StatusBarUtil; 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.yunfushao.R; import com.moral.yunfushao.common.WXConstants; import com.tencent.mm.opensdk.modelmsg.SendAuth; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.WXAPIFactory; /** * 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; public IWXAPI iwxapi; @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); mViews = new SparseArray<>(); setContentView(getLayoutId()); initViews(); initListener(); initData(); StatusBarUtil.setStatusBarDrawable(BaseActivity.this, R.mipmap.bg_head); iwxapi = WXAPIFactory.createWXAPI(this, WXConstants.APP_ID, true); iwxapi.registerApp(WXConstants.APP_ID); } public void sendReq() { final SendAuth.Req req = new SendAuth.Req(); req.scope = "snsapi_userinfo"; req.state = "wechat_sdk_demo_text"; iwxapi.sendReq(req); } /** * 初始化头部导航 */ 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 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 * @return */ public 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); } } }