/* * 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; } }