From c79457d329f353472c8c6ac92c3ae46e563980f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20F=C3=A3o?= Date: Mon, 28 Nov 2016 16:47:25 -0200 Subject: [PATCH 1/2] Added drawable on ResideMenuItem to use Iconify --- .../special/ResideMenu/ResideMenuItem.java | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java b/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java index 7ac063f..f1e8d3a 100644 --- a/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java +++ b/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java @@ -1,6 +1,7 @@ package com.special.ResideMenu; import android.content.Context; +import android.graphics.drawable.Drawable; import android.view.LayoutInflater; import android.widget.ImageView; import android.widget.LinearLayout; @@ -39,6 +40,20 @@ public ResideMenuItem(Context context, int icon, String title) { tv_title.setText(title); } + public ResideMenuItem(Context context, Drawable icon, int title) { + super(context); + initViews(context); + iv_icon.setImageDrawable(icon); + tv_title.setText(title); + } + + public ResideMenuItem(Context context, Drawable icon, String title) { + super(context); + initViews(context); + iv_icon.setImageDrawable(icon); + tv_title.setText(title); + } + private void initViews(Context context){ LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.residemenu_item, this); @@ -47,7 +62,7 @@ private void initViews(Context context){ } /** - * set the icon color; + * set the icon resource; * * @param icon */ @@ -55,6 +70,15 @@ public void setIcon(int icon){ iv_icon.setImageResource(icon); } + /** + * set the icon drawable; + * + * @param icon + */ + public void setIcon(Drawable icon){ + iv_icon.setImageDrawable(icon); + } + /** * set the title with resource * ; From 4f98035037b3ccc5be1d1b55fea7b8ad81ca5398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20F=C3=A3o?= Date: Mon, 28 Nov 2016 17:02:27 -0200 Subject: [PATCH 2/2] Load background and icon from URL --- README.md | 23 +++++++++++ .../com/special/ResideMenu/ResideMenu.java | 13 +++++++ .../special/ResideMenu/ResideMenuItem.java | 38 +++++++++++++++++++ ResideMenuDemo/AndroidManifest.xml | 28 ++++++++------ .../src/com/special/ResideMenuDemo/App.java | 24 ++++++++++++ .../special/ResideMenuDemo/MenuActivity.java | 3 +- 6 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 ResideMenuDemo/src/com/special/ResideMenuDemo/App.java diff --git a/README.md b/README.md index e1c1461..e20a562 100644 --- a/README.md +++ b/README.md @@ -112,6 +112,29 @@ disable a swipe direction resideMenu.setSwipeDirectionDisable(ResideMenu.DIRECTION_RIGHT); ``` +use icons from iconify: +```java +IconDrawable drawable = new IconDrawable(context, FontAwesomeIcons.fa_home) + .colorRes(R.color.ab_icon) + .actionBarSize(); +itemHome = new ResideMenuItem(this, drawable, "Home"); +``` + +load background from URL: +```java +//Use this block on your Application class +ResideMenu.imageLoader = new ResideMenu.ImageLoader() { + @Override + public void loadFromUrl(String url, ImageView imageView) { + //Exemple of loading from URL with picasso + Picasso.with(imageView.getContext()).load(url).into(imageView); + } +}; + +//and load from a url +resideMenu.setBackground("some url here"); +``` + ## Custom Usage Do your reside menu configurations, by creating an instance of ResideMenu with your custom layout's resource Ids. If you want to use default layout, just pass that variable as -1. diff --git a/ResideMenu/src/com/special/ResideMenu/ResideMenu.java b/ResideMenu/src/com/special/ResideMenu/ResideMenu.java index 88ab905..9cc9572 100644 --- a/ResideMenu/src/com/special/ResideMenu/ResideMenu.java +++ b/ResideMenu/src/com/special/ResideMenu/ResideMenu.java @@ -7,6 +7,7 @@ import android.graphics.Rect; import android.os.Build; import android.util.DisplayMetrics; +import android.util.Log; import android.view.*; import android.view.animation.AnimationUtils; import android.widget.*; @@ -74,6 +75,7 @@ public class ResideMenu extends FrameLayout { private boolean mUse3D; private static final int ROTATE_Y_ANGLE = 10; + public static ImageLoader imageLoader; public ResideMenu(Context context) { super(context); @@ -216,6 +218,13 @@ private void setShadowAdjustScaleXByOrientation() { public void setBackground(int imageResource) { imageViewBackground.setImageResource(imageResource); } + public void setBackground(String imageUrl) { + if (imageLoader != null) { + imageLoader.loadFromUrl(imageUrl, imageViewBackground); + } else { + Log.e(ResideMenu.class.getName(), "ImageLoader not defined."); + } + } /** * The visibility of the shadow under the activity; @@ -696,6 +705,10 @@ public interface OnMenuListener { public void closeMenu(); } + public interface ImageLoader{ + void loadFromUrl(String url, ImageView imageView); + } + private void showScrollViewMenu(View scrollViewMenu) { if (scrollViewMenu != null && scrollViewMenu.getParent() == null) { addView(scrollViewMenu); diff --git a/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java b/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java index f1e8d3a..e1aa835 100644 --- a/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java +++ b/ResideMenu/src/com/special/ResideMenu/ResideMenuItem.java @@ -2,6 +2,7 @@ import android.content.Context; import android.graphics.drawable.Drawable; +import android.util.Log; import android.view.LayoutInflater; import android.widget.ImageView; import android.widget.LinearLayout; @@ -54,6 +55,30 @@ public ResideMenuItem(Context context, Drawable icon, String title) { tv_title.setText(title); } + public ResideMenuItem(Context context, String icon, int title) { + super(context); + initViews(context); + + tv_title.setText(title); + if (ResideMenu.imageLoader != null) { + ResideMenu.imageLoader.loadFromUrl(icon, iv_icon); + } else { + Log.e(ResideMenu.class.getName(), "ImageLoader not defined."); + } + } + + public ResideMenuItem(Context context, String icon, String title) { + super(context); + initViews(context); + + tv_title.setText(title); + if (ResideMenu.imageLoader != null) { + ResideMenu.imageLoader.loadFromUrl(icon, iv_icon); + } else { + Log.e(ResideMenu.class.getName(), "ImageLoader not defined."); + } + } + private void initViews(Context context){ LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); inflater.inflate(R.layout.residemenu_item, this); @@ -79,6 +104,19 @@ public void setIcon(Drawable icon){ iv_icon.setImageDrawable(icon); } + /** + * set the icon url; + * + * @param icon + */ + public void setIcon(String icon){ + if (ResideMenu.imageLoader != null) { + ResideMenu.imageLoader.loadFromUrl(icon, iv_icon); + } else { + Log.e(ResideMenu.class.getName(), "ImageLoader not defined."); + } + } + /** * set the title with resource * ; diff --git a/ResideMenuDemo/AndroidManifest.xml b/ResideMenuDemo/AndroidManifest.xml index a57b655..3aecd02 100644 --- a/ResideMenuDemo/AndroidManifest.xml +++ b/ResideMenuDemo/AndroidManifest.xml @@ -1,17 +1,23 @@ - - - + package="com.special.ResideMenuDemo" + android:versionCode="1" + android:versionName="1.0"> + + + + - - + + diff --git a/ResideMenuDemo/src/com/special/ResideMenuDemo/App.java b/ResideMenuDemo/src/com/special/ResideMenuDemo/App.java new file mode 100644 index 0000000..34e6013 --- /dev/null +++ b/ResideMenuDemo/src/com/special/ResideMenuDemo/App.java @@ -0,0 +1,24 @@ +package com.special.ResideMenuDemo; + +import android.app.Application; +import android.widget.ImageView; + +import com.special.ResideMenu.ResideMenu; + +/** + * Created by gusta on 28/11/2016. + */ + +public class App extends Application { + + @Override + public void onCreate() { + super.onCreate(); + ResideMenu.imageLoader = new ResideMenu.ImageLoader() { + @Override + public void loadFromUrl(String url, ImageView imageView) { +// Picasso.with(imageView.getContext()).load(url).into(imageView); + } + }; + } +} diff --git a/ResideMenuDemo/src/com/special/ResideMenuDemo/MenuActivity.java b/ResideMenuDemo/src/com/special/ResideMenuDemo/MenuActivity.java index 9150623..18272b1 100644 --- a/ResideMenuDemo/src/com/special/ResideMenuDemo/MenuActivity.java +++ b/ResideMenuDemo/src/com/special/ResideMenuDemo/MenuActivity.java @@ -37,7 +37,8 @@ private void setUpMenu() { // attach to current activity; resideMenu = new ResideMenu(this); resideMenu.setUse3D(true); - resideMenu.setBackground(R.drawable.menu_background); +// resideMenu.setBackground(R.drawable.menu_background); + resideMenu.setBackground("some url here"); resideMenu.attachToActivity(this); resideMenu.setMenuListener(menuListener); //valid scale factor is between 0.0f and 1.0f. leftmenu'width is 150dip.