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