From 5534cc30885b581b739133833d79ad09eb0410c4 Mon Sep 17 00:00:00 2001 From: Aleksandr Mirko Date: Sun, 26 Apr 2015 22:09:59 +0600 Subject: [PATCH 1/3] Add rv_rippleDelayClick attribute for waiting of finish animation for calling performClick() action --- gradlew | 0 .../java/com/andexert/library/RippleView.java | 30 +++++++++++++++---- library/src/main/res/values/attrs.xml | 1 + 3 files changed, 25 insertions(+), 6 deletions(-) mode change 100644 => 100755 gradlew diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/library/src/main/java/com/andexert/library/RippleView.java b/library/src/main/java/com/andexert/library/RippleView.java index 35232f0..92be032 100644 --- a/library/src/main/java/com/andexert/library/RippleView.java +++ b/library/src/main/java/com/andexert/library/RippleView.java @@ -34,7 +34,6 @@ import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.os.Handler; -import android.support.annotation.NonNull; import android.util.AttributeSet; import android.view.GestureDetector; import android.view.MotionEvent; @@ -73,6 +72,7 @@ public class RippleView extends RelativeLayout { private Bitmap originBitmap; private int rippleColor; private int ripplePadding; + private boolean rippleDelayClick; private GestureDetector gestureDetector; private final Runnable runnable = new Runnable() { @Override @@ -111,6 +111,7 @@ private void init(final Context context, final AttributeSet attrs) { canvasHandler = new Handler(); zoomScale = typedArray.getFloat(R.styleable.RippleView_rv_zoomScale, 1.03f); zoomDuration = typedArray.getInt(R.styleable.RippleView_rv_zoomDuration, 200); + rippleDelayClick = typedArray.getBoolean(R.styleable.RippleView_rv_rippleDelayClick, true); typedArray.recycle(); paint = new Paint(); paint.setAntiAlias(true); @@ -124,7 +125,9 @@ private void init(final Context context, final AttributeSet attrs) { public void onLongPress(MotionEvent event) { super.onLongPress(event); animateRipple(event); - sendClickEvent(true); + if (!rippleDelayClick) { + sendClickEvent(true); + } } @Override @@ -144,7 +147,7 @@ public boolean onSingleTapUp(MotionEvent e) { @Override - public void draw(@NonNull Canvas canvas) { + public void draw(Canvas canvas) { super.draw(canvas); if (animationRunning) { if (DURATION <= timer * FRAME_RATE) { @@ -154,6 +157,9 @@ public void draw(@NonNull Canvas canvas) { timerEmpty = 0; canvas.restore(); invalidate(); + if (rippleDelayClick) { + sendClickEvent(false); + } return; } else canvasHandler.postDelayed(runnable, FRAME_RATE); @@ -242,12 +248,14 @@ private void createAnimation(final float x, final float y) { @Override - public boolean onTouchEvent(@NonNull MotionEvent event) { + public boolean onTouchEvent(MotionEvent event) { if (gestureDetector.onTouchEvent(event)) { animateRipple(event); - sendClickEvent(false); + if (!rippleDelayClick) { + sendClickEvent(false); + } } - return super.onTouchEvent(event); + return rippleDelayClick ? true : super.onTouchEvent(event); } @Override @@ -267,6 +275,8 @@ private void sendClickEvent(final Boolean isLongClick) { if (((ListView) getParent()).getOnItemClickListener() != null) ((ListView) getParent()).getOnItemClickListener().onItemClick(((ListView) getParent()), this, position, id); } + } else { + performClick(); } } @@ -293,4 +303,12 @@ public void setRippleColor(int rippleColor) { public int getRippleColor() { return rippleColor; } + + public boolean isRippleDelayClick() { + return rippleDelayClick; + } + + public void setRippleDelayClick(boolean rippleDelayClick) { + this.rippleDelayClick = rippleDelayClick; + } } diff --git a/library/src/main/res/values/attrs.xml b/library/src/main/res/values/attrs.xml index 34028d8..bf825b4 100644 --- a/library/src/main/res/values/attrs.xml +++ b/library/src/main/res/values/attrs.xml @@ -39,6 +39,7 @@ + \ No newline at end of file From 67fc73ed2aeeeae3d7f95d21501e6963125c1702 Mon Sep 17 00:00:00 2001 From: Aleksandr Mirko Date: Mon, 1 Feb 2016 22:05:48 +0600 Subject: [PATCH 2/3] Upgrade dependencies --- README.md | 1 + build.gradle | 7 ++++++- gradle/wrapper/gradle-wrapper.properties | 2 +- library/build.gradle | 8 ++++---- sample/build.gradle | 16 ++++++++-------- 5 files changed, 20 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index c16e716..97def52 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,7 @@ You can change several attributes in the XML file, you have to remove "rv_" if y * app:rv_framerate [integer def:10] --> Frame rate of the ripple animation * app:rv_rippleDuration [integer def:400] --> Duration of the ripple animation * app:rv_ripplePadding [dimension def:0] --> Add a padding to the ripple +* app:rv_rippleDelayClick [boolean def:false] --> "true" means onLick event will be invoked after animation. * app:rv_color [color def:@android:color/white] --> Color of the ripple * app:rv_centered [boolean def:false] --> Center ripple in the child view * app:rv_type [enum (simpleRipple, doubleRipple) def:simpleRipple] --> Simple or double ripple diff --git a/build.gradle b/build.gradle index 6e050ab..805db68 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:1.2.3' + classpath 'com.android.tools.build:gradle:2.0.+' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -22,3 +22,8 @@ allprojects { jcenter() } } + +task clean(type: Delete) { + delete rootProject.buildDir +} + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7ab78aa..c6f72ed 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip diff --git a/library/build.gradle b/library/build.gradle index cf42a06..d1384ff 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.library' android { - compileSdkVersion 22 - buildToolsVersion "22.0.1" + compileSdkVersion 23 + buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 9 - targetSdkVersion 22 + targetSdkVersion 23 versionCode 9 versionName "1.3" } @@ -23,7 +23,7 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.android.support:support-annotations:22.0.0' + compile 'com.android.support:support-annotations:23.1.1' } if (hasProperty("VERSION_NAME")) diff --git a/sample/build.gradle b/sample/build.gradle index a488ccf..6b2f973 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,12 +1,12 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 22 - buildToolsVersion '22.0.1' + compileSdkVersion 23 + buildToolsVersion '23.0.2' defaultConfig { minSdkVersion 14 - targetSdkVersion 22 + targetSdkVersion 23 versionCode 1 versionName '1.0' } @@ -23,10 +23,10 @@ android { dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) - compile 'com.github.traex.rippleeffect:library:1.3' - compile 'com.android.support:appcompat-v7:22.0.0' - compile 'com.android.support:palette-v7:22.0.0' - compile 'com.android.support:recyclerview-v7:22.0.0' - compile 'com.android.support:support-v4:22.0.0' + compile 'com.android.support:appcompat-v7:23.1.1' + compile 'com.android.support:palette-v7:23.1.1' + compile 'com.android.support:recyclerview-v7:23.1.1' + compile 'com.android.support:support-v4:23.1.1' compile 'com.squareup.picasso:picasso:2.5.1' + compile project (":library") } From 438549427fb8c72c59314f505669e1ff9d55bcf2 Mon Sep 17 00:00:00 2001 From: Aleksandr Mirko Date: Mon, 1 Feb 2016 22:11:54 +0600 Subject: [PATCH 3/3] Fixed canvas crash on Marshmallow --- library/src/main/java/com/andexert/library/RippleView.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/andexert/library/RippleView.java b/library/src/main/java/com/andexert/library/RippleView.java index 6d6ccf2..befb656 100644 --- a/library/src/main/java/com/andexert/library/RippleView.java +++ b/library/src/main/java/com/andexert/library/RippleView.java @@ -167,7 +167,11 @@ public void draw(Canvas canvas) { timer = 0; durationEmpty = -1; timerEmpty = 0; - canvas.restore(); + try { + canvas.restore(); + }catch(Exception e){ + e.printStackTrace(); + } invalidate(); if (rippleDelayClick) { sendClickEvent(false);