diff --git a/README.md b/README.md index 105453d..43df290 100644 --- a/README.md +++ b/README.md @@ -7,19 +7,20 @@ Version ======= v.0.1 beta -Usage (Gradle) -============== - -``` -repositories { - maven { url 'http://maven.shehabic.com' } -} +Usage (Maven) +============= +```XML + + com.shehabic.droppy + Droppy + 0.1 + ``` -``` -dependencies { - compile 'com.shehabic.droppy:Droppy:0.1@aar' -} +Usage (Gradle) +============== +```groovy +compile 'com.shehabic.droppy:Droppy:0.1@aar' ``` Generate Programmatically diff --git a/library/src/main/java/com/shehabic/droppy/DroppyMenuItem.java b/library/src/main/java/com/shehabic/droppy/DroppyMenuItem.java index 8d005b8..7eb8129 100644 --- a/library/src/main/java/com/shehabic/droppy/DroppyMenuItem.java +++ b/library/src/main/java/com/shehabic/droppy/DroppyMenuItem.java @@ -23,7 +23,6 @@ void initMenuItem(String title, int iconResourceId) if (iconResourceId > 0) { this.icon = iconResourceId; } - this.customViewResourceId = R.layout.droppy_menu_item; } public DroppyMenuItem(String title) @@ -44,8 +43,7 @@ public void setIcon(Drawable iconDrawable) @Override public View render(Context context) { - super.render(context); - + renderedView = new com.shehabic.droppy.views.DroppyMenuItem(context); if (this.icon != -1) { diff --git a/library/src/main/java/com/shehabic/droppy/DroppyMenuItemAbstract.java b/library/src/main/java/com/shehabic/droppy/DroppyMenuItemAbstract.java index 3dc74f2..5033089 100644 --- a/library/src/main/java/com/shehabic/droppy/DroppyMenuItemAbstract.java +++ b/library/src/main/java/com/shehabic/droppy/DroppyMenuItemAbstract.java @@ -26,7 +26,7 @@ public View render(Context context) { if (this.renderedView == null) { this.renderedView = LayoutInflater.from(context).inflate(this.customViewResourceId, null); } - ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); + ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); renderedView.setLayoutParams(lp); return renderedView; diff --git a/library/src/main/java/com/shehabic/droppy/DroppyMenuSeparator.java b/library/src/main/java/com/shehabic/droppy/DroppyMenuSeparator.java index 7f061b7..cc67d74 100644 --- a/library/src/main/java/com/shehabic/droppy/DroppyMenuSeparator.java +++ b/library/src/main/java/com/shehabic/droppy/DroppyMenuSeparator.java @@ -1,7 +1,6 @@ package com.shehabic.droppy; import android.content.Context; -import android.view.LayoutInflater; import android.view.View; /** * Created by shehabic on 2/28/15. @@ -9,15 +8,6 @@ public class DroppyMenuSeparator extends DroppyMenuItemAbstract { public DroppyMenuSeparator() { - initSeparator(R.layout.droppy_separator); - } - - public DroppyMenuSeparator(int customSeparatorResourceId) { - initSeparator(customSeparatorResourceId); - } - - protected void initSeparator(int separatorLayoutResourceId) { - customViewResourceId = separatorLayoutResourceId; type = TYPE_MENU_SEPARATOR; setId(-1); setClickable(false); @@ -26,7 +16,7 @@ protected void initSeparator(int separatorLayoutResourceId) { @Override public View render(Context context) { if (renderedView == null) { - renderedView = LayoutInflater.from(context).inflate(this.customViewResourceId, null); + renderedView = new com.shehabic.droppy.views.DroppyMenuSeparator(context); } return renderedView; diff --git a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuContainer.java b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuContainer.java index 9d6af13..bf71547 100644 --- a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuContainer.java +++ b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuContainer.java @@ -26,8 +26,8 @@ public DroppyMenuContainer(Context context, AttributeSet attrs, int defStyleAttr this.setOrientation(VERTICAL); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DroppyMenuPopup, defStyleAttr, 0); ViewGroup.LayoutParams lp = getLayoutParams(); - int height = (int) a.getDimension(R.styleable.DroppyMenuContainer_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); - int width = (int) a.getDimension(R.styleable.DroppyMenuContainer_android_layout_width, ViewGroup.LayoutParams.WRAP_CONTENT); + int height = a.getLayoutDimension(R.styleable.DroppyMenuContainer_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); + int width = a.getLayoutDimension(R.styleable.DroppyMenuContainer_android_layout_width, ViewGroup.LayoutParams.WRAP_CONTENT); if (lp == null) { lp = new ViewGroup.LayoutParams(width, height); diff --git a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItem.java b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItem.java index d26fa33..abc59b1 100644 --- a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItem.java +++ b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItem.java @@ -39,8 +39,8 @@ public DroppyMenuItem(Context context, AttributeSet attrs, int defStyleAttr) { ViewGroup.LayoutParams lp = getLayoutParams(); setMinimumWidth((int) minWidth); setMinimumHeight((int) minHeight); - int width = (int) a.getDimension(R.styleable.DroppyMenuItem_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); - int height = (int) a.getDimension(R.styleable.DroppyMenuItem_android_layout_width, ViewGroup.LayoutParams.WRAP_CONTENT); + int width = a.getLayoutDimension(R.styleable.DroppyMenuItem_android_layout_width, ViewGroup.LayoutParams.MATCH_PARENT); + int height = a.getLayoutDimension(R.styleable.DroppyMenuItem_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); if (lp == null) { lp = new ViewGroup.LayoutParams(width, height); } else { diff --git a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemIcon.java b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemIcon.java index b2fa1d7..f625f6a 100644 --- a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemIcon.java +++ b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemIcon.java @@ -30,14 +30,18 @@ public DroppyMenuItemIcon(Context context, AttributeSet attrs, int defStyleAttr) final int defaultMaxHeight = (int) getResources().getDimension(R.dimen.default_menu_item_icon_maxHeight); final float defaultWeight = 0; final int defaultLayoutGravity = Gravity.START | Gravity.CENTER_VERTICAL; + final int defaultMarginLeft = (int) getResources().getDimension(R.dimen.default_menu_item_icon_marginLeft); + final int defaultMarginRight= (int) getResources().getDimension(R.dimen.default_menu_item_icon_marginRight); TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DroppyMenuItemIcon, defStyleAttr, 0); int maxWidth = (int) a.getDimension(R.styleable.DroppyMenuItemIcon_android_maxWidth, defaultMaxWidth); int maxHeight = (int) a.getDimension(R.styleable.DroppyMenuItemIcon_android_maxHeight, defaultMaxHeight); - int width = (int) a.getDimension(R.styleable.DroppyMenuItemIcon_android_layout_width, ViewGroup.LayoutParams.WRAP_CONTENT); - int height = (int) a.getDimension(R.styleable.DroppyMenuItemIcon_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); + int width = a.getLayoutDimension(R.styleable.DroppyMenuItemIcon_android_layout_width, ViewGroup.LayoutParams.WRAP_CONTENT); + int height = a.getLayoutDimension(R.styleable.DroppyMenuItemIcon_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width, height); + lp.rightMargin = a.getDimensionPixelSize(R.styleable.DroppyMenuItemIcon_android_layout_marginRight, defaultMarginRight); + lp.leftMargin = a.getDimensionPixelSize(R.styleable.DroppyMenuItemIcon_android_layout_marginLeft, defaultMarginLeft); lp.width = width; lp.height = height; lp.weight = a.getFloat(R.styleable.DroppyMenuItemIcon_android_layout_weight, defaultWeight); diff --git a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemTitle.java b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemTitle.java index eb6cd00..2363fab 100644 --- a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemTitle.java +++ b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuItemTitle.java @@ -37,8 +37,8 @@ public DroppyMenuItemTitle(Context context, AttributeSet attrs, int defStyleAttr TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DroppyMenuItemTitle, defStyleAttr, 0); int minWidth = (int) a.getDimension(R.styleable.DroppyMenuItemTitle_android_minWidth, defaultMinWidth); int minHeight = (int) a.getDimension(R.styleable.DroppyMenuItemTitle_android_minHeight, defaultMinHeight); - int width = (int) a.getDimension(R.styleable.DroppyMenuItemTitle_android_layout_width, defaultWidth); - int height = a.getInt(R.styleable.DroppyMenuItemTitle_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); + int width = a.getLayoutDimension(R.styleable.DroppyMenuItemTitle_android_layout_width, defaultWidth); + int height = a.getLayoutDimension(R.styleable.DroppyMenuItemTitle_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); int color = a.getColor(R.styleable.DroppyMenuItemTitle_android_textColor, defaultColor); setGravity(a.getInt(R.styleable.DroppyMenuItemTitle_android_gravity, defaultGravity)); diff --git a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuPopup.java b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuPopup.java index fde6a6b..b5497a4 100644 --- a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuPopup.java +++ b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuPopup.java @@ -28,8 +28,8 @@ public DroppyMenuPopup(Context context, AttributeSet attrs, int defStyleAttr) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DroppyMenuPopup, defStyleAttr, 0); Drawable background = a.getDrawable(R.styleable.DroppyMenuPopup_android_background); - int height = (int) a.getDimension(R.styleable.DroppyMenuPopup_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); - int width = (int) a.getDimension(R.styleable.DroppyMenuPopup_android_layout_width, ViewGroup.LayoutParams.WRAP_CONTENT); + int height = a.getLayoutDimension(R.styleable.DroppyMenuPopup_android_layout_height, ViewGroup.LayoutParams.WRAP_CONTENT); + int width = a.getLayoutDimension(R.styleable.DroppyMenuPopup_android_layout_width, ViewGroup.LayoutParams.WRAP_CONTENT); ViewGroup.LayoutParams lp = getLayoutParams(); if (lp == null) { lp = new ViewGroup.LayoutParams(width, height); diff --git a/library/src/main/java/com/shehabic/droppy/views/DroppyMenuSeparator.java b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuSeparator.java new file mode 100644 index 0000000..7199ebf --- /dev/null +++ b/library/src/main/java/com/shehabic/droppy/views/DroppyMenuSeparator.java @@ -0,0 +1,51 @@ +package com.shehabic.droppy.views; + +import android.content.Context; +import android.content.res.TypedArray; +import android.graphics.drawable.Drawable; +import android.util.AttributeSet; +import android.view.ViewGroup; +import android.widget.LinearLayout; + +import com.shehabic.droppy.R; + +/** + * Created by shehabic on 3/8/15. + */ +public class DroppyMenuSeparator extends LinearLayout { + public DroppyMenuSeparator(Context context) { + this(context, null); + } + + public DroppyMenuSeparator(Context context, AttributeSet attrs) { + this(context, attrs, R.attr.droppyMenuSeparatorStyle); + } + + public DroppyMenuSeparator(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DroppyMenuItem, defStyleAttr, 0); + + final Drawable defaultSeparatorBackground = getResources().getDrawable(R.drawable.droppy_separator_background); + final int defaultHeight = getResources().getDimensionPixelSize(R.dimen.default_menu_separator_height); + ViewGroup.LayoutParams lp = getLayoutParams(); + int width = a.getLayoutDimension(R.styleable.DroppyMenuItem_android_layout_width, ViewGroup.LayoutParams.MATCH_PARENT); + int height = a.getLayoutDimension(R.styleable.DroppyMenuItem_android_layout_height, defaultHeight); + if (lp == null) { + lp = new ViewGroup.LayoutParams(width, height); + } else { + lp.width = width; + lp.height = height; + } + setOrientation(LinearLayout.HORIZONTAL); + + Drawable background = a.getDrawable(R.styleable.DroppyMenuSeparator_android_background); + if (background != null) { + setBackgroundDrawable(background); + } else { + setBackgroundDrawable(defaultSeparatorBackground); + } + + this.setLayoutParams(lp); + } +} diff --git a/library/src/main/res/drawable/droppy_separator_background.xml b/library/src/main/res/drawable/droppy_separator_background.xml new file mode 100644 index 0000000..627d143 --- /dev/null +++ b/library/src/main/res/drawable/droppy_separator_background.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/library/src/main/res/layout/droppy_menu.xml b/library/src/main/res/layout/droppy_menu.xml deleted file mode 100644 index 59003c2..0000000 --- a/library/src/main/res/layout/droppy_menu.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/library/src/main/res/layout/droppy_menu_item.xml b/library/src/main/res/layout/droppy_menu_item.xml deleted file mode 100644 index 47b9aa9..0000000 --- a/library/src/main/res/layout/droppy_menu_item.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/library/src/main/res/layout/droppy_separator.xml b/library/src/main/res/layout/droppy_separator.xml deleted file mode 100644 index efcaabb..0000000 --- a/library/src/main/res/layout/droppy_separator.xml +++ /dev/null @@ -1,3 +0,0 @@ - - \ No newline at end of file diff --git a/library/src/main/res/values/colors.xml b/library/src/main/res/values/colors.xml index 8035c59..bac6d90 100644 --- a/library/src/main/res/values/colors.xml +++ b/library/src/main/res/values/colors.xml @@ -1,4 +1,5 @@ - #FF333333 + #FFBBBBBB + #FF333333 \ No newline at end of file diff --git a/library/src/main/res/values/droppy__attr.xml b/library/src/main/res/values/droppy__attr.xml index 1070846..b69ac56 100644 --- a/library/src/main/res/values/droppy__attr.xml +++ b/library/src/main/res/values/droppy__attr.xml @@ -3,6 +3,7 @@ + @@ -20,6 +21,15 @@ + + + + + + + + + @@ -42,6 +52,8 @@ + + @@ -54,4 +66,6 @@ + + diff --git a/library/src/main/res/values/droppy__defaults.xml b/library/src/main/res/values/droppy__defaults.xml index 6de0597..171dde3 100644 --- a/library/src/main/res/values/droppy__defaults.xml +++ b/library/src/main/res/values/droppy__defaults.xml @@ -6,9 +6,17 @@ + + 0.5dp + 3dp + 3dp + @drawable/droppy_separator_background + + + 150dp - 30dp + 48dp true 2dp 2dp @@ -19,13 +27,16 @@ 32dp 32dp + 5dp + 5dp + - @color/darkgrey + @color/droppy_title_color 128dp 30dp 0dp diff --git a/library/src/main/res/values/droppy__styles.xml b/library/src/main/res/values/droppy__styles.xml index ce21877..f772f66 100644 --- a/library/src/main/res/values/droppy__styles.xml +++ b/library/src/main/res/values/droppy__styles.xml @@ -25,13 +25,9 @@ @@ -57,10 +53,12 @@ start|center_vertical 0 wrap_content + 5dp + 5dp +