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);
}
}