From dc1fd3023292c2e2d2f3a32e171e87a80d49aa95 Mon Sep 17 00:00:00 2001 From: clans Date: Thu, 26 Mar 2015 23:39:30 +0200 Subject: [PATCH] Added option to disable FAM icon animation --- library/build.gradle | 4 ++-- .../github/clans/fab/FloatingActionMenu.java | 21 +++++++++++++++---- sample/build.gradle | 9 ++++++-- sample/proguard-rules.pro | 6 ++++++ .../fab/sample/FloatingMenusActivity.java | 3 +++ 5 files changed, 35 insertions(+), 8 deletions(-) diff --git a/library/build.gradle b/library/build.gradle index 836add1..a9ba444 100755 --- a/library/build.gradle +++ b/library/build.gradle @@ -7,8 +7,8 @@ android { defaultConfig { minSdkVersion 15 targetSdkVersion 22 - versionCode 1 - versionName "1.0" + versionCode Integer.parseInt(project.VERSION_CODE) + versionName project.VERSION_NAME } buildTypes { release { diff --git a/library/src/main/java/com/github/clans/fab/FloatingActionMenu.java b/library/src/main/java/com/github/clans/fab/FloatingActionMenu.java index 3a7cdae..e504edc 100755 --- a/library/src/main/java/com/github/clans/fab/FloatingActionMenu.java +++ b/library/src/main/java/com/github/clans/fab/FloatingActionMenu.java @@ -68,6 +68,7 @@ public class FloatingActionMenu extends ViewGroup { private int mLabelsMaxLines; private int mMenuFabSize; private int mLabelsStyle; + private boolean mIconAnimated = true; private OnMenuToggleListener mToggleListener; @@ -423,8 +424,10 @@ public void toggle(boolean animate) { public void open(final boolean animate) { if (!isOpened()) { - mCloseAnimatorSet.cancel(); - mOpenAnimatorSet.start(); + if (mIconAnimated) { + mCloseAnimatorSet.cancel(); + mOpenAnimatorSet.start(); + } mMenuOpened = true; int delay = 0; for (int i = getChildCount() - 1; i >= 0; i--) { @@ -455,8 +458,10 @@ public void run() { public void close(final boolean animate) { if (isOpened()) { - mCloseAnimatorSet.start(); - mOpenAnimatorSet.cancel(); + if (mIconAnimated) { + mCloseAnimatorSet.start(); + mOpenAnimatorSet.cancel(); + } mMenuOpened = false; int delay = 0; for (int i = 0; i < getChildCount(); i++) { @@ -529,4 +534,12 @@ public int getAnimationDelayPerItem() { public void setOnMenuToggleListener(OnMenuToggleListener listener) { mToggleListener = listener; } + + public void setIconAnimated(boolean animated) { + mIconAnimated = animated; + } + + public boolean isIconAnimated() { + return mIconAnimated; + } } diff --git a/sample/build.gradle b/sample/build.gradle index 01f48af..ad5e2e4 100755 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -8,11 +8,16 @@ android { applicationId "com.github.fab.sample" minSdkVersion 15 targetSdkVersion 22 - versionCode 1 - versionName "1.0" + versionCode Integer.parseInt(project.VERSION_CODE) + versionName project.VERSION_NAME } buildTypes { release { + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + + debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } diff --git a/sample/proguard-rules.pro b/sample/proguard-rules.pro index 5bb0e8e..bb0d74f 100755 --- a/sample/proguard-rules.pro +++ b/sample/proguard-rules.pro @@ -15,3 +15,9 @@ #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} + +# keep getters/setters in RotatingDrawable so that animations can still work. +-keepclassmembers class com.github.clans.fab.FloatingActionMenu$RotatingDrawable { + void set*(***); + *** get*(); +} \ No newline at end of file diff --git a/sample/src/main/java/com/github/clans/fab/sample/FloatingMenusActivity.java b/sample/src/main/java/com/github/clans/fab/sample/FloatingMenusActivity.java index f33e6a6..44603a3 100755 --- a/sample/src/main/java/com/github/clans/fab/sample/FloatingMenusActivity.java +++ b/sample/src/main/java/com/github/clans/fab/sample/FloatingMenusActivity.java @@ -30,6 +30,9 @@ protected void onCreate(Bundle savedInstanceState) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); FloatingActionMenu menu2 = (FloatingActionMenu) findViewById(R.id.menu2); + FloatingActionMenu menu3 = (FloatingActionMenu) findViewById(R.id.menu3); + menu3.setIconAnimated(false); + menu2.setIconAnimationInterpolator(new OvershootInterpolator()); menu2.setOnMenuToggleListener(new FloatingActionMenu.OnMenuToggleListener() { @Override