From eeb59ace75a46ff83106758677a7d428479f5f49 Mon Sep 17 00:00:00 2001 From: Bakht Date: Thu, 9 Nov 2017 14:38:47 +0400 Subject: [PATCH] add end animation listener --- README.md | 4 +- .../android/activities/MainActivity.java | 4 +- build.gradle | 2 +- .../android/views/ExpandableTextView.java | 73 +++++++++++++++---- 4 files changed, 64 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index d292e9c..bbcced5 100644 --- a/README.md +++ b/README.md @@ -123,13 +123,13 @@ buttonToggle.setOnClickListener(new View.OnClickListener() expandableTextView.setOnExpandListener(new ExpandableTextView.OnExpandListener() { @Override - public void onExpand(final ExpandableTextView view) + public void onStartExpand(final ExpandableTextView view) { Log.d(TAG, "ExpandableTextView expanded"); } @Override - public void onCollapse(final ExpandableTextView view) + public void onStartCollapse(final ExpandableTextView view) { Log.d(TAG, "ExpandableTextView collapsed"); } diff --git a/app/src/main/java/at/blogc/android/activities/MainActivity.java b/app/src/main/java/at/blogc/android/activities/MainActivity.java index 7a2ef5a..071922f 100644 --- a/app/src/main/java/at/blogc/android/activities/MainActivity.java +++ b/app/src/main/java/at/blogc/android/activities/MainActivity.java @@ -85,13 +85,13 @@ public void onClick(final View v) expandableTextView.addOnExpandListener(new ExpandableTextView.OnExpandListener() { @Override - public void onExpand(@NonNull final ExpandableTextView view) + public void onStartExpand(@NonNull final ExpandableTextView view) { Log.d(TAG, "ExpandableTextView expanded"); } @Override - public void onCollapse(@NonNull final ExpandableTextView view) + public void onStartCollapse(@NonNull final ExpandableTextView view) { Log.d(TAG, "ExpandableTextView collapsed"); } diff --git a/build.gradle b/build.gradle index 85f177b..d34c7de 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.0' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' } diff --git a/expandabletextview/src/main/java/at/blogc/android/views/ExpandableTextView.java b/expandabletextview/src/main/java/at/blogc/android/views/ExpandableTextView.java index e770485..573ea73 100644 --- a/expandabletextview/src/main/java/at/blogc/android/views/ExpandableTextView.java +++ b/expandabletextview/src/main/java/at/blogc/android/views/ExpandableTextView.java @@ -113,7 +113,7 @@ public boolean expand() if (!this.expanded && !this.animating && this.maxLines >= 0) { // notify listener - this.notifyOnExpand(); + this.notifyOnStartExpand(); // measure collapsed height this.measure @@ -169,6 +169,7 @@ public void onAnimationEnd(final Animator animation) // keep track of current status ExpandableTextView.this.expanded = true; ExpandableTextView.this.animating = false; + notifyOnEndExpand(); } }); @@ -195,7 +196,7 @@ public boolean collapse() if (this.expanded && !this.animating && this.maxLines >= 0) { // notify listener - this.notifyOnCollapse(); + this.notifyOnStartCollapse(); // measure expanded height final int expandedHeight = this.getMeasuredHeight(); @@ -232,6 +233,7 @@ public void onAnimationEnd(final Animator animation) final ViewGroup.LayoutParams layoutParams = ExpandableTextView.this.getLayoutParams(); layoutParams.height = ViewGroup.LayoutParams.WRAP_CONTENT; ExpandableTextView.this.setLayoutParams(layoutParams); + notifyOnEndCollapse(); } }); @@ -338,24 +340,45 @@ public boolean isExpanded() //endregion /** - * This method will notify the listener about this view being expanded. + * This method will notify the listener about this view starts to collapse. */ - private void notifyOnCollapse() + private void notifyOnStartCollapse() { for (final OnExpandListener onExpandListener : this.onExpandListeners) { - onExpandListener.onCollapse(this); + onExpandListener.onStartCollapse(this); } } /** - * This method will notify the listener about this view being collapsed. + * This method will notify the listener about this view starts to expand. */ - private void notifyOnExpand() + private void notifyOnStartExpand() { for (final OnExpandListener onExpandListener : this.onExpandListeners) { - onExpandListener.onExpand(this); + onExpandListener.onStartExpand(this); + } + } + /** + * This method will notify the listener about this view finishes to collapse. + */ + private void notifyOnEndCollapse() + { + for (final OnExpandListener onExpandListener : this.onExpandListeners) + { + onExpandListener.onEndCollapse(this); + } + } + + /** + * This method will notify the listener about this view finishes to expand. + */ + private void notifyOnEndExpand() + { + for (final OnExpandListener onExpandListener : this.onExpandListeners) + { + onExpandListener.onEndExpand(this); } } @@ -368,16 +391,28 @@ private void notifyOnExpand() public interface OnExpandListener { /** - * The {@link ExpandableTextView} is being expanded. + * The {@link ExpandableTextView} starts to expand. * @param view the textview */ - void onExpand(@NonNull ExpandableTextView view); + void onStartExpand(@NonNull ExpandableTextView view); /** - * The {@link ExpandableTextView} is being collapsed. + * The {@link ExpandableTextView} starts to collapse. * @param view the textview */ - void onCollapse(@NonNull ExpandableTextView view); + void onStartCollapse(@NonNull ExpandableTextView view); + + /** + * The {@link ExpandableTextView} finishes to expand. + * @param view the textview + */ + void onEndExpand(@NonNull ExpandableTextView view); + + /** + * The {@link ExpandableTextView} finishes to collapse. + * @param view the textview + */ + void onEndCollapse(@NonNull ExpandableTextView view); } /** @@ -388,16 +423,26 @@ public interface OnExpandListener public static class SimpleOnExpandListener implements OnExpandListener { @Override - public void onExpand(@NonNull final ExpandableTextView view) + public void onStartExpand(@NonNull final ExpandableTextView view) { // empty implementation } @Override - public void onCollapse(@NonNull final ExpandableTextView view) + public void onStartCollapse(@NonNull final ExpandableTextView view) { // empty implementation } + + @Override + public void onEndExpand(@NonNull ExpandableTextView view) { + // empty implementation + } + + @Override + public void onEndCollapse(@NonNull ExpandableTextView view) { + // empty implementation + } } //endregion