/*
* Copyright (c) 2015 [1076559197@qq.com | tchen0707@gmail.com]
*
* Licensed under the Apache License, Version 2.0 (the "License”);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.yuyh.sprintnba.base;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.DisplayMetrics;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.WindowManager;
import com.yuyh.sprintnba.R;
import com.yuyh.sprintnba.utils.StatusBarCompat;
import com.yuyh.sprintnba.widget.LoadingDialog;
import butterknife.ButterKnife;
public abstract class BaseAppCompatActivity extends AppCompatActivity {
/**
* Screen information
*/
protected int mScreenWidth = 0;
protected int mScreenHeight = 0;
protected float mScreenDensity = 0.0f;
/**
* context
*/
protected Context mContext = null;
protected Toolbar mToolbar;
public LoadingDialog mLoadingDialog;
protected boolean statusBarCompat = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
overridePendingTransition(R.anim.right_in, R.anim.right_out);
super.onCreate(savedInstanceState);
mContext = this;
BaseAppManager.getInstance().addActivity(this);
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
mScreenDensity = displayMetrics.density;
mScreenHeight = displayMetrics.heightPixels;
mScreenWidth = displayMetrics.widthPixels;
if (statusBarCompat) {
StatusBarCompat.compat(this, ContextCompat.getColor(this, R.color.colorPrimaryDark));
transparent19and20();
}
if (getContentViewLayoutID() != 0) {
setContentView(getContentViewLayoutID());
} else {
throw new IllegalArgumentException("You must return a right contentView layout resource Id");
}
initViewsAndEvents();
}
protected void transparent19and20() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
&& Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
ButterKnife.inject(this);
mToolbar = ButterKnife.findById(this, R.id.common_toolbar);
if (mToolbar != null) {
setSupportActionBar(mToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
public void initToolbar(Toolbar toolbar) {
mToolbar = toolbar;
if (mToolbar != null) {
setSupportActionBar(mToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
}
@Override
public void finish() {
super.finish();
ButterKnife.reset(this);
BaseAppManager.getInstance().removeActivity(this);
overridePendingTransition(R.anim.right_in, R.anim.right_out);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
/**
* bind layout resource file
*
* @return id of layout resource
*/
protected abstract int getContentViewLayoutID();
/**
* init all views and add events
*/
protected abstract void initViewsAndEvents();
/**
* startActivity
*
* @param clazz
*/
protected void readyGo(Class<?> clazz) {
Intent intent = new Intent(this, clazz);
startActivity(intent);
}
/**
* startActivity with bundle
*
* @param clazz
* @param bundle
*/
protected void readyGo(Class<?> clazz, Bundle bundle) {
Intent intent = new Intent(this, clazz);
if (null != bundle) {
intent.putExtras(bundle);
}
startActivity(intent);
}
/**
* startActivityForResult
*
* @param clazz
* @param requestCode
*/
protected void readyGoForResult(Class<?> clazz, int requestCode) {
Intent intent = new Intent(this, clazz);
startActivityForResult(intent, requestCode);
}
/**
* startActivityForResult with bundle
*
* @param clazz
* @param requestCode
* @param bundle
*/
protected void readyGoForResult(Class<?> clazz, int requestCode, Bundle bundle) {
Intent intent = new Intent(this, clazz);
if (null != bundle) {
intent.putExtras(bundle);
}
startActivityForResult(intent, requestCode);
}
/**
* 显示刷新Loadding
*/
public void showLoadingDialog() {
try {
mLoadingDialog = LoadingDialog.createDialog(this);
mLoadingDialog.setTitle(null);
mLoadingDialog.setCancelable(false);
mLoadingDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
hideLoadingDialog();
}
return true;
}
});
if (!isFinishing()) {
mLoadingDialog.show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 隐藏刷新Loadding
*/
public void hideLoadingDialog() {
try {
if (mLoadingDialog != null) {
if (mLoadingDialog.animation != null) {
mLoadingDialog.animation.reset();
}
mLoadingDialog.dismiss();
mLoadingDialog = null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public Toolbar getToolbar() {
return mToolbar;
}
}