Java tutorial
/** * Copyright 2016 JustWayward Team * <p> * 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 * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * 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.justwayward.reader.base; import android.annotation.TargetApi; import android.content.Context; import android.graphics.Color; import android.os.Build; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import android.view.View; import android.view.WindowManager; import com.justwayward.reader.R; import com.justwayward.reader.ReaderApplication; import com.justwayward.reader.component.AppComponent; import com.justwayward.reader.utils.SharedPreferencesUtil; import com.justwayward.reader.utils.StatusBarCompat; import com.justwayward.reader.view.loadding.CustomDialog; import butterknife.ButterKnife; public abstract class BaseActivity extends AppCompatActivity { public Toolbar mCommonToolbar; protected Context mContext; protected int statusBarColor = 0; protected View statusBarView = null; private boolean mNowMode; private CustomDialog dialog;//? @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutId()); if (statusBarColor == 0) { statusBarView = StatusBarCompat.compat(this, ContextCompat.getColor(this, R.color.colorPrimaryDark)); } else if (statusBarColor != -1) { statusBarView = StatusBarCompat.compat(this, statusBarColor); } transparent19and20(); mContext = this; ButterKnife.bind(this); setupActivityComponent(ReaderApplication.getsInstance().getAppComponent()); mCommonToolbar = ButterKnife.findById(this, R.id.common_toolbar); if (mCommonToolbar != null) { initToolBar(); setSupportActionBar(mCommonToolbar); } initDatas(); configViews(); mNowMode = SharedPreferencesUtil.getInstance().getBoolean(Constant.ISNIGHT); } 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); } } @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void toolbarSetElevation(float elevation) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mCommonToolbar.setElevation(elevation); } } @Override protected void onResume() { super.onResume(); if (SharedPreferencesUtil.getInstance().getBoolean(Constant.ISNIGHT, false) != mNowMode) { if (SharedPreferencesUtil.getInstance().getBoolean(Constant.ISNIGHT, false)) { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); } else { AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); } recreate(); } } @Override protected void onDestroy() { super.onDestroy(); ButterKnife.unbind(this); dismissDialog(); } public abstract int getLayoutId(); protected abstract void setupActivityComponent(AppComponent appComponent); public abstract void initToolBar(); public abstract void initDatas(); /** * ?????? */ public abstract void configViews(); protected void gone(final View... views) { if (views != null && views.length > 0) { for (View view : views) { if (view != null) { view.setVisibility(View.GONE); } } } } protected void visible(final View... views) { if (views != null && views.length > 0) { for (View view : views) { if (view != null) { view.setVisibility(View.VISIBLE); } } } } protected boolean isVisible(View view) { return view.getVisibility() == View.VISIBLE; } // dialog public CustomDialog getDialog() { if (dialog == null) { dialog = CustomDialog.instance(this); dialog.setCancelable(true); } return dialog; } public void hideDialog() { if (dialog != null) dialog.hide(); } public void showDialog() { getDialog().show(); } public void dismissDialog() { if (dialog != null) { dialog.dismiss(); dialog = null; } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { finish(); return true; } return super.onOptionsItemSelected(item); } protected void hideStatusBar() { WindowManager.LayoutParams attrs = getWindow().getAttributes(); attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(attrs); if (statusBarView != null) { statusBarView.setBackgroundColor(Color.TRANSPARENT); } } protected void showStatusBar() { WindowManager.LayoutParams attrs = getWindow().getAttributes(); attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(attrs); if (statusBarView != null) { statusBarView.setBackgroundColor(statusBarColor); } } }