package com.jumige.android.ui.template.base;
import android.content.res.Resources;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils;
import android.view.InflateException;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.TextView;
import com.jumige.android.common.utils.ViewUtil;
import com.jumige.android.ui.template.utils.IActivityLife;
import com.jumige.android.ui.template.appRunning.AppRunningInBackground;
import com.jumige.android.ui.template.utils.AcitvityHelper;
import java.util.ArrayList;
/**
* Author: cyning
* Date : 2015.04.22
* Time : 下午6:31
* Desc : 所有的Acvity都要继承的方法,这就说,这个类是所有Activity的基类
*/
public class BaseActivity extends ActionBarActivity {
private boolean isShowBackIcon = false;
public static ArrayList<IActivityLife> mSubscribers = new ArrayList<>();
private DroidApplication app = null;
private AppRunningInBackground appRunningInBackground;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
for(IActivityLife mLife :mSubscribers){
mLife.onCreate(this);
}
if (getApplication() != null) {
app = (DroidApplication) getApplication();
}else{
throw new IllegalStateException("no Application");
}
appRunningInBackground = AppRunningInBackground.getInstance(this);
appRunningInBackground.onCreate();
app.addActivity(this);
supportRequestWindowFeature(Window.FEATURE_PROGRESS);
setContentView();
setupViews();
}
protected void setupActionbarWithUp(String title) {
ActionBar mActionBar = getSJBActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);// 显示ActionBar的返回箭头
mActionBar.setDisplayShowTitleEnabled(true);
mActionBar.setHomeButtonEnabled(true); // 设置ActionBar可点击返回
mActionBar.setDisplayShowHomeEnabled(false);
if (!TextUtils.isEmpty(title)) {
mActionBar.setTitle(title);
}
}
protected void setupActionbarWithUp(int titleID) {
String title = getString(titleID);
setupActionbarWithUp(title);
}
protected ActionBar getSJBActionBar() {
return getSupportActionBar();
}
protected void setupActionBarBackgound() {
// change ActionBar color just if an ActionBar is available
// 都弃用,改用theme解决
Drawable whiteDrawable = new ColorDrawable(0xFF3C3D4E);
// Drawable bottomDrawable = getResources().getDrawable(R.drawable.actionbar_bottom);
// LayerDrawable oldLd = new LayerDrawable(new Drawable[]{whiteDrawable, bottomDrawable});
// getSupportActionBar().setBackgroundDrawable(oldLd);
//Change Title Color
int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
if (actionBarTitleId > 0) {
TextView title = (TextView) findViewById(actionBarTitleId);
if (title != null) {
title.setTextColor(getResources().getColor(android.R.color.black));
}
}
}
protected void setContentView() {
}
protected void setupViews() {
}
@Override
protected void onResume() {
super.onResume();
for(IActivityLife mLife :mSubscribers){
mLife.onResume(this);
}
}
@Override
protected void onPause() {
super.onPause();
for(IActivityLife mLife :mSubscribers){
mLife.onPause(this);
}
}
public void showActionBarProgressBar(boolean isShow) {
//设置actionbar上面显示进度条,true表示显示,如果是false表示不显示
setSupportProgressBarIndeterminateVisibility(isShow);
}
/**
* 显示ActionBar上面的返回键
*/
public void showBackIcon() {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
isShowBackIcon = true;
}
public void setActionBarTitle(String title) {
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
isShowBackIcon = true;
actionBar.setTitle(title);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == android.R.id.home) {
if (goForward())
finish();
}
return super.onOptionsItemSelected(item);
}
/**
* 在goForward前做一下判断
* <li>true 就finish</li>
* <li>true 就不finish</li>
*
* @return
*/
protected boolean goForward() {
return true;
}
@SuppressWarnings("unchecked")
public <T extends View> T v(int id) {
View view = ViewUtil.find(this, id);
if (view == null) {
throw new InflateException();
}
return (T) view;
}
public void hideActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.hide();
}
public void showActionBar() {
ActionBar actionBar = getSupportActionBar();
actionBar.show();
}
/**
* 返回这个activity的
*
* @return
*/
public BaseActivity getThisActivity() {
return this;
}
@Override
protected void onStop() {
super.onStop();
if (appRunningInBackground != null){
appRunningInBackground.onStop();
}
for(IActivityLife mLife :mSubscribers){
mLife.onStop(this);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (app != null) {
app.removeActivity(this);
}
for(IActivityLife mLife :mSubscribers){
mLife.onDestroy(this);
}
}
public static void addSubscriber(IActivityLife _activityLife){
mSubscribers.add(_activityLife);
}
/**
* 退出时默认特效
*
* @return
*/
public boolean isExitAnimation() {
return true;
}
public void exitWithAnimation() {
if (isExitAnimation()) {
AcitvityHelper.finishWithAnimationOut(this);
}
}
/**
* 退出时使用自定义特效
*/
public void exitWithAnimation(int enterAnim, int exitAnim) {
if (isExitAnimation()) {
AcitvityHelper.finishWithAnimation(this, enterAnim, exitAnim);
}
}
}