package cn.bingoogolapple.weibo.ui.activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.support.annotation.IdRes; import android.support.annotation.StringRes; import android.support.v7.app.AppCompatActivity; import android.view.View; import cn.bingoogolapple.titlebar.BGATitlebar; import cn.bingoogolapple.weibo.App; import cn.bingoogolapple.weibo.R; /** * 作者:王浩 邮件:bingoogolapple@gmail.com * 创建时间:15/7/3 上午1:29 * 描述: */ public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener { protected String TAG; protected App mApp; private ProgressDialog mLoadingDialog; protected BGATitlebar mTitlebar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TAG = this.getClass().getSimpleName(); mApp = App.getInstance(); mApp.addActivity(this); initView(savedInstanceState); setListener(); processLogic(savedInstanceState); } /** * 初始化布局以及View控件 */ protected abstract void initView(Bundle savedInstanceState); /** * 给View控件添加事件监听器 */ protected void setListener() { } /** * 处理业务逻辑,状态恢复等操作 * * @param savedInstanceState */ protected abstract void processLogic(Bundle savedInstanceState); /** * 需要处理点击事件时,重写该方法 * * @param v */ public void onClick(View v) { } @Override protected void onDestroy() { super.onDestroy(); mApp.removeActivity(this); } public void showLoadingDialog(@StringRes int resId) { showLoadingDialog(getString(resId)); } public void showLoadingDialog(CharSequence message) { if (mLoadingDialog == null) { mLoadingDialog = new ProgressDialog(this); mLoadingDialog.setCancelable(false); } mLoadingDialog.setMessage(message); if (!mLoadingDialog.isShowing()) { mLoadingDialog.show(); } } public void dismissLoadingDialog() { if (mLoadingDialog != null && mLoadingDialog.isShowing()) { mLoadingDialog.dismiss(); } } /** * 查找View * * @param id 控件的id * @param <VT> View类型 * @return */ protected <VT extends View> VT getViewById(@IdRes int id) { return (VT) findViewById(id); } /** * 跳转到下一个Activity,并且销毁当前Activity * @param cls 下一个Activity的Class */ public void forwardAndFinish(Class<?> cls) { startActivity(new Intent(this, cls)); executeForwardAnim(); finish(); } /** * 跳转到下一个Activity,不销毁当前Activity * @param cls 下一个Activity的Class */ public void forward(Class<?> cls) { startActivity(new Intent(this, cls)); executeForwardAnim(); } /** * 执行跳转到下一个Activity的动画 */ public void executeForwardAnim() { overridePendingTransition(R.anim.activity_forward_enter, R.anim.activity_forward_exit); } /** * 回到上一个Activity,并销毁当前Activity */ public void backward() { finish(); executeBackwardAnim(); } /** * 执行回到到上一个Activity的动画 */ public void executeBackwardAnim() { overridePendingTransition(R.anim.activity_backward_enter, R.anim.activity_backward_exit); } }