Java tutorial
/* * Copyright 2015 Rudson Lima * * 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 br.liveo.navigationliveo; import android.app.Activity; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.os.Build; import android.os.Bundle; import android.support.design.internal.ScrimInsetsFrameLayout; import android.support.v4.content.ContextCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.SparseIntArray; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import br.liveo.Model.HelpItem; import br.liveo.Model.Navigation; import br.liveo.adapter.NavigationLiveoAdapter; import br.liveo.interfaces.OnItemClickListener; import br.liveo.interfaces.OnPrepareOptionsMenuLiveo; public abstract class NavigationLiveo extends AppCompatActivity { public TextView userName; public TextView userEmail; public ImageView userPhoto; public ImageView userBackground; private View mHeader; private ListView mList; private Toolbar mToolbar; private TextView mTitleFooter; private ImageView mIconFooter; private TextView mTitleSecondFooter; private ImageView mIconSecondFooter; private int mColorName = 0; private int mColorIcon = 0; private int mNewSelector = 0; private int mColorCounter = 0; private int mColorSeparator = 0; private int mColorSubHeader = 0; private boolean mRemoveHeader = false; private boolean mCustomHeader = false; private int mColorDefault = 0; private int mCurrentPosition = 1; private int mSelectorDefault = 0; private float mElevationToolBar = 15; private boolean mRemoveAlpha = false; private boolean mRemoveColorFilter = false; private List<HelpItem> mHelpItem; private DrawerLayout mDrawerLayout; private RelativeLayout mFooterDrawer; private RelativeLayout mFooterSecondDrawer; private ScrimInsetsFrameLayout mRelativeDrawer; private boolean isSaveInstance = false; private Navigation mNavigation = new Navigation(); private NavigationLiveoAdapter mNavigationAdapter; private ActionBarDrawerToggleCompat mDrawerToggle; private OnItemClickListener mOnItemClickLiveo; private OnPrepareOptionsMenuLiveo mOnPrepareOptionsMenu; public static final String CURRENT_POSITION = "CURRENT_POSITION"; /** * onCreate(Bundle savedInstanceState). * @param savedInstanceState onCreate(Bundle savedInstanceState). */ public abstract void onInt(Bundle savedInstanceState); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mountListNavigation(savedInstanceState); if (savedInstanceState != null) { isSaveInstance = true; setCurrentPosition(savedInstanceState.getInt(CURRENT_POSITION)); } if (savedInstanceState == null) { mOnItemClickLiveo.onItemClick(mCurrentPosition); } setCheckedItemNavigation(mCurrentPosition, true); } private void configureFindView() { mList = (ListView) findViewById(R.id.list); mList.setOnItemClickListener(new DrawerItemClickListener()); mToolbar = (Toolbar) findViewById(R.id.toolbar); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); mDrawerToggle = new ActionBarDrawerToggleCompat(this, mDrawerLayout, mToolbar); mDrawerLayout.setDrawerListener(mDrawerToggle); mTitleFooter = (TextView) this.findViewById(R.id.titleFooter); mIconFooter = (ImageView) this.findViewById(R.id.iconFooter); mTitleSecondFooter = (TextView) this.findViewById(R.id.titleSecondFooter); mIconSecondFooter = (ImageView) this.findViewById(R.id.iconSecondFooter); mFooterDrawer = (RelativeLayout) this.findViewById(R.id.footerDrawer); mFooterSecondDrawer = (RelativeLayout) this.findViewById(R.id.footerSecondDrawer); mRelativeDrawer = (ScrimInsetsFrameLayout) this.findViewById(R.id.relativeDrawer); this.setSupportActionBar(mToolbar); ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeButtonEnabled(true); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { try { if (!mRemoveHeader || !mCustomHeader) { Resources.Theme theme = this.getTheme(); TypedArray typedArray = theme.obtainStyledAttributes(new int[] { android.R.attr.colorPrimary }); mDrawerLayout.setStatusBarBackground(typedArray.getResourceId(0, 0)); } } catch (Exception e) { e.getMessage(); } this.setElevationToolBar(mElevationToolBar); } } @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putInt(CURRENT_POSITION, mCurrentPosition); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle != null) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } } return super.onOptionsItemSelected(item); } @Override public boolean onPrepareOptionsMenu(Menu menu) { if (mOnPrepareOptionsMenu != null) { boolean drawerOpen = mDrawerLayout.isDrawerOpen(mRelativeDrawer); mOnPrepareOptionsMenu.onPrepareOptionsMenu(menu, mCurrentPosition, drawerOpen); } return super.onPrepareOptionsMenu(menu); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); if (mDrawerToggle != null) { mDrawerToggle.syncState(); } } private class ActionBarDrawerToggleCompat extends ActionBarDrawerToggle { public ActionBarDrawerToggleCompat(Activity activity, DrawerLayout drawerLayout, Toolbar toolbar) { super(activity, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close); } @Override public void onDrawerClosed(View view) { supportInvalidateOptionsMenu(); } @Override public void onDrawerOpened(View drawerView) { supportInvalidateOptionsMenu(); } } @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); if (mDrawerToggle != null) { mDrawerToggle.onConfigurationChanged(newConfig); } } private class DrawerItemClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { int mPosition = (!mRemoveHeader || !mCustomHeader ? position - 1 : position); if (position != 0 || (mRemoveHeader && mCustomHeader)) { mOnItemClickLiveo.onItemClick(mPosition); setCurrentPosition(mPosition); setCheckedItemNavigation(mPosition, true); } mDrawerLayout.closeDrawer(mRelativeDrawer); } } private void mountListNavigation(Bundle savedInstanceState) { if (mOnItemClickLiveo == null) { this.createUserDefaultHeader(); this.onInt(savedInstanceState); } } /** * @deprecated */ public void setAdapterNavigation() { if (mOnItemClickLiveo == null) { throw new RuntimeException(getString(R.string.start_navigation_listener)); } this.addHeaderView(); List<Integer> mListExtra = new ArrayList<>(); mListExtra.add(0, mNewSelector); mListExtra.add(1, mColorDefault); mListExtra.add(2, mColorIcon); mListExtra.add(3, mColorName); mListExtra.add(4, mColorSeparator); mListExtra.add(5, mColorCounter); mListExtra.add(6, mSelectorDefault); mListExtra.add(7, mColorSubHeader); List<Boolean> mListRemove = new ArrayList<>(); mListRemove.add(0, mRemoveAlpha); mListRemove.add(1, mRemoveColorFilter); if (mHelpItem != null) { mNavigationAdapter = new NavigationLiveoAdapter(this, NavigationLiveoList.getNavigationAdapter(this, mHelpItem, mNavigation.colorSelected, mNavigation.removeSelector), mListRemove, mListExtra); } else { mNavigationAdapter = new NavigationLiveoAdapter(this, NavigationLiveoList.getNavigationAdapter(this, mNavigation), mListRemove, mListExtra); } mList.setAdapter(mNavigationAdapter); } public void build() { if (mOnItemClickLiveo == null) { throw new RuntimeException(getString(R.string.start_navigation_listener)); } this.addHeaderView(); List<Integer> mListExtra = new ArrayList<>(); mListExtra.add(0, mNewSelector); mListExtra.add(1, mColorDefault); mListExtra.add(2, mColorIcon); mListExtra.add(3, mColorName); mListExtra.add(4, mColorSeparator); mListExtra.add(5, mColorCounter); mListExtra.add(6, mSelectorDefault); mListExtra.add(7, mColorSubHeader); List<Boolean> mListRemove = new ArrayList<>(); mListRemove.add(0, mRemoveAlpha); mListRemove.add(1, mRemoveColorFilter); if (mHelpItem != null) { mNavigationAdapter = new NavigationLiveoAdapter(this, NavigationLiveoList.getNavigationAdapter(this, mHelpItem, mNavigation.colorSelected, mNavigation.removeSelector), mListRemove, mListExtra); } else { mNavigationAdapter = new NavigationLiveoAdapter(this, NavigationLiveoList.getNavigationAdapter(this, mNavigation), mListRemove, mListExtra); } setAdapter(); } private void setAdapter() { if (mNavigationAdapter != null) { mList.setAdapter(mNavigationAdapter); } } /** * Create user default header */ private void createUserDefaultHeader() { mHeader = getLayoutInflater().inflate(R.layout.navigation_list_header, mList, false); userName = (TextView) mHeader.findViewById(R.id.userName); userEmail = (TextView) mHeader.findViewById(R.id.userEmail); userPhoto = (ImageView) mHeader.findViewById(R.id.userPhoto); userBackground = (ImageView) mHeader.findViewById(R.id.userBackground); } private void addHeaderView() { if (!this.mRemoveHeader) { this.mList.addHeaderView(this.mHeader); mRelativeDrawer.setFitsSystemWindows(true); } } /** * Remove Header */ public NavigationLiveo removeHeader() { mRemoveHeader = true; mCustomHeader = true; mRelativeDrawer.setFitsSystemWindows(false); return this; } /** * Remove elevation toolBar */ public NavigationLiveo removeElevationToolBar() { this.mElevationToolBar = 0; return this; } /** * Background ListView * @param color Default color - R.color.nliveo_white */ public NavigationLiveo backgroundList(int color) { this.mSelectorDefault = color; this.mList.setBackgroundResource(color); this.mFooterDrawer.setBackgroundResource(color); this.mFooterSecondDrawer.setBackgroundResource(color); return this; } /** * Background Footer * @param color Default color - R.color.nliveo_white */ public NavigationLiveo footerBackground(int color) { this.mFooterDrawer.setBackgroundResource(color); this.mFooterSecondDrawer.setBackgroundResource(color); return this; } /** * Starting listener navigation * @param listener listener. */ public NavigationLiveo with(OnItemClickListener listener) { setContentView(R.layout.navigation_main_dark); this.mOnItemClickLiveo = listener; configureFindView(); return this; }; /** * Starting listener navigation * @param listener listener. * @param theme theme. */ public NavigationLiveo with(OnItemClickListener listener, int theme) { setContentView( theme == Navigation.THEME_DARK ? R.layout.navigation_main_dark : R.layout.navigation_main_light); this.mOnItemClickLiveo = listener; configureFindView(); return this; }; /** * @param listHelpItem list HelpItem. */ public NavigationLiveo addAllHelpItem(List<HelpItem> listHelpItem) { this.mHelpItem = listHelpItem; return this; } /** * @param listNameItem list name item. */ public NavigationLiveo nameItem(List<String> listNameItem) { this.mNavigation.nameItem = listNameItem; return this; } /** * @param listIcon list icon item. */ public NavigationLiveo iconItem(List<Integer> listIcon) { this.mNavigation.iconItem = listIcon; return this; } /** * @param listHeader list header name item. */ public NavigationLiveo headerItem(List<Integer> listHeader) { this.mNavigation.headerItem = listHeader; return this; } /** * @param sparceCount sparce count item. */ public NavigationLiveo countItem(SparseIntArray sparceCount) { this.mNavigation.countItem = sparceCount; return this; } /** * Set adapter attributes * @param listNameItem list name item. * @param listIcon list icon item. * @param listItensHeader list header name item. * @param sparceItensCount sparce count item. */ public void setNavigationAdapter(List<String> listNameItem, List<Integer> listIcon, List<Integer> listItensHeader, SparseIntArray sparceItensCount) { this.nameItem(listNameItem); this.iconItem(listIcon); this.headerItem(listItensHeader); this.countItem(sparceItensCount); } /** * Set adapter attributes * @param listNameItem list name item. * @param listIcon list icon item. */ public void setNavigationAdapter(List<String> listNameItem, List<Integer> listIcon) { this.nameItem(listNameItem); this.iconItem(listIcon); } /** * hide navigation item * @param listHide list hide item. */ public NavigationLiveo hideItem(List<Integer> listHide) { mNavigation.hideItem = listHide; return this; } /** * show navigation item * @param listShow list show item. */ public void showNavigationItem(List<Integer> listShow) { if (listShow == null) { throw new RuntimeException(getString(R.string.list_hide_item)); } for (int i = 0; i < listShow.size(); i++) { setVisibleItemNavigation(listShow.get(i), true); } } /** * Starting listener navigation * @param onItemClick listener. * @deprecated */ public void setNavigationListener(OnItemClickListener onItemClick) { this.mOnItemClickLiveo = onItemClick; }; /** * First item of the position selected from the list, use method startingPosition * @param position ... * @deprecated */ public void setDefaultStartPositionNavigation(int position) { if (!isSaveInstance) { this.mCurrentPosition = position; } } /** * First item of the position selected from the list * @param position ... */ public NavigationLiveo startingPosition(int position) { if (!isSaveInstance) { this.mCurrentPosition = position; } return this; } /** * Position in the last clicked item list * @param position ... */ private void setCurrentPosition(int position) { this.mCurrentPosition = position; } /** * get position in the last clicked item list */ public int getCurrentPosition() { return this.mCurrentPosition; } /*{ }*/ /** * Select item clicked * @param position item position. * @param checked true to check. */ public void setCheckedItemNavigation(int position, boolean checked) { if (this.mNavigationAdapter == null) { throw new RuntimeException(getString(R.string.start_navigation_listener)); } this.mNavigationAdapter.resetarCheck(); this.mNavigationAdapter.setChecked(position, checked); } /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @deprecated */ public void setFooterInformationDrawer(String title, int icon) { if (title == null) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } if (title.trim().equals("")) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); } }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. */ public NavigationLiveo footerItem(String title, int icon) { if (title == null) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } if (title.trim().equals("")) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); } return this; }; /** * Information footer second list item * @param title item footer name. * @param icon item footer icon. */ public NavigationLiveo footerSecondItem(String title, int icon) { if (title == null) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } if (title.trim().equals("")) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleSecondFooter.setText(title); if (icon == 0) { mIconSecondFooter.setVisibility(View.GONE); } else { mIconSecondFooter.setImageResource(icon); } mFooterSecondDrawer.setVisibility(View.VISIBLE); return this; }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @param colorName item footer name color. * @param colorIcon item footer icon color. * @deprecated */ public void setFooterInformationDrawer(String title, int icon, int colorName, int colorIcon) { if (title == null) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } if (title.trim().equals("")) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (colorName > 0) { mTitleFooter.setTextColor(ContextCompat.getColor(this, colorName)); } if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); if (colorIcon > 0) { mIconFooter.setColorFilter(ContextCompat.getColor(this, colorIcon)); } } }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @param colorName item footer name color. * @param colorIcon item footer icon color. */ public NavigationLiveo footerInformationDrawer(String title, int icon, int colorName, int colorIcon) { if (title == null) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } if (title.trim().equals("")) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (colorName > 0) { mTitleFooter.setTextColor(ContextCompat.getColor(this, colorName)); } if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); if (colorIcon > 0) { mIconFooter.setColorFilter(ContextCompat.getColor(this, colorIcon)); } } return this; }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @deprecated */ public NavigationLiveo setFooterInformationDrawer(int title, int icon) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(getString(title)); if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); } if (mColorDefault > 0) { footerNameColor(mColorDefault); footerIconColor(mColorDefault); } return this; }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. */ public NavigationLiveo footerItem(int title, int icon) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(getString(title)); if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); } if (mColorDefault > 0) { footerNameColor(mColorDefault); footerIconColor(mColorDefault); } return this; }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. */ public NavigationLiveo footerSecondItem(int title, int icon) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleSecondFooter.setText(getString(title)); if (icon == 0) { mIconSecondFooter.setVisibility(View.GONE); } else { mIconSecondFooter.setImageResource(icon); } if (mColorDefault > 0) { footerNameColor(mColorDefault); footerIconColor(mColorDefault); } mFooterSecondDrawer.setVisibility(View.VISIBLE); return this; }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @param colorName item footer name color. * @param colorIcon item footer icon color. * @deprecated */ public void setFooterInformationDrawer(int title, int icon, int colorName, int colorIcon) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (colorName > 0) { mTitleFooter.setTextColor(ContextCompat.getColor(this, colorName)); } if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); if (colorIcon > 0) { mIconFooter.setColorFilter(ContextCompat.getColor(this, colorIcon)); } } }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @param colorName item footer name color. * @param colorIcon item footer icon color. */ public NavigationLiveo footerItem(int title, int icon, int colorName, int colorIcon) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (colorName > 0) { mTitleFooter.setTextColor(ContextCompat.getColor(this, colorName)); } if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); if (colorIcon > 0) { mIconFooter.setColorFilter(ContextCompat.getColor(this, colorIcon)); } } return this; }; /** * Information footer second list item * @param title item footer name. * @param icon item footer icon. * @param colorName item footer name color. * @param colorIcon item footer icon color. */ public NavigationLiveo footerSecondItem(int title, int icon, int colorName, int colorIcon) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleSecondFooter.setText(title); if (colorName > 0) { mTitleSecondFooter.setTextColor(ContextCompat.getColor(this, colorName)); } if (icon == 0) { mIconSecondFooter.setVisibility(View.GONE); } else { mIconSecondFooter.setImageResource(icon); if (colorIcon > 0) { mIconSecondFooter.setColorFilter(ContextCompat.getColor(this, colorIcon)); } } mFooterSecondDrawer.setVisibility(View.VISIBLE); return this; }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @param color item footer name and icon color. */ public NavigationLiveo footerItem(int title, int icon, int color) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (color > 0) { mTitleFooter.setTextColor(ContextCompat.getColor(this, color)); } if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); if (color > 0) { mIconFooter.setColorFilter(ContextCompat.getColor(this, color)); } } return this; }; /** * Information footer second list item * @param title item footer name. * @param icon item footer icon. * @param color item footer name and icon color. */ public NavigationLiveo footerSecondItem(int title, int icon, int color) { if (title == 0) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleSecondFooter.setText(title); if (color > 0) { mTitleSecondFooter.setTextColor(ContextCompat.getColor(this, color)); } if (icon == 0) { mIconSecondFooter.setVisibility(View.GONE); } else { mIconSecondFooter.setImageResource(icon); if (color > 0) { mIconSecondFooter.setColorFilter(ContextCompat.getColor(this, color)); } } mFooterSecondDrawer.setVisibility(View.VISIBLE); return this; }; /** * Information footer list item * @param title item footer name. * @param icon item footer icon. * @param color item footer name and icon color. */ public NavigationLiveo footerItem(String title, int icon, int color) { if (title == null) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } if (title.trim().equals("")) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleFooter.setText(title); if (color > 0) { mTitleFooter.setTextColor(ContextCompat.getColor(this, color)); } if (icon == 0) { mIconFooter.setVisibility(View.GONE); } else { mIconFooter.setImageResource(icon); if (color > 0) { mIconFooter.setColorFilter(ContextCompat.getColor(this, color)); } } return this; }; /** * Information footer second list item * @param title item footer name. * @param icon item footer icon. * @param color item footer name and icon color. */ public NavigationLiveo footerSecondItem(String title, int icon, int color) { if (title == null) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } if (title.trim().equals("")) { throw new RuntimeException(getString(R.string.title_null_or_empty)); } mTitleSecondFooter.setText(title); if (color > 0) { mTitleSecondFooter.setTextColor(ContextCompat.getColor(this, color)); } if (icon == 0) { mIconSecondFooter.setVisibility(View.GONE); } else { mIconSecondFooter.setImageResource(icon); if (color > 0) { mIconSecondFooter.setColorFilter(ContextCompat.getColor(this, color)); } } return this; }; /** * If not want to use the footer item just put false * @param visible true or false. */ public void setFooterNavigationVisible(boolean visible) { this.mFooterDrawer.setVisibility((visible) ? View.VISIBLE : View.GONE); } /** * Remove footer */ public NavigationLiveo removeFooter() { this.mFooterDrawer.setVisibility(View.GONE); this.mFooterSecondDrawer.setVisibility(View.GONE); return this; } /** * Item color selected in the list - name and icon (use before the setNavigationAdapter) * @param colorId color id. * @deprecated */ public void setColorSelectedItemNavigation(int colorId) { mNavigation.colorSelected = colorId; } /** * Item color selected in the list - name, icon and counter * @param colorId color id. */ public NavigationLiveo colorItemSelected(int colorId) { mNavigation.colorSelected = colorId; return this; } /** * Footer name color * @param colorId color id. * @deprecated */ public void setFooterNameColorNavigation(int colorId) { this.mTitleFooter.setTextColor(ContextCompat.getColor(this, colorId)); this.mTitleFooter.setTextColor(ContextCompat.getColor(this, colorId)); } /** * Footer name color * @param colorId color id. */ public NavigationLiveo footerNameColor(int colorId) { this.mTitleFooter.setTextColor(ContextCompat.getColor(this, colorId)); return this; } /** * Footer second name color * @param colorId color id. */ public NavigationLiveo footerSecondNameColor(int colorId) { this.mTitleSecondFooter.setTextColor(ContextCompat.getColor(this, colorId)); return this; } /** * Footer icon color * @param colorId color id. */ public NavigationLiveo footerIconColor(int colorId) { this.mIconFooter.setColorFilter(ContextCompat.getColor(this, colorId)); return this; } /** * Footer second icon color * @param colorId color id. */ public NavigationLiveo footerSecondIconColor(int colorId) { this.mIconSecondFooter.setColorFilter(ContextCompat.getColor(this, colorId)); return this; } /** * Footer icon color * @param colorId color id. * @deprecated */ public void setFooterIconColorNavigation(int colorId) { this.mIconFooter.setColorFilter(ContextCompat.getColor(this, colorId)); } /** * Item color default in the list - name and icon (use before the setNavigationAdapter) * @param colorId color id. * @deprecated */ public void setColorDefaultItemNavigation(int colorId) { this.mColorDefault = colorId; } /** * Item color default in the list - name and icon (use before the setNavigationAdapter) * @param colorId color id. */ public NavigationLiveo colorItemDefault(int colorId) { this.mColorDefault = colorId; return this; } /** * Icon item color in the list - icon (use before the setNavigationAdapter) * @param colorId color id. * @deprecated */ public void setColorIconItemNavigation(int colorId) { this.mColorIcon = colorId; } /** * Icon item color in the list - icon (use before the setNavigationAdapter) * @param colorId color id. */ public NavigationLiveo colorItemIcon(int colorId) { this.mColorIcon = colorId; return this; } /** * Separator item subHeader color in the list - icon (use before the setNavigationAdapter) * @param colorId color id. * @deprecated */ public void setColorSeparatorItemSubHeaderNavigation(int colorId) { this.mColorSeparator = colorId; } /** * Name item subHeader color * @param colorId color id. */ public NavigationLiveo colorNameSubHeader(int colorId) { this.mColorSubHeader = colorId; return this; } /** * Separator item subHeader color in the list - icon * @param colorId color id. */ public NavigationLiveo colorLineSeparator(int colorId) { this.mColorSeparator = colorId; return this; } /** * Counter color in the list (use before the setNavigationAdapter) * @param colorId color id. * @deprecated */ public void setColorCounterItemNavigation(int colorId) { this.mColorCounter = colorId; } /** * Counter color in the list (use before the setNavigationAdapter) * @param colorId color id. */ public NavigationLiveo colorItemCounter(int colorId) { this.mColorCounter = colorId; return this; } /** * Name item color in the list - name (use before the setNavigationAdapter) * @param colorId color id. * @deprecated */ public void setColorNameItemNavigation(int colorId) { this.mColorName = colorId; } /** * Name item color in the list - name (use before the setNavigationAdapter) * @param colorId color id. */ public NavigationLiveo colorItemName(int colorId) { this.mColorName = colorId; return this; } /** * New selector navigation * @param resourceSelector drawable xml - selector. * @deprecated */ public void setNewSelectorNavigation(int resourceSelector) { if (mNavigation.removeSelector) { throw new RuntimeException(getString(R.string.remove_selector_navigation)); } this.mNewSelector = resourceSelector; } /** * New selector navigation * @param resourceSelector drawable xml - selector. */ public NavigationLiveo selectorCheck(int resourceSelector) { if (mNavigation.removeSelector) { throw new RuntimeException(getString(R.string.remove_selector_navigation)); } this.mNewSelector = resourceSelector; return this; } /** * Remove selector navigation * @deprecated */ public void removeSelectorNavigation() { mNavigation.removeSelector = true; } /** * Remove selector navigation */ public NavigationLiveo removeSelector() { mNavigation.removeSelector = true; return this; } /** * New name item * @param position item position. * @param name new name */ public void setNewName(int position, String name) { this.mNavigationAdapter.setNewName(position, name); } /** * New name item * @param position item position. * @param name new name */ public void setNewName(int position, int name) { this.mNavigationAdapter.setNewName(position, getString(name)); } /** * New name item * @param position item position. * @param icon new icon */ public void setNewIcon(int position, int icon) { this.mNavigationAdapter.setNewIcon(position, icon); } /** * New information item navigation * @param position item position. * @param name new name * @param icon new icon * @param counter new counter */ public void setNewInformationItem(int position, int name, int icon, int counter) { this.mNavigationAdapter.setNewInformationItem(position, getString(name), icon, counter); } /** * New information item navigation * @param position item position. * @param name new name * @param icon new icon * @param counter new counter */ public void setNewInformationItem(int position, String name, int icon, int counter) { this.mNavigationAdapter.setNewInformationItem(position, name, icon, counter); } /** * New counter value * @param position item position. * @param value new counter value. */ public void setNewCounterValue(int position, int value) { this.mNavigationAdapter.setNewCounterValue(position, value); } /** * Increasing counter value * @param position item position. * @param value new counter value (old value + new value). */ public void setIncreasingCounterValue(int position, int value) { this.mNavigationAdapter.setIncreasingCounterValue(position, value); } /** * Decrease counter value * @param position item position. * @param value new counter value (old value - new value). */ public void setDecreaseCountervalue(int position, int value) { this.mNavigationAdapter.setDecreaseCountervalue(position, value); } /** * Make the item visible navigation or not (default value is true) * @param position item position. * @param visible true or false. */ public void setVisibleItemNavigation(int position, boolean visible) { this.mNavigationAdapter.setVisibleItemNavigation(position, visible); } /** * Remove alpha item navigation (use before the setNavigationAdapter) * @deprecated */ public void removeAlphaItemNavigation() { this.mRemoveAlpha = !mRemoveAlpha; } /** * Remove alpha item navigation (use before the setNavigationAdapter) */ public NavigationLiveo removeAlpha() { this.mRemoveAlpha = !mRemoveAlpha; return this; } /** * Remove color filter icon item navigation */ public NavigationLiveo removeColorFilter() { this.mRemoveColorFilter = !mRemoveColorFilter; return this; } /** * public void setElevation (float elevation) * Added in API level 21 * Default value is 15 * @param elevation Sets the base elevation of this view, in pixels. */ public void setElevationToolBar(float elevation) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { this.mElevationToolBar = elevation; this.getToolbar().setElevation(elevation); } } /** * Remove default Header */ public void showDefaultHeader() { if (mHeader == null) { throw new RuntimeException(getString(R.string.header_not_created)); } mList.addHeaderView(mHeader); } /** * Remove default Header */ private void removeDefaultHeader() { if (mHeader == null) { throw new RuntimeException(getString(R.string.header_not_created)); } mList.removeHeaderView(mHeader); } /** * Add custom Header * @param v ... * @deprecated */ public void addCustomHeader(View v) { if (v == null) { throw new RuntimeException(getString(R.string.custom_header_not_created)); } removeDefaultHeader(); mList.addHeaderView(v); } /** * Add custom Header * @param view ... */ public NavigationLiveo customHeader(View view) { if (view == null) { throw new RuntimeException(getString(R.string.custom_header_not_created)); } this.removeHeader(); mCustomHeader = false; mRelativeDrawer.setFitsSystemWindows(true); mList.addHeaderView(view); return this; } /** * Remove default Header * @param v ... */ public void removeCustomdHeader(View v) { if (v == null) { throw new RuntimeException(getString(R.string.custom_header_not_created)); } mList.removeHeaderView(v); } /** * get listview */ public ListView getListView() { return this.mList; } /** * get toolbar */ public Toolbar getToolbar() { return this.mToolbar; } /** * Open drawer */ public void openDrawer() { mDrawerLayout.openDrawer(mRelativeDrawer); } /** * Close drawer */ public void closeDrawer() { mDrawerLayout.closeDrawer(mRelativeDrawer); } public NavigationLiveo setOnItemClick(OnItemClickListener onItemClick) { this.mOnItemClickLiveo = onItemClick; return this; } public NavigationLiveo setOnPrepareOptionsMenu(OnPrepareOptionsMenuLiveo onPrepareOptionsMenu) { this.mOnPrepareOptionsMenu = onPrepareOptionsMenu; return this; } public NavigationLiveo setOnClickUser(View.OnClickListener listener) { this.userPhoto.setOnClickListener(listener); return this; } public NavigationLiveo setOnClickFooter(View.OnClickListener listener) { this.mFooterDrawer.setOnClickListener(listener); return this; } public NavigationLiveo setOnClickFooterSecond(View.OnClickListener listener) { this.mFooterSecondDrawer.setOnClickListener(listener); return this; } @Override public void onBackPressed() { boolean drawerOpen = mDrawerLayout.isDrawerOpen(mRelativeDrawer); if (drawerOpen) { mDrawerLayout.closeDrawer(mRelativeDrawer); } else { super.onBackPressed(); } } }