package cn.bingoogolapple.media.ui.activity; import android.content.Intent; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.StringRes; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; import android.view.View; import cn.bingoogolapple.media.App; import cn.bingoogolapple.media.R; import cn.bingoogolapple.media.util.KeyboardUtil; import cn.bingoogolapple.titlebar.BGATitlebar; import cn.pedant.SweetAlert.SweetAlertDialog; /** * 作者:王浩 邮件:bingoogolapple@gmail.com * 创建时间:15/9/2 下午5:07 * 描述: */ public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { protected String TAG; protected App mApp; protected BGATitlebar mTitlebar; private SweetAlertDialog mLoadingDialog; protected LocalBroadcastManager mLocalBroadcastManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TAG = this.getClass().getSimpleName(); mApp = App.getInstance(); mApp.addActivity(this); mLocalBroadcastManager = LocalBroadcastManager.getInstance(this); initView(savedInstanceState); setListener(); processLogic(savedInstanceState); } /** * 查找View * * @param id 控件的id * @param <VT> View类型 * @return */ protected <VT extends View> VT getViewById(@IdRes int id) { return (VT) findViewById(id); } /** * 初始化布局以及View控件 */ protected abstract void initView(Bundle savedInstanceState); /** * 给View控件添加事件监听器 */ protected abstract void setListener(); /** * 处理业务逻辑,状态恢复等操作 * * @param savedInstanceState */ protected void processLogic(Bundle savedInstanceState) { } /** * 需要处理点击事件时,重写该方法 * * @param v */ public void onClick(View v) { } @Override protected void onDestroy() { super.onDestroy(); mApp.removeActivity(this); } @Override public void onBackPressed() { backward(); } /** * 跳转到下一个Activity,并且销毁当前Activity * * @param cls 下一个Activity的Class */ public void forwardAndFinish(Class<?> cls) { forward(cls); finish(); } /** * 跳转到下一个Activity,不销毁当前Activity * * @param cls 下一个Activity的Class */ public void forward(Class<?> cls) { KeyboardUtil.closeKeyboard(this); startActivity(new Intent(this, cls)); executeForwardAnim(); } public void forwardAndFinish(Intent intent) { forward(intent); finish(); } public void forward(Intent intent) { startActivity(intent); executeForwardAnim(); } /** * 执行跳转到下一个Activity的动画 */ public void executeForwardAnim() { overridePendingTransition(R.anim.activity_forward_enter, R.anim.activity_forward_exit); } /** * 回到上一个Activity,并销毁当前Activity */ public void backward() { KeyboardUtil.closeKeyboard(this); finish(); executeBackwardAnim(); } /** * 回到上一个Activity,并销毁当前Activity(应用场景:欢迎、登录、注册这三个界面) * * @param cls 上一个Activity的Class */ public void backwardAndFinish(Class<?> cls) { KeyboardUtil.closeKeyboard(this); startActivity(new Intent(this, cls)); executeBackwardAnim(); finish(); } /** * 执行回到到上一个Activity的动画 */ public void executeBackwardAnim() { overridePendingTransition(R.anim.activity_backward_enter, R.anim.activity_backward_exit); } /** * 显示加载对话框 * * @param resId */ public void showLoadingDialog(@StringRes int resId) { if (mLoadingDialog == null) { mLoadingDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE); mLoadingDialog.setCancelable(false); } mLoadingDialog.setTitle(resId); mLoadingDialog.show(); } public void showLoadingDialog(String msg) { if (mLoadingDialog == null) { mLoadingDialog = new SweetAlertDialog(this, SweetAlertDialog.PROGRESS_TYPE); mLoadingDialog.setCancelable(false); } mLoadingDialog.setTitleText(msg); mLoadingDialog.show(); } /** * 隐藏加载对话框 */ public void dismissLoadingDialog() { if (mLoadingDialog != null && mLoadingDialog.isShowing()) { mLoadingDialog.dismiss(); } } }