From 4440869c8543d4416b88f22b57f9e712d415bb27 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Mon, 2 Nov 2015 23:23:04 +0100 Subject: [PATCH 1/4] * move logic of LibsFragment to LibsFragmentCompat * create new LibsFragment and LibsSupportFragment * Rename all references to LibsFragment to LibsSupportFragment * improve and change to ContextCompat * use correct getContext method --- .../mikepenz/aboutlibraries/LibsBuilder.java | 6 +- .../aboutlibraries/LibsFragmentCompat.java | 276 ++++++++++++++++++ .../aboutlibraries/ui/LibsActivity.java | 7 +- .../aboutlibraries/ui/LibsFragment.java | 267 +---------------- .../ui/LibsSupportFragment.java | 47 +++ 5 files changed, 343 insertions(+), 260 deletions(-) create mode 100644 library/src/main/java/com/mikepenz/aboutlibraries/LibsFragmentCompat.java create mode 100644 library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.java diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java b/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java index 1b90f603c..e26d710fa 100644 --- a/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java @@ -8,7 +8,7 @@ import com.mikepenz.aboutlibraries.entity.Library; import com.mikepenz.aboutlibraries.ui.LibsActivity; -import com.mikepenz.aboutlibraries.ui.LibsFragment; +import com.mikepenz.aboutlibraries.ui.LibsSupportFragment; import com.mikepenz.aboutlibraries.ui.adapter.LibsRecyclerViewAdapter; import com.mikepenz.aboutlibraries.util.Colors; @@ -507,11 +507,11 @@ public void activity(Context ctx) { * * @return the fragment to set in your application */ - public LibsFragment fragment() { + public LibsSupportFragment fragment() { Bundle bundle = new Bundle(); bundle.putSerializable("data", this); - LibsFragment fragment = new LibsFragment(); + LibsSupportFragment fragment = new LibsSupportFragment(); fragment.setArguments(bundle); return fragment; diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/LibsFragmentCompat.java b/library/src/main/java/com/mikepenz/aboutlibraries/LibsFragmentCompat.java new file mode 100644 index 000000000..cdf10bc24 --- /dev/null +++ b/library/src/main/java/com/mikepenz/aboutlibraries/LibsFragmentCompat.java @@ -0,0 +1,276 @@ +package com.mikepenz.aboutlibraries; + +import android.content.Context; +import android.content.pm.ApplicationInfo; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.graphics.drawable.Drawable; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.v7.widget.DefaultItemAnimator; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.text.TextUtils; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.animation.Animation; +import android.view.animation.AnimationUtils; +import android.view.animation.LayoutAnimationController; + +import com.mikepenz.aboutlibraries.entity.Library; +import com.mikepenz.aboutlibraries.ui.adapter.LibsRecyclerViewAdapter; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; + +/** + * Created by mikepenz on 02.11.15. + */ +public class LibsFragmentCompat { + private RecyclerView mRecyclerView; + private LibsRecyclerViewAdapter mAdapter; + + private LibsBuilder builder = null; + + private static ArrayList libraries; + + private Comparator comparator; + + private AsyncTask mLibTask; + + /** + * Default Constructor + * Gets an libs instance and gets all external libs + */ + public LibsFragmentCompat() { + } + + public void setLibraryComparator(final Comparator comparator) { + this.comparator = comparator; + } + + public void onAttach(Context context, Bundle bundle) { + if (bundle != null) { + builder = (LibsBuilder) bundle.getSerializable("data"); + } else { + Log.e("AboutLibraries", "The AboutLibraries fragment can't be build without the bundle containing the LibsBuilder"); + return; + } + } + + private class LibraryTask extends AsyncTask { + Context ctx; + + String versionName; + Integer versionCode; + Drawable icon = null; + + public LibraryTask(Context ctx) { + this.ctx = ctx; + } + + @Override + protected void onPreExecute() { + super.onPreExecute(); + } + + @Override + protected String doInBackground(String... strings) { + //init the Libs instance with fields if they were set + Libs libs = null; + if (builder == null || builder.fields == null) { + libs = new Libs(ctx); + } else { + libs = new Libs(ctx, builder.fields); + } + + //fill the builder with the information + builder.aboutShowIcon = extractBooleanBundleOrResource(ctx, libs, builder.aboutShowIcon, "aboutLibraries_description_showIcon"); + builder.aboutShowVersion = extractBooleanBundleOrResource(ctx, libs, builder.aboutShowVersion, "aboutLibraries_description_showVersion"); + builder.aboutShowVersionName = extractBooleanBundleOrResource(ctx, libs, builder.aboutShowVersionName, "aboutLibraries_description_showVersionName"); + builder.aboutShowVersionCode = extractBooleanBundleOrResource(ctx, libs, builder.aboutShowVersionCode, "aboutLibraries_description_showVersionCode"); + + builder.aboutAppName = extractStringBundleOrResource(ctx, libs, builder.aboutAppName, "aboutLibraries_description_name"); + builder.aboutDescription = extractStringBundleOrResource(ctx, libs, builder.aboutDescription, "aboutLibraries_description_text"); + + builder.aboutAppSpecial1 = extractStringBundleOrResource(ctx, libs, builder.aboutAppSpecial1, "aboutLibraries_description_special1_name"); + builder.aboutAppSpecial1Description = extractStringBundleOrResource(ctx, libs, builder.aboutAppSpecial1Description, "aboutLibraries_description_special1_text"); + builder.aboutAppSpecial2 = extractStringBundleOrResource(ctx, libs, builder.aboutAppSpecial2, "aboutLibraries_description_special2_name"); + builder.aboutAppSpecial2Description = extractStringBundleOrResource(ctx, libs, builder.aboutAppSpecial2Description, "aboutLibraries_description_special2_text"); + builder.aboutAppSpecial3 = extractStringBundleOrResource(ctx, libs, builder.aboutAppSpecial3, "aboutLibraries_description_special3_name"); + builder.aboutAppSpecial3Description = extractStringBundleOrResource(ctx, libs, builder.aboutAppSpecial3Description, "aboutLibraries_description_special3_text"); + + //only if the libs were not loaded before + if (libraries == null) { + //apply modifications + libs.modifyLibraries(builder.libraryModification); + + //fetch the libraries and sort if a comparator was set + boolean doDefaultSort = (builder.sort && null == builder.libraryComparator && null == comparator); + + libraries = libs.prepareLibraries(ctx, builder.internalLibraries, builder.excludeLibraries, builder.autoDetect, doDefaultSort); + + if (comparator != null) { + Collections.sort(libraries, comparator); + } else if (builder.libraryComparator != null) { + Collections.sort(libraries, builder.libraryComparator); + } + } + + //load the data for the header + if (builder.aboutShowIcon != null && (builder.aboutShowVersion != null || builder.aboutShowVersionName != null || builder.aboutShowVersionCode)) { + //get the packageManager to load and read some values :D + PackageManager pm = ctx.getPackageManager(); + //get the packageName + String packageName = ctx.getPackageName(); + //Try to load the applicationInfo + ApplicationInfo appInfo = null; + PackageInfo packageInfo = null; + try { + appInfo = pm.getApplicationInfo(packageName, 0); + packageInfo = pm.getPackageInfo(packageName, 0); + } catch (Exception ex) { + } + + //Set the Icon or hide it + if (builder.aboutShowIcon && appInfo != null) { + icon = appInfo.loadIcon(pm); + } + + //set the Version or hide it + versionName = null; + versionCode = null; + if (packageInfo != null) { + versionName = packageInfo.versionName; + versionCode = packageInfo.versionCode; + } + } + return null; + } + + @Override + protected void onPostExecute(String s) { + //Add the header + if (builder.aboutShowIcon != null && (builder.aboutShowVersion != null || builder.aboutShowVersionName != null || builder.aboutShowVersionCode)) { + //add this cool thing to the headerView of our listView + mAdapter.setHeader(versionName, versionCode, icon); + } + + //add the libs + mAdapter.addLibs(libraries); + + //animate filling the list + if (builder.animate) { + LayoutAnimationController layoutAnimationController; + + if (LibsConfiguration.getInstance().getLayoutAnimationController() == null) { + Animation fadeIn = AnimationUtils.loadAnimation(ctx, android.R.anim.slide_in_left); + fadeIn.setDuration(500); + layoutAnimationController = new LayoutAnimationController(fadeIn); + } else { + layoutAnimationController = LibsConfiguration.getInstance().getLayoutAnimationController(); + } + + mRecyclerView.setLayoutAnimation(layoutAnimationController); + mRecyclerView.startLayoutAnimation(); + } + + super.onPostExecute(s); + + //forget the context + ctx = null; + } + + + } + + public View onCreateView(Context context, LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View view = inflater.inflate(R.layout.fragment_opensource, container, false); + + //allows to modify the view before creating + if (LibsConfiguration.getInstance().getUiListener() != null) { + view = LibsConfiguration.getInstance().getUiListener().preOnCreateView(view); + } + + // init CardView + if (view.getId() == R.id.cardListView) { + mRecyclerView = (RecyclerView) view; + } else { + mRecyclerView = (RecyclerView) view.findViewById(R.id.cardListView); + } + mRecyclerView.setLayoutManager(new LinearLayoutManager(context)); + mRecyclerView.setItemAnimator(new DefaultItemAnimator()); + mAdapter = new LibsRecyclerViewAdapter(builder); + mRecyclerView.setAdapter(mAdapter); + + //allows to modify the view after creating + if (LibsConfiguration.getInstance().getUiListener() != null) { + view = LibsConfiguration.getInstance().getUiListener().postOnCreateView(view); + } + + return view; + } + + public void onViewCreated(View view, Bundle savedInstanceState) { + //load the data + if (view.getContext() != null) { + //fill the fragment with the content + mLibTask = new LibraryTask(view.getContext()).execute(); + } + } + + public void onDestroyView() { + if (mLibTask != null) { + mLibTask.cancel(true); + mLibTask = null; + } + } + + /** + * Helper to extract a boolean from a bundle or resource + * + * @param libs + * @param value + * @param resName + * @return + */ + private Boolean extractBooleanBundleOrResource(Context ctx, Libs libs, Boolean value, String resName) { + Boolean result = null; + if (value != null) { + result = value; + } else { + String descriptionShowVersion = libs.getStringResourceByName(ctx, resName); + if (!TextUtils.isEmpty(descriptionShowVersion)) { + try { + result = Boolean.parseBoolean(descriptionShowVersion); + } catch (Exception ex) { + } + } + } + return result; + } + + /** + * Helper to extract a string from a bundle or resource + * + * @param libs + * @param value + * @param resName + * @return + */ + private String extractStringBundleOrResource(Context ctx, Libs libs, String value, String resName) { + String result = null; + if (value != null) { + result = value; + } else { + String descriptionShowVersion = libs.getStringResourceByName(ctx, resName); + if (!TextUtils.isEmpty(descriptionShowVersion)) { + result = descriptionShowVersion; + } + } + return result; + } +} diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsActivity.java b/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsActivity.java index 9250df8e8..a39b99ec2 100644 --- a/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsActivity.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsActivity.java @@ -7,6 +7,7 @@ import android.os.Build; import android.os.Bundle; import android.support.v4.app.FragmentManager; +import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; @@ -56,7 +57,7 @@ public void onCreate(Bundle savedInstanceState) { if (bundle != null && bundle.containsKey(Libs.BUNDLE_TITLE)) { title = bundle.getString(Libs.BUNDLE_TITLE); } - LibsFragment fragment = new LibsFragment(); + LibsSupportFragment fragment = new LibsSupportFragment(); fragment.setArguments(bundle); @@ -70,8 +71,8 @@ public void onCreate(Bundle savedInstanceState) { setSupportActionBar(toolbar); //if we use the DarkToolbar style we have to handle the back arrow on our own too if (activityStyle == Libs.ActivityStyle.LIGHT_DARK_TOOLBAR && getSupportActionBar() != null) { - final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha); - upArrow.setColorFilter(getResources().getColor(android.R.color.white), PorterDuff.Mode.SRC_ATOP); + final Drawable upArrow = ContextCompat.getDrawable(this, R.drawable.abc_ic_ab_back_mtrl_am_alpha); + upArrow.setColorFilter(ContextCompat.getColor(this, android.R.color.white), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow); } 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 aec1a884f..7069b1c31 100644 --- a/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsFragment.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsFragment.java @@ -1,291 +1,50 @@ package com.mikepenz.aboutlibraries.ui; +import android.annotation.TargetApi; +import android.app.Fragment; import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.graphics.drawable.Drawable; -import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v7.widget.DefaultItemAnimator; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.text.TextUtils; -import android.util.Log; +import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.view.animation.LayoutAnimationController; -import com.mikepenz.aboutlibraries.Libs; -import com.mikepenz.aboutlibraries.LibsBuilder; -import com.mikepenz.aboutlibraries.LibsConfiguration; -import com.mikepenz.aboutlibraries.R; -import com.mikepenz.aboutlibraries.entity.Library; -import com.mikepenz.aboutlibraries.ui.adapter.LibsRecyclerViewAdapter; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; +import com.mikepenz.aboutlibraries.LibsFragmentCompat; /** * Created by mikepenz on 04.06.14. */ +@TargetApi(Build.VERSION_CODES.HONEYCOMB) public class LibsFragment extends Fragment { - private RecyclerView mRecyclerView; - private LibsRecyclerViewAdapter mAdapter; - - private LibsBuilder builder = null; - - private static ArrayList libraries; - private Comparator comparator; + private LibsFragmentCompat libsFragmentCompat; - private AsyncTask mLibTask; - - /** - * Default Constructor - * Gets an libs instance and gets all external libs - */ public LibsFragment() { - } - - public void setLibraryComparator(final Comparator comparator) { - this.comparator = comparator; + libsFragmentCompat = new LibsFragmentCompat(); } @Override public void onAttach(Context context) { - Bundle bundle = getArguments(); - if (bundle != null) { - builder = (LibsBuilder) bundle.getSerializable("data"); - } else { - Log.e("AboutLibraries", "The AboutLibraries fragment can't be build without the bundle containing the LibsBuilder"); - return; - } - + libsFragmentCompat.onAttach(context, getArguments()); super.onAttach(context); } - private class LibraryTask extends AsyncTask { - Context ctx; - - String versionName; - Integer versionCode; - Drawable icon = null; - - public LibraryTask(Context ctx) { - this.ctx = ctx; - } - - @Override - protected void onPreExecute() { - super.onPreExecute(); - } - - @Override - protected String doInBackground(String... strings) { - //init the Libs instance with fields if they were set - Libs libs = null; - if (builder == null || builder.fields == null) { - libs = new Libs(ctx); - } else { - libs = new Libs(ctx, builder.fields); - } - - //fill the builder with the information - builder.aboutShowIcon = extractBooleanBundleOrResource(libs, builder.aboutShowIcon, "aboutLibraries_description_showIcon"); - builder.aboutShowVersion = extractBooleanBundleOrResource(libs, builder.aboutShowVersion, "aboutLibraries_description_showVersion"); - builder.aboutShowVersionName = extractBooleanBundleOrResource(libs, builder.aboutShowVersionName, "aboutLibraries_description_showVersionName"); - builder.aboutShowVersionCode = extractBooleanBundleOrResource(libs, builder.aboutShowVersionCode, "aboutLibraries_description_showVersionCode"); - - builder.aboutAppName = extractStringBundleOrResource(libs, builder.aboutAppName, "aboutLibraries_description_name"); - builder.aboutDescription = extractStringBundleOrResource(libs, builder.aboutDescription, "aboutLibraries_description_text"); - - builder.aboutAppSpecial1 = extractStringBundleOrResource(libs, builder.aboutAppSpecial1, "aboutLibraries_description_special1_name"); - builder.aboutAppSpecial1Description = extractStringBundleOrResource(libs, builder.aboutAppSpecial1Description, "aboutLibraries_description_special1_text"); - builder.aboutAppSpecial2 = extractStringBundleOrResource(libs, builder.aboutAppSpecial2, "aboutLibraries_description_special2_name"); - builder.aboutAppSpecial2Description = extractStringBundleOrResource(libs, builder.aboutAppSpecial2Description, "aboutLibraries_description_special2_text"); - builder.aboutAppSpecial3 = extractStringBundleOrResource(libs, builder.aboutAppSpecial3, "aboutLibraries_description_special3_name"); - builder.aboutAppSpecial3Description = extractStringBundleOrResource(libs, builder.aboutAppSpecial3Description, "aboutLibraries_description_special3_text"); - - //only if the libs were not loaded before - if (libraries == null) { - //apply modifications - libs.modifyLibraries(builder.libraryModification); - - //fetch the libraries and sort if a comparator was set - boolean doDefaultSort = (builder.sort && null == builder.libraryComparator && null == comparator); - - libraries = libs.prepareLibraries(ctx, builder.internalLibraries, builder.excludeLibraries, builder.autoDetect, doDefaultSort); - - if (comparator != null) { - Collections.sort(libraries, comparator); - } else if (builder.libraryComparator != null) { - Collections.sort(libraries, builder.libraryComparator); - } - } - - //load the data for the header - if (builder.aboutShowIcon != null && (builder.aboutShowVersion != null || builder.aboutShowVersionName != null || builder.aboutShowVersionCode)) { - //get the packageManager to load and read some values :D - PackageManager pm = ctx.getPackageManager(); - //get the packageName - String packageName = ctx.getPackageName(); - //Try to load the applicationInfo - ApplicationInfo appInfo = null; - PackageInfo packageInfo = null; - try { - appInfo = pm.getApplicationInfo(packageName, 0); - packageInfo = pm.getPackageInfo(packageName, 0); - } catch (Exception ex) { - } - - //Set the Icon or hide it - if (builder.aboutShowIcon && appInfo != null) { - icon = appInfo.loadIcon(pm); - } - - //set the Version or hide it - versionName = null; - versionCode = null; - if (packageInfo != null) { - versionName = packageInfo.versionName; - versionCode = packageInfo.versionCode; - } - } - return null; - } - - @Override - protected void onPostExecute(String s) { - //Add the header - if (builder.aboutShowIcon != null && (builder.aboutShowVersion != null || builder.aboutShowVersionName != null || builder.aboutShowVersionCode)) { - //add this cool thing to the headerView of our listView - mAdapter.setHeader(versionName, versionCode, icon); - } - - //add the libs - mAdapter.addLibs(libraries); - - //animate filling the list - if (builder.animate) { - LayoutAnimationController layoutAnimationController; - - if (LibsConfiguration.getInstance().getLayoutAnimationController() == null) { - Animation fadeIn = AnimationUtils.loadAnimation(ctx, android.R.anim.slide_in_left); - fadeIn.setDuration(500); - layoutAnimationController = new LayoutAnimationController(fadeIn); - } else { - layoutAnimationController = LibsConfiguration.getInstance().getLayoutAnimationController(); - } - - mRecyclerView.setLayoutAnimation(layoutAnimationController); - mRecyclerView.startLayoutAnimation(); - } - - super.onPostExecute(s); - - //forget the context - ctx = null; - } - - - } - + @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_opensource, container, false); - - //allows to modify the view before creating - if (LibsConfiguration.getInstance().getUiListener() != null) { - view = LibsConfiguration.getInstance().getUiListener().preOnCreateView(view); - } - - // init CardView - if (view.getId() == R.id.cardListView) { - mRecyclerView = (RecyclerView) view; - } else { - mRecyclerView = (RecyclerView) view.findViewById(R.id.cardListView); - } - mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); - mRecyclerView.setItemAnimator(new DefaultItemAnimator()); - mAdapter = new LibsRecyclerViewAdapter(builder); - mRecyclerView.setAdapter(mAdapter); - - //allows to modify the view after creating - if (LibsConfiguration.getInstance().getUiListener() != null) { - view = LibsConfiguration.getInstance().getUiListener().postOnCreateView(view); - } - - return view; + return libsFragmentCompat.onCreateView(container.getContext(), inflater, container, savedInstanceState); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - - //load the data - if (getContext() != null) { - //fill the fragment with the content - mLibTask = new LibraryTask(getContext()).execute(); - } + libsFragmentCompat.onViewCreated(view, savedInstanceState); } @Override public void onDestroyView() { + libsFragmentCompat.onDestroyView(); super.onDestroyView(); - if (mLibTask != null) { - mLibTask.cancel(true); - mLibTask = null; - } - } - - /** - * Helper to extract a boolean from a bundle or resource - * - * @param libs - * @param value - * @param resName - * @return - */ - private Boolean extractBooleanBundleOrResource(Libs libs, Boolean value, String resName) { - Boolean result = null; - if (value != null) { - result = value; - } else { - String descriptionShowVersion = libs.getStringResourceByName(getContext(), resName); - if (!TextUtils.isEmpty(descriptionShowVersion)) { - try { - result = Boolean.parseBoolean(descriptionShowVersion); - } catch (Exception ex) { - } - } - } - return result; - } - - /** - * Helper to extract a string from a bundle or resource - * - * @param libs - * @param value - * @param resName - * @return - */ - private String extractStringBundleOrResource(Libs libs, String value, String resName) { - String result = null; - if (value != null) { - result = value; - } else { - String descriptionShowVersion = libs.getStringResourceByName(getContext(), resName); - if (!TextUtils.isEmpty(descriptionShowVersion)) { - result = descriptionShowVersion; - } - } - return result; } } diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.java b/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.java new file mode 100644 index 000000000..32dfecfb3 --- /dev/null +++ b/library/src/main/java/com/mikepenz/aboutlibraries/ui/LibsSupportFragment.java @@ -0,0 +1,47 @@ +package com.mikepenz.aboutlibraries.ui; + +import android.content.Context; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.mikepenz.aboutlibraries.LibsFragmentCompat; + +/** + * Created by mikepenz on 04.06.14. + */ +public class LibsSupportFragment extends Fragment { + + private LibsFragmentCompat libsFragmentCompat; + + public LibsSupportFragment() { + libsFragmentCompat = new LibsFragmentCompat(); + } + + @Override + public void onAttach(Context context) { + libsFragmentCompat.onAttach(context, getArguments()); + super.onAttach(context); + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return libsFragmentCompat.onCreateView(container.getContext(), inflater, container, savedInstanceState); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + libsFragmentCompat.onViewCreated(view, savedInstanceState); + } + + @Override + public void onDestroyView() { + libsFragmentCompat.onDestroyView(); + super.onDestroyView(); + } +} From f71acb0e801e7f3afc36d4850715cbbca5a71811 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Mon, 2 Nov 2015 23:28:20 +0100 Subject: [PATCH 2/4] * add new supportFragment() method to LibsBuilder * add new TargetAPI annotation to fragment() method --- .../mikepenz/aboutlibraries/LibsBuilder.java | 20 ++++++++++++++++++- .../sample/FragmentActivity.java | 6 +++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java b/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java index e26d710fa..39b259a86 100644 --- a/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java +++ b/library/src/main/java/com/mikepenz/aboutlibraries/LibsBuilder.java @@ -1,13 +1,16 @@ package com.mikepenz.aboutlibraries; +import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; +import android.os.Build; 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; +import com.mikepenz.aboutlibraries.ui.LibsFragment; import com.mikepenz.aboutlibraries.ui.LibsSupportFragment; import com.mikepenz.aboutlibraries.ui.adapter.LibsRecyclerViewAdapter; import com.mikepenz.aboutlibraries.util.Colors; @@ -507,7 +510,22 @@ public void activity(Context ctx) { * * @return the fragment to set in your application */ - public LibsSupportFragment fragment() { + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + public LibsFragment fragment() { + Bundle bundle = new Bundle(); + bundle.putSerializable("data", this); + + LibsFragment fragment = new LibsFragment(); + fragment.setArguments(bundle); + return fragment; + } + + /** + * supportFragment() method to build and create the fragment with the set params + * + * @return the fragment to set in your application + */ + public LibsSupportFragment supportFragment() { Bundle bundle = new Bundle(); bundle.putSerializable("data", this); diff --git a/sample/src/main/java/com/mikepenz/aboutlibraries/sample/FragmentActivity.java b/sample/src/main/java/com/mikepenz/aboutlibraries/sample/FragmentActivity.java index 21321ef18..df8d4d4c4 100644 --- a/sample/src/main/java/com/mikepenz/aboutlibraries/sample/FragmentActivity.java +++ b/sample/src/main/java/com/mikepenz/aboutlibraries/sample/FragmentActivity.java @@ -13,7 +13,7 @@ import com.mikepenz.aboutlibraries.LibsBuilder; import com.mikepenz.aboutlibraries.LibsConfiguration; import com.mikepenz.aboutlibraries.entity.Library; -import com.mikepenz.aboutlibraries.ui.LibsFragment; +import com.mikepenz.aboutlibraries.ui.LibsSupportFragment; import com.mikepenz.materialdrawer.Drawer; import com.mikepenz.materialdrawer.DrawerBuilder; import com.mikepenz.materialdrawer.model.PrimaryDrawerItem; @@ -165,12 +165,12 @@ public boolean onLibraryBottomLongClicked(View v, Library library) { fragment.setArguments(bundle); */ - LibsFragment fragment = new LibsBuilder() + LibsSupportFragment fragment = new LibsBuilder() .withLibraries("crouton", "activeandroid", "actionbarsherlock", "showcaseview") .withVersionShown(false) .withLicenseShown(false) .withLibraryModification("aboutlibraries", Libs.LibraryFields.LIBRARY_NAME, "_AboutLibraries") - .fragment(); + .supportFragment(); FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit(); From 4213f6cd6f3c686e57a6b1c81fe6e49b3322bdb9 Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Mon, 2 Nov 2015 23:33:47 +0100 Subject: [PATCH 3/4] * add migration guide --- MIGRATION.md | 11 +++++++++++ README.md | 3 +++ 2 files changed, 14 insertions(+) create mode 100644 MIGRATION.md diff --git a/MIGRATION.md b/MIGRATION.md new file mode 100644 index 000000000..7eb6b3b47 --- /dev/null +++ b/MIGRATION.md @@ -0,0 +1,11 @@ +###Upgrade Notes + +#### v5.2.6 -> 5.3.0 +* change `.fragment()` to `.supportFragment()` and `LibsFragment` to `LibsSupportFragment` + +**INFO** +* moved logic of the fragment to the new `LibsFragmentCompat` class + * create new `LibsSupportFragment` which extends the `android.support.v4.app.Fragment` + * change the `LibsFragment` which now extends the `android.app.Fragment` +* add new method `.supportFragment()` which returns `android.support.v4.app.Fragment` +* change `.fragment()` which now returns `android.app.Fragment` diff --git a/README.md b/README.md index f1ee31265..00d62c2b1 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,9 @@ Here's a quick overview of functions it include: 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've developed this small helper library to provide the required information. +#Migration +- [MIGRATION GUIDE](https://github.com/mikepenz/AboutLibraries/blob/develop/MIGRATION.md) + #Get started - [Include in your project](#include-in-your-project) - [Usage](#usage) From 7b90438f20d52589961bcc4cb4ac23a8fd91fddf Mon Sep 17 00:00:00 2001 From: Mike Penz Date: Mon, 2 Nov 2015 23:34:26 +0100 Subject: [PATCH 4/4] * [release] v5.3.0 --- README.md | 2 +- gradle.properties | 4 ++-- library/build.gradle | 4 ++-- .../src/main/res/values/library_aboutlibraries_strings.xml | 2 +- sample/build.gradle | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 00d62c2b1..62f049081 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,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.7@aar') { +compile('com.mikepenz:aboutlibraries:5.3.0@aar') { transitive = true } ``` diff --git a/gradle.properties b/gradle.properties index 69018ab56..d7ca5126e 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.7 -VERSION_CODE=527 +VERSION_NAME=5.3.0 +VERSION_CODE=530 GROUP=com.mikepenz POM_DESCRIPTION=AboutLibraries Library diff --git a/library/build.gradle b/library/build.gradle index b07fd5a65..7c6ae823f 100755 --- a/library/build.gradle +++ b/library/build.gradle @@ -6,8 +6,8 @@ android { defaultConfig { minSdkVersion 10 targetSdkVersion 23 - versionCode 527 - versionName '5.2.7' + versionCode 530 + versionName '5.3.0' } buildTypes { diff --git a/library/src/main/res/values/library_aboutlibraries_strings.xml b/library/src/main/res/values/library_aboutlibraries_strings.xml index 60c00289a..76c28dcc1 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.7 + 5.3.0 https://github.com/mikepenz/AboutLibraries apache_2_0 true diff --git a/sample/build.gradle b/sample/build.gradle index 625adf916..edbbeebf8 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -13,8 +13,8 @@ android { applicationId 'com.mikepenz.aboutlibraries.sample' minSdkVersion 11 targetSdkVersion 23 - versionCode 527 - versionName '5.2.7' + versionCode 530 + versionName '5.3.0' applicationVariants.all { variant -> variant.outputs.each { output ->