diff options
author | Clark Scheff <clark@cyngn.com> | 2014-06-26 10:36:32 -0700 |
---|---|---|
committer | Clark Scheff <clark@cyngn.com> | 2014-06-26 10:40:55 -0700 |
commit | 65af5a870deaa097d2f598b6356584e9835f04ef (patch) | |
tree | aa0ba9f7aaa91029d8795f4b35c0e2ab2e654693 | |
parent | 9fd968682134f2cecfc5619a5cbe2b014d2b9e58 (diff) | |
download | packages_apps_ThemeChooser-65af5a870deaa097d2f598b6356584e9835f04ef.tar.gz packages_apps_ThemeChooser-65af5a870deaa097d2f598b6356584e9835f04ef.tar.bz2 packages_apps_ThemeChooser-65af5a870deaa097d2f598b6356584e9835f04ef.zip |
Cache ThemedTypefaceHelpers for better performance
This fixes the jank seen when scrolling through the list of fonts
as well as the bad characters that show up from time to time.
Change-Id: I0002a92edb154276035015fc7836dd72ea43dbf7
-rw-r--r-- | src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java b/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java index 460d61b..83c28f1 100644 --- a/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java +++ b/src/org/cyanogenmod/theme/chooser/ChooserBrowseFragment.java @@ -74,6 +74,7 @@ import org.cyanogenmod.theme.util.Utils; import java.net.URISyntaxException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; public class ChooserBrowseFragment extends Fragment @@ -265,6 +266,8 @@ public class ChooserBrowseFragment extends Fragment public class LocalPagerAdapter extends CursorAdapter { List<String> mFilters; Context mContext; + HashMap<String, ThemedTypefaceHelper> mTypefaceHelpers = + new HashMap<String, ThemedTypefaceHelper>(); public LocalPagerAdapter(Context context, Cursor c, List<String> filters) { super(context, c, 0); @@ -377,8 +380,14 @@ public class ChooserBrowseFragment extends Fragment public void bindFontView(View view, Context context, String pkgName) { FontItemHolder item = (FontItemHolder) view.getTag(); - ThemedTypefaceHelper helper = new ThemedTypefaceHelper(); - helper.load(mContext, pkgName); + ThemedTypefaceHelper helper; + if (!mTypefaceHelpers.containsKey(pkgName)) { + helper = new ThemedTypefaceHelper(); + helper.load(mContext, pkgName); + mTypefaceHelpers.put(pkgName, helper); + } else { + helper = mTypefaceHelpers.get(pkgName); + } Typeface typefaceNormal = helper.getTypeface(Typeface.NORMAL); Typeface typefaceBold = helper.getTypeface(Typeface.BOLD); item.textView.setTypeface(typefaceNormal); |