From b83efd90a83e6f44b4e83a373c55ec782c69bd80 Mon Sep 17 00:00:00 2001 From: len Date: Fri, 22 Apr 2016 19:41:59 +0200 Subject: [PATCH] Slightly increase library view performance by caching typefaces --- .../eu/kanade/tachiyomi/widget/PTSansTextView.kt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/PTSansTextView.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/PTSansTextView.kt index 007cfefbec..f813f799c7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/PTSansTextView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/PTSansTextView.kt @@ -6,6 +6,7 @@ import android.graphics.Typeface import android.util.AttributeSet import android.widget.TextView import eu.kanade.tachiyomi.R +import java.util.* class PTSansTextView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : @@ -14,6 +15,9 @@ class PTSansTextView @JvmOverloads constructor(context: Context, attrs: Attribut companion object { const val PTSANS_NARROW = 0 const val PTSANS_NARROW_BOLD = 1 + + // Map where typefaces are cached + private val typefaces = HashMap(2) } init { @@ -22,11 +26,13 @@ class PTSansTextView @JvmOverloads constructor(context: Context, attrs: Attribut val typeface = values.getInt(R.styleable.PTSansTextView_typeface, 0) - when (typeface) { - PTSANS_NARROW -> setTypeface(Typeface.createFromAsset(context.assets, "fonts/PTSans-Narrow.ttf")) - PTSANS_NARROW_BOLD -> setTypeface(Typeface.createFromAsset(context.assets, "fonts/PTSans-NarrowBold.ttf")) - else -> throw IllegalArgumentException("Font not found " + typeface) - } + setTypeface(typefaces.getOrPut(typeface) { + Typeface.createFromAsset(context.assets, when (typeface) { + PTSANS_NARROW -> "fonts/PTSans-Narrow.ttf" + PTSANS_NARROW_BOLD -> "fonts/PTSans-NarrowBold.ttf" + else -> throw IllegalArgumentException("Font not found " + typeface) + }) + }) values.recycle() }