From be730539e86b3459919d1a964adda177c019ce82 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Wed, 13 Apr 2016 19:34:10 +0200 Subject: [PATCH 01/16] * remove the BaseSecondaryDrawerItem and extend fromt he Primary items for the Secondary items as they are the same just with a different layout and height * FIX #1176 --- .../model/BaseSecondaryDrawerItem.java | 124 ----------------- .../model/SecondaryDrawerItem.java | 100 ++------------ .../model/SecondarySwitchDrawerItem.java | 121 +++-------------- .../model/SecondaryToggleDrawerItem.java | 128 +++--------------- 4 files changed, 49 insertions(+), 424 deletions(-) delete mode 100644 library/src/main/java/com/mikepenz/materialdrawer/model/BaseSecondaryDrawerItem.java diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/BaseSecondaryDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/BaseSecondaryDrawerItem.java deleted file mode 100644 index 2232e68be..000000000 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/BaseSecondaryDrawerItem.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.mikepenz.materialdrawer.model; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.graphics.drawable.Drawable; -import android.support.annotation.ColorInt; -import android.support.annotation.ColorRes; -import android.support.annotation.StringRes; - -import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.holder.ColorHolder; -import com.mikepenz.materialdrawer.holder.ImageHolder; -import com.mikepenz.materialdrawer.holder.StringHolder; -import com.mikepenz.materialdrawer.util.DrawerUIUtils; -import com.mikepenz.materialize.util.UIUtils; - -/** - * Created by mikepenz on 03.02.15. - */ -public abstract class BaseSecondaryDrawerItem extends BaseDrawerItem { - private StringHolder description; - private ColorHolder descriptionTextColor; - - public T withDescription(String description) { - this.description = new StringHolder(description); - return (T) this; - } - - public T withDescription(@StringRes int descriptionRes) { - this.description = new StringHolder(descriptionRes); - return (T) this; - } - - public T withDescriptionTextColor(@ColorInt int color) { - this.descriptionTextColor = ColorHolder.fromColor(color); - return (T) this; - } - - public T withDescriptionTextColorRes(@ColorRes int colorRes) { - this.descriptionTextColor = ColorHolder.fromColorRes(colorRes); - return (T) this; - } - - public StringHolder getDescription() { - return description; - } - - public ColorHolder getDescriptionTextColor() { - return descriptionTextColor; - } - - /** - * helper method to decide for the correct color - * OVERWRITE to get the correct secondary color - * - * @param ctx - * @return - */ - @Override - protected int getColor(Context ctx) { - int color; - if (this.isEnabled()) { - color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); - } else { - color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); - } - return color; - } - - /** - * a helper method to have the logic for all secondaryDrawerItems only once - * - * @param viewHolder - */ - protected void bindViewHelper(BaseViewHolder viewHolder) { - Context ctx = viewHolder.itemView.getContext(); - - //set the identifier from the drawerItem here. It can be used to run tests - viewHolder.itemView.setId(hashCode()); - - //set the item selected if it is - viewHolder.itemView.setSelected(isSelected()); - - // - viewHolder.itemView.setTag(this); - - //get the correct color for the background - int selectedColor = getSelectedColor(ctx); - //get the correct color for the text - int color = getColor(ctx); - ColorStateList selectedTextColor = getTextColorStateList(color, getSelectedTextColor(ctx)); - //get the correct color for the icon - int iconColor = getIconColor(ctx); - int selectedIconColor = getSelectedIconColor(ctx); - - //set the background for the item - UIUtils.setBackground(viewHolder.view, UIUtils.getSelectableBackground(ctx, selectedColor, true)); - //set the text for the name - StringHolder.applyTo(this.getName(), viewHolder.name); - - //set the text for the description or hide - StringHolder.applyToOrHide(this.getDescription(), viewHolder.description); - - //set the colors for textViews - viewHolder.name.setTextColor(selectedTextColor); - - //set the description text color - ColorHolder.applyToOr(getDescriptionTextColor(), viewHolder.description, selectedTextColor); - - //define the typeface for our textViews - if (getTypeface() != null) { - viewHolder.name.setTypeface(getTypeface()); - viewHolder.description.setTypeface(getTypeface()); - } - - //get the drawables for our icon and set it - Drawable icon = ImageHolder.decideIcon(getIcon(), ctx, iconColor, isIconTinted(), 1); - Drawable selectedIcon = ImageHolder.decideIcon(getSelectedIcon(), ctx, selectedIconColor, isIconTinted(), 1); - ImageHolder.applyMultiIconTo(icon, iconColor, selectedIcon, selectedIconColor, isIconTinted(), viewHolder.icon); - - //for android API 17 --> Padding not applied via xml - DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view, level); - } -} diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java index ba5ed8d56..b0bd3ce67 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryDrawerItem.java @@ -2,54 +2,14 @@ import android.content.Context; import android.support.annotation.LayoutRes; -import android.support.annotation.StringRes; -import android.view.View; -import android.widget.TextView; -import com.mikepenz.fastadapter.utils.ViewHolderFactory; import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.holder.BadgeStyle; -import com.mikepenz.materialdrawer.holder.StringHolder; -import com.mikepenz.materialdrawer.model.interfaces.ColorfulBadgeable; +import com.mikepenz.materialdrawer.holder.ColorHolder; /** * Created by mikepenz on 03.02.15. */ -public class SecondaryDrawerItem extends BaseSecondaryDrawerItem implements ColorfulBadgeable { - protected StringHolder mBadge; - protected BadgeStyle mBadgeStyle = new BadgeStyle(); - - @Override - public SecondaryDrawerItem withBadge(StringHolder badge) { - this.mBadge = badge; - return this; - } - - @Override - public SecondaryDrawerItem withBadge(String badge) { - this.mBadge = new StringHolder(badge); - return this; - } - - @Override - public SecondaryDrawerItem withBadge(@StringRes int badgeRes) { - this.mBadge = new StringHolder(badgeRes); - return this; - } - - @Override - public SecondaryDrawerItem withBadgeStyle(BadgeStyle badgeStyle) { - this.mBadgeStyle = badgeStyle; - return this; - } - - public StringHolder getBadge() { - return mBadge; - } - - public BadgeStyle getBadgeStyle() { - return mBadgeStyle; - } +public class SecondaryDrawerItem extends PrimaryDrawerItem { @Override public int getType() { @@ -62,51 +22,21 @@ public int getLayoutRes() { return R.layout.material_drawer_item_secondary; } + /** + * helper method to decide for the correct color + * OVERWRITE to get the correct secondary color + * + * @param ctx + * @return + */ @Override - public void bindView(ViewHolder viewHolder) { - Context ctx = viewHolder.itemView.getContext(); - - //bind the basic view parts - bindViewHelper(viewHolder); - - //set the text for the badge or hide - boolean badgeVisible = StringHolder.applyToOrHide(mBadge, viewHolder.badge); - //style the badge if it is visible - if (badgeVisible) { - mBadgeStyle.style(viewHolder.badge, getTextColorStateList(getColor(ctx), getSelectedTextColor(ctx))); - viewHolder.badgeContainer.setVisibility(View.VISIBLE); + protected int getColor(Context ctx) { + int color; + if (this.isEnabled()) { + color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); } else { - viewHolder.badgeContainer.setVisibility(View.GONE); - } - - //define the typeface for our textViews - if (getTypeface() != null) { - viewHolder.badge.setTypeface(getTypeface()); - } - - //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView); - } - - @Override - public ViewHolderFactory getFactory() { - return new ItemFactory(); - } - - public static class ItemFactory implements ViewHolderFactory { - public ViewHolder create(View v) { - return new ViewHolder(v); - } - } - - protected static class ViewHolder extends BaseViewHolder { - private View badgeContainer; - private TextView badge; - - private ViewHolder(View view) { - super(view); - this.badgeContainer = view.findViewById(R.id.material_drawer_badge_container); - this.badge = (TextView) view.findViewById(R.id.material_drawer_badge); + color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); } + return color; } } diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java index c347fe201..790a81843 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondarySwitchDrawerItem.java @@ -1,56 +1,15 @@ package com.mikepenz.materialdrawer.model; +import android.content.Context; import android.support.annotation.LayoutRes; -import android.support.v7.widget.SwitchCompat; -import android.view.View; -import android.widget.CompoundButton; -import com.mikepenz.fastadapter.utils.ViewHolderFactory; -import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener; -import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; +import com.mikepenz.materialdrawer.holder.ColorHolder; /** * Created by mikepenz on 03.02.15. */ -public class SecondarySwitchDrawerItem extends BaseSecondaryDrawerItem { - - private boolean switchEnabled = true; - - private boolean checked = false; - private OnCheckedChangeListener onCheckedChangeListener = null; - - public SecondarySwitchDrawerItem withChecked(boolean checked) { - this.checked = checked; - return this; - } - - public SecondarySwitchDrawerItem withSwitchEnabled(boolean switchEnabled) { - this.switchEnabled = switchEnabled; - return this; - } - - public SecondarySwitchDrawerItem withOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) { - this.onCheckedChangeListener = onCheckedChangeListener; - return this; - } - - public SecondarySwitchDrawerItem withCheckable(boolean checkable) { - return withSelectable(checkable); - } - - public boolean isChecked() { - return checked; - } - - public boolean isSwitchEnabled() { - return switchEnabled; - } - - public OnCheckedChangeListener getOnCheckedChangeListener() { - return onCheckedChangeListener; - } +public class SecondarySwitchDrawerItem extends SwitchDrawerItem { @Override public int getType() { @@ -63,67 +22,21 @@ public int getLayoutRes() { return R.layout.material_drawer_item_secondary_switch; } + /** + * helper method to decide for the correct color + * OVERWRITE to get the correct secondary color + * + * @param ctx + * @return + */ @Override - public void bindView(final ViewHolder viewHolder) { - //bind the basic view parts - bindViewHelper(viewHolder); - - //handle the switch - viewHolder.switchView.setOnCheckedChangeListener(null); - viewHolder.switchView.setChecked(checked); - viewHolder.switchView.setOnCheckedChangeListener(checkedChangeListener); - viewHolder.switchView.setEnabled(switchEnabled); - - //add a onDrawerItemClickListener here to be able to check / uncheck if the drawerItem can't be selected - withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { - @Override - public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { - if (!isSelectable()) { - checked = !checked; - viewHolder.switchView.setChecked(checked); - } - - return false; - } - }); - - //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView); - } - - @Override - public ViewHolderFactory getFactory() { - return new ItemFactory(); - } - - public static class ItemFactory implements ViewHolderFactory { - public ViewHolder create(View v) { - return new ViewHolder(v); + protected int getColor(Context ctx) { + int color; + if (this.isEnabled()) { + color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); + } else { + color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); } + return color; } - - protected static class ViewHolder extends BaseViewHolder { - private SwitchCompat switchView; - - private ViewHolder(View view) { - super(view); - this.switchView = (SwitchCompat) view.findViewById(R.id.material_drawer_switch); - } - } - - private CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isEnabled()) { - checked = isChecked; - if (getOnCheckedChangeListener() != null) { - getOnCheckedChangeListener().onCheckedChanged(SecondarySwitchDrawerItem.this, buttonView, isChecked); - } - } else { - buttonView.setOnCheckedChangeListener(null); - buttonView.setChecked(!isChecked); - buttonView.setOnCheckedChangeListener(checkedChangeListener); - } - } - }; } diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java index d432d0b73..1c532b83e 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SecondaryToggleDrawerItem.java @@ -1,63 +1,15 @@ package com.mikepenz.materialdrawer.model; +import android.content.Context; import android.support.annotation.LayoutRes; -import android.view.View; -import android.widget.CompoundButton; -import android.widget.ToggleButton; -import com.mikepenz.fastadapter.utils.ViewHolderFactory; -import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.R; -import com.mikepenz.materialdrawer.interfaces.OnCheckedChangeListener; -import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem; +import com.mikepenz.materialdrawer.holder.ColorHolder; /** * Created by mikepenz on 03.02.15. */ -public class SecondaryToggleDrawerItem extends BaseSecondaryDrawerItem { - private boolean toggleEnabled = true; - - private boolean checked = false; - private OnCheckedChangeListener onCheckedChangeListener = null; - - public SecondaryToggleDrawerItem withChecked(boolean checked) { - this.checked = checked; - return this; - } - - public SecondaryToggleDrawerItem withToggleEnabled(boolean toggleEnabled) { - this.toggleEnabled = toggleEnabled; - return this; - } - - public SecondaryToggleDrawerItem withOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) { - this.onCheckedChangeListener = onCheckedChangeListener; - return this; - } - - public boolean isChecked() { - return checked; - } - - public void setChecked(boolean checked) { - this.checked = checked; - } - - public boolean isToggleEnabled() { - return toggleEnabled; - } - - public void setToggleEnabled(boolean toggleEnabled) { - this.toggleEnabled = toggleEnabled; - } - - public OnCheckedChangeListener getOnCheckedChangeListener() { - return onCheckedChangeListener; - } - - public void setOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) { - this.onCheckedChangeListener = onCheckedChangeListener; - } +public class SecondaryToggleDrawerItem extends ToggleDrawerItem { @Override public int getType() { @@ -70,67 +22,21 @@ public int getLayoutRes() { return R.layout.material_drawer_item_secondary_toggle; } + /** + * helper method to decide for the correct color + * OVERWRITE to get the correct secondary color + * + * @param ctx + * @return + */ @Override - public void bindView(final ViewHolder viewHolder) { - //bind the basic view parts - bindViewHelper(viewHolder); - - //handle the toggle - viewHolder.toggle.setOnCheckedChangeListener(null); - viewHolder.toggle.setChecked(checked); - viewHolder.toggle.setOnCheckedChangeListener(checkedChangeListener); - viewHolder.toggle.setEnabled(toggleEnabled); - - //add a onDrawerItemClickListener here to be able to check / uncheck if the drawerItem can't be selected - withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() { - @Override - public boolean onItemClick(View view, int position, IDrawerItem drawerItem) { - if (!isSelectable()) { - checked = !checked; - viewHolder.toggle.setChecked(checked); - } - - return false; - } - }); - - //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView); - } - - @Override - public ViewHolderFactory getFactory() { - return new ItemFactory(); - } - - public static class ItemFactory implements ViewHolderFactory { - public ViewHolder create(View v) { - return new ViewHolder(v); - } - } - - protected static class ViewHolder extends BaseViewHolder { - private ToggleButton toggle; - - private ViewHolder(View view) { - super(view); - this.toggle = (ToggleButton) view.findViewById(R.id.material_drawer_toggle); + protected int getColor(Context ctx) { + int color; + if (this.isEnabled()) { + color = ColorHolder.color(getTextColor(), ctx, R.attr.material_drawer_secondary_text, R.color.material_drawer_secondary_text); + } else { + color = ColorHolder.color(getDisabledTextColor(), ctx, R.attr.material_drawer_hint_text, R.color.material_drawer_hint_text); } + return color; } - - private CompoundButton.OnCheckedChangeListener checkedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isEnabled()) { - checked = isChecked; - if (getOnCheckedChangeListener() != null) { - getOnCheckedChangeListener().onCheckedChanged(SecondaryToggleDrawerItem.this, buttonView, isChecked); - } - } else { - buttonView.setOnCheckedChangeListener(null); - buttonView.setChecked(!isChecked); - buttonView.setOnCheckedChangeListener(checkedChangeListener); - } - } - }; } From befa1dfe72d9543d780a048e3108950172543630 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 15 Apr 2016 17:02:15 +0200 Subject: [PATCH 02/16] * correctly deselect items in StickyFooter if a new item is selected via the drawer * FIX #1180 --- library/src/main/java/com/mikepenz/materialdrawer/Drawer.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java b/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java index 0a20c3fe2..d99293cfe 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java @@ -541,6 +541,9 @@ public boolean setSelectionAtPosition(int position, boolean fireOnClick) { if (mDrawerBuilder.mOnDrawerItemClickListener != null && fireOnClick && position >= 0) { mDrawerBuilder.mOnDrawerItemClickListener.onItemClick(null, position, mDrawerBuilder.mAdapter.getItem(position)); } + + //we set the selection on a normal item in the drawer so we have to deselect the items in the StickyDrawer + mDrawerBuilder.resetStickyFooterSelection(); } return false; } From f695991f74c54835e829f564b18316c3ad4e8a9e Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 15 Apr 2016 17:19:44 +0200 Subject: [PATCH 03/16] * update to latest `FastAdapter` v1.4.2 --- library/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/build.gradle b/library/build.gradle index 133a66a83..bc8e23a30 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -47,5 +47,5 @@ dependencies { // used to fill the RecyclerView with the DrawerItems // and provides single and multi selection, expandable items // https://github.com/mikepenz/FastAdapter - compile 'com.mikepenz:fastadapter:1.4.1@aar' + compile 'com.mikepenz:fastadapter:1.4.2@aar' } From cbd15c29060c9bea8a5ed567e3c4514f2ad99548 Mon Sep 17 00:00:00 2001 From: Alireza Date: Fri, 15 Apr 2016 22:08:31 +0430 Subject: [PATCH 04/16] fix simple misspelled --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 602786672..a4883d10e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ There is a Header with profiles (**AccountHeader**), a **MiniDrawer** for Table ###A quick overview what's in - **the easiest possible integration** -- integrate in less then **5 minutes** +- integrate in less than **5 minutes** - compatible down to **API Level 10** - includes an **AccountSwitcher** - quick and simple api From 4dc6f2463665618c867af8eae75f93b302e8a201 Mon Sep 17 00:00:00 2001 From: Alireza Date: Mon, 18 Apr 2016 13:20:52 +0430 Subject: [PATCH 05/16] update license and add Mike Penz as the owner. --- LICENSE | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/LICENSE b/LICENSE index e06d20818..76a637894 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -178,7 +178,7 @@ Apache License APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" + boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a @@ -186,7 +186,7 @@ Apache License same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright {yyyy} {name of copyright owner} + Copyright 2016 Mike Penz Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -199,4 +199,3 @@ Apache License 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. - From 43eeec7b6c2c0dcc1bd0be1ad6216ccfebff90ca Mon Sep 17 00:00:00 2001 From: Rexee Date: Mon, 18 Apr 2016 22:04:59 +0300 Subject: [PATCH 06/16] Fix "withSliderBackgroundDrawableRes" withSliderBackgroundDrawableRes(R.drawable.some_resource_id) uses "mSliderBackgroundColorRes" instead of "mSliderBackgroundDrawableRes" --- .../main/java/com/mikepenz/materialdrawer/DrawerBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java b/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java index fea7cd3c1..75f918697 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/DrawerBuilder.java @@ -1601,7 +1601,7 @@ private void createContent() { } else if (mSliderBackgroundDrawable != null) { UIUtils.setBackground(mSliderLayout, mSliderBackgroundDrawable); } else if (mSliderBackgroundDrawableRes != -1) { - UIUtils.setBackground(mSliderLayout, mSliderBackgroundColorRes); + UIUtils.setBackground(mSliderLayout, mSliderBackgroundDrawableRes); } //handle the header From d6f0c7d3a39b5fe31d83beed9ec16a7f2c528c88 Mon Sep 17 00:00:00 2001 From: Daniel Gomez Rico Date: Tue, 19 Apr 2016 12:24:11 -0500 Subject: [PATCH 07/16] Make ViewHolder class public Needed public because of Kotlin. ``` PrimaryDrawerItem.ViewHolder is protected. And the bindView() method, which is public, accepts PrimaryDrawerItem.ViewHolder. But a general external caller cannot invoke this method because it cannot refer a protected nested class PrimaryDrawerItem.ViewHolder. Kotlin prohibits such behavior and requires either to make the parameter visibility equal to the method visibility or to decrease the parameter visibility to be less or equal to the method visibility. ``` --- .../com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java index 6e0c0a620..57411c5ca 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/PrimaryDrawerItem.java @@ -98,7 +98,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { private View badgeContainer; private TextView badge; From 02cd84f8cf3e8d21a15c06531aa5d0f75ed1cef3 Mon Sep 17 00:00:00 2001 From: Daniel Gomez Rico Date: Wed, 20 Apr 2016 09:08:04 -0500 Subject: [PATCH 08/16] Make public all ViewHolders for DrawerItems. --- .../app/drawerItems/CustomUrlPrimaryDrawerItem.java | 2 +- .../mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java | 2 +- .../materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java | 2 +- .../com/mikepenz/materialdrawer/model/ContainerDrawerItem.java | 2 +- .../com/mikepenz/materialdrawer/model/DividerDrawerItem.java | 2 +- .../com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java | 2 +- .../java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java | 2 +- .../mikepenz/materialdrawer/model/MiniProfileDrawerItem.java | 2 +- .../com/mikepenz/materialdrawer/model/ProfileDrawerItem.java | 2 +- .../mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java | 2 +- .../com/mikepenz/materialdrawer/model/SectionDrawerItem.java | 2 +- .../com/mikepenz/materialdrawer/model/SwitchDrawerItem.java | 2 +- .../com/mikepenz/materialdrawer/model/ToggleDrawerItem.java | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java index ed206d908..f517c2dc1 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlPrimaryDrawerItem.java @@ -99,7 +99,7 @@ public ViewHolder create(View v) { } } - static class ViewHolder extends CustomBaseViewHolder { + public static class ViewHolder extends CustomBaseViewHolder { private View badgeContainer; private TextView badge; diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java index 10a680b59..7ed01cb18 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/IconDrawerItem.java @@ -201,7 +201,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; protected ImageView icon; diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java index 2bc9c6988..6cd6b2e02 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/OverflowMenuDrawerItem.java @@ -103,7 +103,7 @@ public ViewHolder create(View v) { } } - static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { //protected ImageButton ibOverflow; private ImageButton menu; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java index d3fad2081..3cbae7319 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java @@ -118,7 +118,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java index 8849637f4..8239b2aa7 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/DividerDrawerItem.java @@ -57,7 +57,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private View divider; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java index 149d64f40..db3bdc4ca 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ExpandableDrawerItem.java @@ -110,7 +110,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { public IconicsImageView arrow; public ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java index 54b1fcec7..9ac6f0616 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniDrawerItem.java @@ -176,7 +176,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ImageView icon; private TextView badge; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java index 95a18e723..9b07ed3ed 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/MiniProfileDrawerItem.java @@ -158,7 +158,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private ImageView icon; public ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java index aeac7f04b..eb7d5f9a0 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileDrawerItem.java @@ -259,7 +259,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ImageView profileIcon; private TextView name; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java index 952939011..5c56c9d1f 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ProfileSettingDrawerItem.java @@ -245,7 +245,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private ImageView icon; private TextView name; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java index f17735f52..c0c9b4dfc 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SectionDrawerItem.java @@ -148,7 +148,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends RecyclerView.ViewHolder { + public static class ViewHolder extends RecyclerView.ViewHolder { private View view; private View divider; private TextView name; diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java index 149d3a3f8..16d46508b 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/SwitchDrawerItem.java @@ -102,7 +102,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { private SwitchCompat switchView; private ViewHolder(View view) { diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java index 65edbbb30..f03ff1b05 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ToggleDrawerItem.java @@ -109,7 +109,7 @@ public ViewHolder create(View v) { } } - protected static class ViewHolder extends BaseViewHolder { + public static class ViewHolder extends BaseViewHolder { private ToggleButton toggle; private ViewHolder(View view) { From c902d8e3adfb69f414f3d279f4a4134e563a9148 Mon Sep 17 00:00:00 2001 From: Daniel Gomez Rico Date: Wed, 20 Apr 2016 09:14:17 -0500 Subject: [PATCH 09/16] Use archivesBaseName instead of block of code for apk rename. Its a little cleaner. --- app/build.gradle | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 345937483..19c31363b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,13 +15,7 @@ android { versionCode 520 versionName "5.2.0" - applicationVariants.all { variant -> - variant.outputs.each { output -> - def file = output.outputFile - def fileName = file.name.replace(".apk", "-v" + versionName + "-c" + versionCode + ".apk") - output.outputFile = new File(file.parentFile, fileName) - } - } + setProperty("archivesBaseName", "-v$versionName-c$versionCode") } buildTypes { debug { From f186dda4173a03668b373fea79ef8e36dfe49c95 Mon Sep 17 00:00:00 2001 From: Daniel Gomez Rico Date: Wed, 20 Apr 2016 09:31:43 -0500 Subject: [PATCH 10/16] Make cleaner dependency management --- app/build.gradle | 132 +++++++++++++++++++++---------------------- build.gradle | 43 +++++++------- library/build.gradle | 16 +++--- 3 files changed, 97 insertions(+), 94 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 345937483..5244a465f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,88 +1,88 @@ apply plugin: 'com.android.application' //wrap with try and catch so the build is working even if the signing stuff is missing try { - apply from: '../../../signing.gradle' + apply from: '../../../signing.gradle' } catch (ex) { } android { - compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion rootProject.ext.buildToolsVersion + compileSdkVersion setup.compileSdk + buildToolsVersion setup.buildTools - defaultConfig { - minSdkVersion 10 - targetSdkVersion 23 - versionCode 520 - versionName "5.2.0" + defaultConfig { + minSdkVersion setup.minSdk + targetSdkVersion setup.targetSdk + versionCode 520 + versionName "5.2.0" - applicationVariants.all { variant -> - variant.outputs.each { output -> - def file = output.outputFile - def fileName = file.name.replace(".apk", "-v" + versionName + "-c" + versionCode + ".apk") - output.outputFile = new File(file.parentFile, fileName) - } - } + applicationVariants.all { variant -> + variant.outputs.each { output -> + def file = output.outputFile + def fileName = file.name.replace(".apk", "-v" + versionName + "-c" + versionCode + ".apk") + output.outputFile = new File(file.parentFile, fileName) + } } - buildTypes { - debug { - applicationIdSuffix ".debug" - versionNameSuffix "-DEBUG" - try { - signingConfig signingConfigs.debug - } catch (ex) { - } - minifyEnabled false - } - release { - try { - signingConfig signingConfigs.release - } catch (ex) { - } - zipAlignEnabled true - minifyEnabled false - } + } + buildTypes { + debug { + applicationIdSuffix ".debug" + versionNameSuffix "-DEBUG" + try { + signingConfig signingConfigs.debug + } catch (ex) { + } + minifyEnabled false } - lintOptions { - abortOnError false + release { + try { + signingConfig signingConfigs.release + } catch (ex) { + } + zipAlignEnabled true + minifyEnabled false } + } + lintOptions { + abortOnError false + } } dependencies { - compile project(':library') + compile project(':library') - compile "com.android.support:design:${rootProject.ext.supportLibVersion}" - compile "com.android.support:cardview-v7:${rootProject.ext.supportLibVersion}" + compile "com.android.support:design:${versions.supportLib}" + compile "com.android.support:cardview-v7:${versions.supportLib}" - // used to showcase how to load images - compile 'com.squareup.picasso:picasso:2.5.2' - compile 'com.github.bumptech.glide:glide:3.7.0' + // used to showcase how to load images + compile 'com.squareup.picasso:picasso:2.5.2' + compile 'com.github.bumptech.glide:glide:3.7.0' - // used to generate the Open Source section - // https://github.com/mikepenz/AboutLibraries - compile('com.mikepenz:aboutlibraries:5.6.3@aar') { - transitive = true - exclude module: "fastadapter" - } - //used to provide different itemAnimators for the RecyclerView - //https://github.com/mikepenz/ItemAnimators - compile 'com.mikepenz:itemanimators:0.2.4@aar' - // used to provide the MiniDrawer to normal Drawer crossfade effect via a SlidingPane layout - // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/MiniDrawerActivity.java - // https://github.com/mikepenz/Crossfader - compile 'com.mikepenz:crossfader:1.3.7@aar' - // used to provide the two step crossfade DrawerLayout. Which allows to have a mini layout which transforms to a normal layout within the drawer - // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/CrossfadeDrawerLayoutActvitiy.java - // https://github.com/mikepenz/CrossfadeDrawerLayout - compile('com.mikepenz:crossfadedrawerlayout:0.3.4@aar') + // used to generate the Open Source section + // https://github.com/mikepenz/AboutLibraries + compile('com.mikepenz:aboutlibraries:5.6.3@aar') { + transitive = true + exclude module: "fastadapter" + } + //used to provide different itemAnimators for the RecyclerView + //https://github.com/mikepenz/ItemAnimators + compile 'com.mikepenz:itemanimators:0.2.4@aar' + // used to provide the MiniDrawer to normal Drawer crossfade effect via a SlidingPane layout + // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/MiniDrawerActivity.java + // https://github.com/mikepenz/Crossfader + compile 'com.mikepenz:crossfader:1.3.7@aar' + // used to provide the two step crossfade DrawerLayout. Which allows to have a mini layout which transforms to a normal layout within the drawer + // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/CrossfadeDrawerLayoutActvitiy.java + // https://github.com/mikepenz/CrossfadeDrawerLayout + compile('com.mikepenz:crossfadedrawerlayout:0.3.4@aar') - // icon fonts used inside the sample - // https://github.com/mikepenz/Android-Iconics - compile 'com.mikepenz:google-material-typeface:2.2.0.1@aar' - compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar' - compile 'com.mikepenz:octicons-typeface:3.0.0.1@aar' + // icon fonts used inside the sample + // https://github.com/mikepenz/Android-Iconics + compile 'com.mikepenz:google-material-typeface:2.2.0.1@aar' + compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar' + compile 'com.mikepenz:octicons-typeface:3.0.0.1@aar' - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' - releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' - testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' + debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' + releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' + testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' } diff --git a/build.gradle b/build.gradle index c16ec5c17..280bd3f9c 100644 --- a/build.gradle +++ b/build.gradle @@ -1,28 +1,31 @@ buildscript { - repositories { - jcenter() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:2.0.0' - classpath 'com.novoda:bintray-release:0.3.4' - } -} + ext { + setup = [compileSdk: 23, + buildTools: "23.0.3", + minSdk : 10, + targetSdk : 23] -allprojects { - repositories { - jcenter() - mavenCentral() - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - } + versions = [supportLib: "23.3.0"] + } + + repositories { + jcenter() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.0.0' + classpath 'com.novoda:bintray-release:0.3.4' + } } -ext { - compileSdkVersion = 23 - buildToolsVersion = "23.0.3" - supportLibVersion = "23.3.0" +allprojects { + repositories { + jcenter() + mavenCentral() + maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } + } } task wrapper(type: Wrapper) { - gradleVersion = '2.12' + gradleVersion = '2.12' } \ No newline at end of file diff --git a/library/build.gradle b/library/build.gradle index bc8e23a30..273dfc066 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -2,12 +2,12 @@ apply plugin: 'com.android.library' apply plugin: 'com.novoda.bintray-release' android { - compileSdkVersion rootProject.ext.compileSdkVersion - buildToolsVersion rootProject.ext.buildToolsVersion + compileSdkVersion setup.compileSdk + buildToolsVersion setup.buildTools defaultConfig { - minSdkVersion 10 - targetSdkVersion 23 + minSdkVersion setup.minSdk + targetSdkVersion setup.targetSdk versionCode 520 versionName '5.2.0' } @@ -28,10 +28,10 @@ apply from: 'gradle-mvn-push.gradle' apply from: 'gradle-jcenter-push.gradle' dependencies { - compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}" - compile "com.android.support:recyclerview-v7:${rootProject.ext.supportLibVersion}" - compile "com.android.support:support-annotations:${rootProject.ext.supportLibVersion}" - compile "com.android.support:design:${rootProject.ext.supportLibVersion}" + compile "com.android.support:appcompat-v7:${versions.supportLib}" + compile "com.android.support:recyclerview-v7:${versions.supportLib}" + compile "com.android.support:support-annotations:${versions.supportLib}" + compile "com.android.support:design:${versions.supportLib}" // used to base on some backwards compatible themes // contains util classes to support various android versions, and clean up code From a2013e7d9e34f4960364f1562033e383744c41cd Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 22 Apr 2016 20:16:00 +0200 Subject: [PATCH 11/16] * fix CustomUrlBasePrimaryDrawerItem and correctly reset the icon in a long list, and make sure to remove the image if no icon is set for the specific item * FIX #1205 --- .../app/drawerItems/CustomUrlBasePrimaryDrawerItem.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java index 7ec2faf4a..7650cc0ff 100644 --- a/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java +++ b/app/src/main/java/com/mikepenz/materialdrawer/app/drawerItems/CustomUrlBasePrimaryDrawerItem.java @@ -11,6 +11,7 @@ import com.mikepenz.materialdrawer.holder.ImageHolder; import com.mikepenz.materialdrawer.holder.StringHolder; import com.mikepenz.materialdrawer.model.BaseDrawerItem; +import com.mikepenz.materialdrawer.util.DrawerImageLoader; import com.mikepenz.materialdrawer.util.DrawerUIUtils; import com.mikepenz.materialize.util.UIUtils; @@ -103,6 +104,9 @@ protected void bindViewHelper(CustomBaseViewHolder viewHolder) { viewHolder.description.setTypeface(getTypeface()); } + //we make sure we reset the image first before setting the new one in case there is an empty one + DrawerImageLoader.getInstance().cancelImage(viewHolder.icon); + viewHolder.icon.setImageBitmap(null); //get the drawables for our icon and set it ImageHolder.applyTo(icon, viewHolder.icon, "customUrlItem"); From 9303e424ee068d90d10ff02814a6c4f30ae87a92 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 22 Apr 2016 20:38:25 +0200 Subject: [PATCH 12/16] * add protected getter for the AccountHeaderBuilder so we can access it from the MiniDrawer --- .../java/com/mikepenz/materialdrawer/AccountHeader.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java b/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java index 1797dff4c..5423da07f 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/AccountHeader.java @@ -30,6 +30,15 @@ protected AccountHeader(AccountHeaderBuilder accountHeaderBuilder) { this.mAccountHeaderBuilder = accountHeaderBuilder; } + /** + * the protected getter for the AccountHeaderBuilder + * + * @return the AccountHeaderBuilder + */ + protected AccountHeaderBuilder getAccountHeaderBuilder() { + return mAccountHeaderBuilder; + } + /** * Get the Root view for the Header * From bef56bb1015e5c373721548588c50a4ca526ce88 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 22 Apr 2016 20:39:03 +0200 Subject: [PATCH 13/16] * if we have disabled to show the `ProfileImages` inside the AccountHeaderBuilder we also don't show it in the MiniDrawer * FIX #1207 --- .../src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java b/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java index 11913fd88..534d25664 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/MiniDrawer.java @@ -402,7 +402,7 @@ public void createItems() { mAdapter.clear(); int profileOffset = 0; - if (mAccountHeader != null) { + if (mAccountHeader != null && mAccountHeader.getAccountHeaderBuilder().mProfileImagesVisible) { IProfile profile = mAccountHeader.getActiveProfile(); if (profile instanceof IDrawerItem) { mAdapter.add(generateMiniDrawerItem((IDrawerItem) profile)); From bfebbe463eebfba2d30bed0582b702420828d745 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 22 Apr 2016 20:42:22 +0200 Subject: [PATCH 14/16] * update to the latest `FastAdapter` v1.4.4 --- library/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/build.gradle b/library/build.gradle index 273dfc066..8066c472c 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -47,5 +47,5 @@ dependencies { // used to fill the RecyclerView with the DrawerItems // and provides single and multi selection, expandable items // https://github.com/mikepenz/FastAdapter - compile 'com.mikepenz:fastadapter:1.4.2@aar' + compile 'com.mikepenz:fastadapter:1.4.4@aar' } From 86408e861fcf7a4f0388a2689a6f163166671b50 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 22 Apr 2016 21:05:28 +0200 Subject: [PATCH 15/16] * add new `setHeader` method to the Drawer to allow providing the height for the `ContainerDrawerItem` * allow to explicitely set the height of the `ContainerDrawerItem` --- .../com/mikepenz/materialdrawer/Drawer.java | 20 +++++++++++++++++-- .../model/ContainerDrawerItem.java | 20 +++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java b/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java index d99293cfe..c3ecdf6ae 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/Drawer.java @@ -15,6 +15,7 @@ import com.mikepenz.fastadapter.adapters.FooterAdapter; import com.mikepenz.fastadapter.adapters.HeaderAdapter; import com.mikepenz.fastadapter.adapters.ItemAdapter; +import com.mikepenz.materialdrawer.holder.DimenHolder; import com.mikepenz.materialdrawer.holder.ImageHolder; import com.mikepenz.materialdrawer.holder.StringHolder; import com.mikepenz.materialdrawer.model.ContainerDrawerItem; @@ -304,12 +305,26 @@ public void setHeader(@NonNull View view, boolean divider) { * @param divider */ public void setHeader(@NonNull View view, boolean padding, boolean divider) { + setHeader(view, padding, divider, null); + } + + /** + * method to replace a previous set header + * + * @param view + * @param padding + * @param divider + * @param height + */ + public void setHeader(@NonNull View view, boolean padding, boolean divider, DimenHolder height) { mDrawerBuilder.getHeaderAdapter().clear(); if (padding) { - mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withViewPosition(ContainerDrawerItem.Position.TOP)); + mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withHeight(height).withViewPosition(ContainerDrawerItem.Position.TOP)); } else { - mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withViewPosition(ContainerDrawerItem.Position.NONE)); + mDrawerBuilder.getHeaderAdapter().add(new ContainerDrawerItem().withView(view).withDivider(divider).withHeight(height).withViewPosition(ContainerDrawerItem.Position.NONE)); } + //we need to set the padding so the header starts on top + mDrawerBuilder.mRecyclerView.setPadding(mDrawerBuilder.mRecyclerView.getPaddingLeft(), 0, mDrawerBuilder.mRecyclerView.getPaddingRight(), mDrawerBuilder.mRecyclerView.getPaddingBottom()); } /** @@ -317,6 +332,7 @@ public void setHeader(@NonNull View view, boolean padding, boolean divider) { */ public void removeHeader() { mDrawerBuilder.getHeaderAdapter().clear(); + //possibly there should be also a reset of the padding so the first item starts below the toolbar } /** diff --git a/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java b/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java index 3cbae7319..d89e62582 100644 --- a/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java +++ b/library/src/main/java/com/mikepenz/materialdrawer/model/ContainerDrawerItem.java @@ -9,12 +9,25 @@ import com.mikepenz.fastadapter.utils.ViewHolderFactory; import com.mikepenz.materialdrawer.R; +import com.mikepenz.materialdrawer.holder.DimenHolder; import com.mikepenz.materialize.util.UIUtils; /** * Created by mikepenz on 03.02.15. */ public class ContainerDrawerItem extends AbstractDrawerItem { + + private DimenHolder mHeight; + + public ContainerDrawerItem withHeight(DimenHolder height) { + mHeight = height; + return this; + } + + public DimenHolder getHeight() { + return mHeight; + } + private View mView; public ContainerDrawerItem withView(View view) { @@ -76,6 +89,13 @@ public void bindView(ViewHolder viewHolder) { ((ViewGroup) mView.getParent()).removeView(mView); } + //set the height + if (mHeight != null) { + RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) viewHolder.view.getLayoutParams(); + lp.height = mHeight.asPixel(ctx); + viewHolder.view.setLayoutParams(lp); + } + //make sure the header view is empty ((ViewGroup) viewHolder.view).removeAllViews(); From 64876f50843165d90b29accfd2031f5c6e6720c9 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Fri, 22 Apr 2016 21:07:22 +0200 Subject: [PATCH 16/16] * [release] v5.2.1 --- README.md | 2 +- app/build.gradle | 122 +++++++++--------- build.gradle | 42 +++--- gradle.properties | 4 +- library/build.gradle | 4 +- .../values/library_materialdrawer_strings.xml | 2 +- 6 files changed, 88 insertions(+), 88 deletions(-) diff --git a/README.md b/README.md index a4883d10e..0a754d729 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ You can find some frequently asked questions and other resources in the [WIKI / ##1. Provide the gradle dependency ```gradle -compile('com.mikepenz:materialdrawer:5.2.0@aar') { +compile('com.mikepenz:materialdrawer:5.2.1@aar') { transitive = true } ``` diff --git a/app/build.gradle b/app/build.gradle index d3d5df57e..4a443d5c7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,82 +1,82 @@ apply plugin: 'com.android.application' //wrap with try and catch so the build is working even if the signing stuff is missing try { - apply from: '../../../signing.gradle' + apply from: '../../../signing.gradle' } catch (ex) { } android { - compileSdkVersion setup.compileSdk - buildToolsVersion setup.buildTools + compileSdkVersion setup.compileSdk + buildToolsVersion setup.buildTools - defaultConfig { - minSdkVersion setup.minSdk - targetSdkVersion setup.targetSdk - versionCode 520 - versionName "5.2.0" + defaultConfig { + minSdkVersion setup.minSdk + targetSdkVersion setup.targetSdk + versionCode 521 + versionName "5.2.1" - setProperty("archivesBaseName", "-v$versionName-c$versionCode") - } - buildTypes { - debug { - applicationIdSuffix ".debug" - versionNameSuffix "-DEBUG" - try { - signingConfig signingConfigs.debug - } catch (ex) { - } - minifyEnabled false + setProperty("archivesBaseName", "-v$versionName-c$versionCode") } - release { - try { - signingConfig signingConfigs.release - } catch (ex) { - } - zipAlignEnabled true - minifyEnabled false + buildTypes { + debug { + applicationIdSuffix ".debug" + versionNameSuffix "-DEBUG" + try { + signingConfig signingConfigs.debug + } catch (ex) { + } + minifyEnabled false + } + release { + try { + signingConfig signingConfigs.release + } catch (ex) { + } + zipAlignEnabled true + minifyEnabled false + } + } + lintOptions { + abortOnError false } - } - lintOptions { - abortOnError false - } } dependencies { - compile project(':library') + compile project(':library') - compile "com.android.support:design:${versions.supportLib}" - compile "com.android.support:cardview-v7:${versions.supportLib}" + compile "com.android.support:design:${versions.supportLib}" + compile "com.android.support:cardview-v7:${versions.supportLib}" - // used to showcase how to load images - compile 'com.squareup.picasso:picasso:2.5.2' - compile 'com.github.bumptech.glide:glide:3.7.0' + // used to showcase how to load images + compile 'com.squareup.picasso:picasso:2.5.2' + compile 'com.github.bumptech.glide:glide:3.7.0' - // used to generate the Open Source section - // https://github.com/mikepenz/AboutLibraries - compile('com.mikepenz:aboutlibraries:5.6.3@aar') { - transitive = true - exclude module: "fastadapter" - } - //used to provide different itemAnimators for the RecyclerView - //https://github.com/mikepenz/ItemAnimators - compile 'com.mikepenz:itemanimators:0.2.4@aar' - // used to provide the MiniDrawer to normal Drawer crossfade effect via a SlidingPane layout - // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/MiniDrawerActivity.java - // https://github.com/mikepenz/Crossfader - compile 'com.mikepenz:crossfader:1.3.7@aar' - // used to provide the two step crossfade DrawerLayout. Which allows to have a mini layout which transforms to a normal layout within the drawer - // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/CrossfadeDrawerLayoutActvitiy.java - // https://github.com/mikepenz/CrossfadeDrawerLayout - compile('com.mikepenz:crossfadedrawerlayout:0.3.4@aar') + // used to generate the Open Source section + // https://github.com/mikepenz/AboutLibraries + compile('com.mikepenz:aboutlibraries:5.6.3@aar') { + transitive = true + exclude module: "fastadapter" + } + //used to provide different itemAnimators for the RecyclerView + //https://github.com/mikepenz/ItemAnimators + compile 'com.mikepenz:itemanimators:0.2.4@aar' + // used to provide the MiniDrawer to normal Drawer crossfade effect via a SlidingPane layout + // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/MiniDrawerActivity.java + // https://github.com/mikepenz/Crossfader + compile 'com.mikepenz:crossfader:1.3.7@aar' + // used to provide the two step crossfade DrawerLayout. Which allows to have a mini layout which transforms to a normal layout within the drawer + // --> https://github.com/mikepenz/MaterialDrawer/blob/develop/app/src/main/java/com/mikepenz/materialdrawer/app/CrossfadeDrawerLayoutActvitiy.java + // https://github.com/mikepenz/CrossfadeDrawerLayout + compile('com.mikepenz:crossfadedrawerlayout:0.3.4@aar') - // icon fonts used inside the sample - // https://github.com/mikepenz/Android-Iconics - compile 'com.mikepenz:google-material-typeface:2.2.0.1@aar' - compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar' - compile 'com.mikepenz:octicons-typeface:3.0.0.1@aar' + // icon fonts used inside the sample + // https://github.com/mikepenz/Android-Iconics + compile 'com.mikepenz:google-material-typeface:2.2.0.1@aar' + compile 'com.mikepenz:fontawesome-typeface:4.4.0.1@aar' + compile 'com.mikepenz:octicons-typeface:3.0.0.1@aar' - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' - releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' - testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' + debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' + releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' + testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' } diff --git a/build.gradle b/build.gradle index 280bd3f9c..9b199616b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,31 +1,31 @@ buildscript { - ext { - setup = [compileSdk: 23, - buildTools: "23.0.3", - minSdk : 10, - targetSdk : 23] + ext { + setup = [compileSdk: 23, + buildTools: "23.0.3", + minSdk : 10, + targetSdk : 23] - versions = [supportLib: "23.3.0"] - } + versions = [supportLib: "23.3.0"] + } - repositories { - jcenter() - mavenCentral() - } - dependencies { - classpath 'com.android.tools.build:gradle:2.0.0' - classpath 'com.novoda:bintray-release:0.3.4' - } + repositories { + jcenter() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:2.0.0' + classpath 'com.novoda:bintray-release:0.3.4' + } } allprojects { - repositories { - jcenter() - mavenCentral() - maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } - } + repositories { + jcenter() + mavenCentral() + maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } + } } task wrapper(type: Wrapper) { - gradleVersion = '2.12' + gradleVersion = '2.12' } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 32d5acc22..418ec8ea0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ # Maven stuff -VERSION_NAME=5.2.0 -VERSION_CODE=520 +VERSION_NAME=5.2.1 +VERSION_CODE=521 GROUP=com.mikepenz POM_DESCRIPTION=MaterialDrawer Library diff --git a/library/build.gradle b/library/build.gradle index 8066c472c..d06f42162 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -8,8 +8,8 @@ android { defaultConfig { minSdkVersion setup.minSdk targetSdkVersion setup.targetSdk - versionCode 520 - versionName '5.2.0' + versionCode 521 + versionName '5.2.1' } buildTypes { release { diff --git a/library/src/main/res/values/library_materialdrawer_strings.xml b/library/src/main/res/values/library_materialdrawer_strings.xml index 0e328054a..b4a741822 100755 --- a/library/src/main/res/values/library_materialdrawer_strings.xml +++ b/library/src/main/res/values/library_materialdrawer_strings.xml @@ -10,7 +10,7 @@ MaterialDrawer the flexible, easy to use, all in one drawer library for your Android project. ]]> - 5.2.0 + 5.2.1 https://github.com/mikepenz/MaterialDrawer apache_2_0 true