summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorClark Scheff <clark@cyngn.com>2014-06-26 10:36:32 -0700
committerClark Scheff <clark@cyngn.com>2014-06-26 10:40:55 -0700
commit65af5a870deaa097d2f598b6356584e9835f04ef (patch)
treeaa0ba9f7aaa91029d8795f4b35c0e2ab2e654693
parent9fd968682134f2cecfc5619a5cbe2b014d2b9e58 (diff)
downloadpackages_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.java13
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);