diff --git a/README.md b/README.md index ca33b3e07..f1ee31265 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ You can find anything you search for in the wiki. (If not open an issue) The AboutLibraries Library is pushed to [Maven Central](http://search.maven.org/#search|ga|1|g%3A%22com.mikepenz%22), so you just need to add the following dependency to your `build.gradle`. It seems it is also required to add the support dependencies to the application. If it works without, you should be fine too :). ```javascript -compile('com.mikepenz:aboutlibraries:5.2.6@aar') { +compile('com.mikepenz:aboutlibraries:5.2.7@aar') { transitive = true } ``` diff --git a/gradle.properties b/gradle.properties index fc8b1330e..69018ab56 100755 --- a/gradle.properties +++ b/gradle.properties @@ -17,8 +17,8 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -VERSION_NAME=5.2.6 -VERSION_CODE=526 +VERSION_NAME=5.2.7 +VERSION_CODE=527 GROUP=com.mikepenz POM_DESCRIPTION=AboutLibraries Library diff --git a/library/build.gradle b/library/build.gradle index ae549f15c..b07fd5a65 100755 --- a/library/build.gradle +++ b/library/build.gradle @@ -6,8 +6,8 @@ android { defaultConfig { minSdkVersion 10 targetSdkVersion 23 - versionCode 526 - versionName '5.2.6' + versionCode 527 + versionName '5.2.7' } buildTypes { diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java b/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java index 58311196e..1b90f603c 100644 --- a/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java @@ -4,6 +4,7 @@ import android.content.Intent; import android.os.Bundle; import android.util.Log; +import android.view.animation.LayoutAnimationController; import com.mikepenz.aboutlibraries.entity.Library; import com.mikepenz.aboutlibraries.ui.LibsActivity; @@ -378,7 +379,7 @@ public LibsBuilder withLibraryModification(String library, Libs.LibraryFields mo } /** - * Builder method to set the listener for the AboutLibraries actions + * Builder method to set the LibsListener for the AboutLibraries actions * * @param libsListener the listener to be notified * @return @@ -388,9 +389,44 @@ public LibsBuilder withListener(LibsConfiguration.LibsListener libsListener) { return this; } - /* - * START OF THE FINAL METHODS - */ + /** + * Builder method to set the LibsRecyclerViewListener for the AboutLibraries recyclerView elements + * + * @param recyclerViewListener + * @return + */ + public LibsBuilder withLibsRecyclerViewListener(LibsConfiguration.LibsRecyclerViewListener recyclerViewListener) { + LibsConfiguration.getInstance().setLibsRecyclerViewListener(recyclerViewListener); + return this; + } + + + /** + * Builder method to set the LibsUIListener for the AboutLibraries view to hook into the view creation + * + * @param uiListener + * @return + */ + public LibsBuilder withUiListener(LibsConfiguration.LibsUIListener uiListener) { + LibsConfiguration.getInstance().setUiListener(uiListener); + return this; + } + + /** + * Builder method to set the LayoutAnimationController for the RecyclerView + * + * @param layoutAnimationController + * @return + */ + public LibsBuilder withLayoutAnimationController(LayoutAnimationController layoutAnimationController) { + LibsConfiguration.getInstance().setLayoutAnimationController(layoutAnimationController); + return this; + } + + /* + * START OF THE FINAL METHODS + */ + private void preCheck() { if (fields == null) { diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/LibsConfiguration.java b/library/src/main/java/com/mikepenz/aboutlibraries/LibsConfiguration.java index 1ef6a8e3c..0dec8e45f 100644 --- a/library/src/main/java/com/mikepenz/aboutlibraries/LibsConfiguration.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/LibsConfiguration.java @@ -4,6 +4,7 @@ import android.view.animation.LayoutAnimationController; import com.mikepenz.aboutlibraries.entity.Library; +import com.mikepenz.aboutlibraries.ui.adapter.LibsRecyclerViewAdapter; /** * Created by mikepenz on 20.05.15. @@ -26,44 +27,59 @@ public static LibsConfiguration getInstance() { /** * LOGIC FOR THE LISTENER */ - private LibsListener listener = null; + private LibsListener mListener = null; public void setListener(LibsListener libsListener) { - this.listener = libsListener; + this.mListener = libsListener; } public LibsListener getListener() { - return listener; + return mListener; } public void removeListener() { - this.listener = null; + this.mListener = null; } - private LibsUIListener uiListener = null; + private LibsUIListener mUiListener = null; public LibsUIListener getUiListener() { - return uiListener; + return mUiListener; } public void setUiListener(LibsUIListener uiListener) { - this.uiListener = uiListener; + this.mUiListener = uiListener; } public void removeUiListener() { - this.uiListener = null; + this.mUiListener = null; } - private LayoutAnimationController layoutAnimationController = null; + private LibsRecyclerViewListener mRecyclerViewListener = null; + + public LibsRecyclerViewListener getLibsRecyclerViewListener() { + return mRecyclerViewListener; + } + + public void setLibsRecyclerViewListener(LibsRecyclerViewListener recyclerViewListener) { + this.mRecyclerViewListener = recyclerViewListener; + } + + public void removeLibsRecyclerViewListener() { + this.mRecyclerViewListener = null; + } + + + private LayoutAnimationController mLayoutAnimationController = null; public LayoutAnimationController getLayoutAnimationController() { - return layoutAnimationController; + return mLayoutAnimationController; } public void setLayoutAnimationController(LayoutAnimationController layoutAnimationController) { - this.layoutAnimationController = layoutAnimationController; + this.mLayoutAnimationController = layoutAnimationController; } /** @@ -76,11 +92,39 @@ public void reset() { public interface LibsUIListener { + /** + * PreOnCreateView method called before the view was created + * + * @param view + * @return + */ View preOnCreateView(View view); + /** + * PostOnCreateView method called after the view was created + * + * @param view + * @return + */ View postOnCreateView(View view); } + public interface LibsRecyclerViewListener { + /** + * OnBindHeaderViewHolder called after the headerView was filled inside the recyclerViews onBindViewHolder method + * + * @param headerViewHolder + */ + void OnBindViewHolder(LibsRecyclerViewAdapter.HeaderViewHolder headerViewHolder); + + /** + * OnBindViewHolder called after the item view was filled inside the recyclerViews onBindViewHolder method + * + * @param headerViewHolder + */ + void OnBindViewHolder(LibsRecyclerViewAdapter.ViewHolder headerViewHolder); + } + public interface LibsListener { /** * onClick listener if the icon of the AboutAppSection is clicked @@ -165,6 +209,16 @@ public interface LibsListener { boolean onLibraryBottomLongClicked(View v, Library library); } + public abstract class LibsRecyclerViewListenerImpl implements LibsRecyclerViewListener { + @Override + public void OnBindViewHolder(LibsRecyclerViewAdapter.HeaderViewHolder headerViewHolder) { + } + + @Override + public void OnBindViewHolder(LibsRecyclerViewAdapter.ViewHolder headerViewHolder) { + } + } + public abstract class LibsListenerImpl implements LibsListener { @Override public void onIconClicked(View v) { diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsFragment.java b/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsFragment.java index c4d83f2be..aec1a884f 100644 --- a/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsFragment.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsFragment.java @@ -44,6 +44,8 @@ public class LibsFragment extends Fragment { private Comparator comparator; + private AsyncTask mLibTask; + /** * Default Constructor * Gets an libs instance and gets all external libs @@ -229,7 +231,16 @@ public void onViewCreated(View view, Bundle savedInstanceState) { //load the data if (getContext() != null) { //fill the fragment with the content - new LibraryTask(getContext()).execute(); + mLibTask = new LibraryTask(getContext()).execute(); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (mLibTask != null) { + mLibTask.cancel(true); + mLibTask = null; } } diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/ui/adapter/LibsRecyclerViewAdapter.java b/library/src/main/java/com/mikepenz/aboutlibraries/ui/adapter/LibsRecyclerViewAdapter.java index 676eaf2ec..07f4a182b 100755 --- a/library/src/main/java/com/mikepenz/aboutlibraries/ui/adapter/LibsRecyclerViewAdapter.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/ui/adapter/LibsRecyclerViewAdapter.java @@ -197,6 +197,11 @@ public void onClick(View v) { if (!libsBuilder.aboutShowIcon && !libsBuilder.aboutShowVersion || TextUtils.isEmpty(libsBuilder.aboutDescription)) { holder.aboutDivider.setVisibility(View.GONE); } + + //notify the libsRecyclerViewListener to allow modifications + if (LibsConfiguration.getInstance().getLibsRecyclerViewListener() != null) { + LibsConfiguration.getInstance().getLibsRecyclerViewListener().OnBindViewHolder(holder); + } } else if (viewHolder instanceof ViewHolder) { ViewHolder holder = (ViewHolder) viewHolder; @@ -341,6 +346,11 @@ public boolean onLongClick(View v) { holder.libraryBottomContainer.setOnLongClickListener(null); } + + //notify the libsRecyclerViewListener to allow modifications + if (LibsConfiguration.getInstance().getLibsRecyclerViewListener() != null) { + LibsConfiguration.getInstance().getLibsRecyclerViewListener().OnBindViewHolder(holder); + } } } diff --git a/library/src/main/res/values/library_aboutlibraries_strings.xml b/library/src/main/res/values/library_aboutlibraries_strings.xml index 23022b1c0..60c00289a 100755 --- a/library/src/main/res/values/library_aboutlibraries_strings.xml +++ b/library/src/main/res/values/library_aboutlibraries_strings.xml @@ -12,7 +12,7 @@ Most modern apps feature an "Used Library"-Section and for this some information of those libs is required. As it gets annoying to copy those strings always to your app I have developed this small helper library to provide the required information. ]]> - 5.2.6 + 5.2.7 https://github.com/mikepenz/AboutLibraries apache_2_0 true diff --git a/sample/build.gradle b/sample/build.gradle index 0ccd976b6..625adf916 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -13,8 +13,8 @@ android { applicationId 'com.mikepenz.aboutlibraries.sample' minSdkVersion 11 targetSdkVersion 23 - versionCode 526 - versionName '5.2.6' + versionCode 527 + versionName '5.2.7' applicationVariants.all { variant -> variant.outputs.each { output ->