From 46c47f62bb158ffd46e3499ad6312070b10bb113 Mon Sep 17 00:00:00 2001 From: Luis Vidal Date: Thu, 11 Feb 2016 15:44:24 -0800 Subject: Use Lato font on Animated Lock Screen thumbnail text To be consistent with the rest of the text views in the chooser, we need to use Lato font on the animated lock screen thumbnail (rather than Roboto as initially requested). In order to reuse as much code as possible, LatoTextView is now extending FittedTextView. A new attribute 'autoFitText' is introduced to instruct whether fitted text is desired. Change-Id: I3209fe7f06177bc4025cbf964d0c2dd79325b9c0 TICKET: CHOOSER-113 --- res/layout/wallpaper_component_selection_item.xml | 8 +++++--- res/values/attrs.xml | 3 +++ res/values/styles.xml | 6 +++--- src/com/cyngn/theme/widget/FittedTextView.java | 20 ++++++++++++++++---- src/com/cyngn/theme/widget/LatoTextView.java | 13 ++++++++++++- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/res/layout/wallpaper_component_selection_item.xml b/res/layout/wallpaper_component_selection_item.xml index e36ec0a..7f1428c 100644 --- a/res/layout/wallpaper_component_selection_item.xml +++ b/res/layout/wallpaper_component_selection_item.xml @@ -3,6 +3,7 @@ Copyright (C) 2014 Cyanogen, Inc. --> - @@ -52,4 +54,4 @@ android:layout_gravity="center_horizontal" style="@style/component_title"/> - \ No newline at end of file + diff --git a/res/values/attrs.xml b/res/values/attrs.xml index d78f25e..0cb7ae9 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -18,4 +18,7 @@ + + + \ No newline at end of file diff --git a/res/values/styles.xml b/res/values/styles.xml index 3fca6f9..e0bc961 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -130,12 +130,12 @@ diff --git a/src/com/cyngn/theme/widget/FittedTextView.java b/src/com/cyngn/theme/widget/FittedTextView.java index 78e6a16..fbe1489 100644 --- a/src/com/cyngn/theme/widget/FittedTextView.java +++ b/src/com/cyngn/theme/widget/FittedTextView.java @@ -18,15 +18,14 @@ import android.widget.TextView; */ public class FittedTextView extends TextView { private Paint mPaint; + private boolean mAutoFitText = true; public FittedTextView(Context context) { - super(context); - mPaint = new Paint(); + this(context, null); } public FittedTextView(Context context, AttributeSet attrs) { - super(context, attrs); - mPaint = new Paint(); + this(context, attrs, 0); } public FittedTextView(Context context, AttributeSet attrs, int defStyle) { @@ -34,9 +33,19 @@ public class FittedTextView extends TextView { mPaint = new Paint(); } + protected void setAutoFitText(boolean autoFit) { + mAutoFitText = autoFit; + } + + protected boolean getAutoFitText() { + return mAutoFitText; + } + @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); + if (!mAutoFitText) return; + final float THRESHOLD = 0.5f; final float TARGET_WIDTH = getMeasuredWidth(); String text = getText().toString(); @@ -46,6 +55,9 @@ public class FittedTextView extends TextView { } mPaint.set(getPaint()); + //If it fits as is, don't touch it + if (mPaint.measureText(text) <= TARGET_WIDTH) return; + float max = 200; float min = 2; while(max > min) { diff --git a/src/com/cyngn/theme/widget/LatoTextView.java b/src/com/cyngn/theme/widget/LatoTextView.java index fe39e5c..2da46a8 100644 --- a/src/com/cyngn/theme/widget/LatoTextView.java +++ b/src/com/cyngn/theme/widget/LatoTextView.java @@ -10,6 +10,7 @@ import android.content.res.TypedArray; import android.graphics.Typeface; import android.util.AttributeSet; import android.widget.TextView; +import com.cyngn.theme.chooser.R; import com.cyngn.theme.util.Utils; import java.io.File; @@ -17,7 +18,7 @@ import java.io.File; /** * A custom TextView that always uses the Lato font */ -public class LatoTextView extends TextView { +public class LatoTextView extends FittedTextView { private static final int NUM_TYPEFACE_PER_FAMILY = 4; private static final String FONT_ASSSET_DIR = "fonts"; @@ -135,6 +136,16 @@ public class LatoTextView extends TextView { } setTypefaceFromAttrs(fontFamily, styleIndex); + TypedArray styledAttrs = context.obtainStyledAttributes(attrs, + R.styleable.FittedTextView, 0, 0); + try { + //Although we extend FittedTextView, we don't want all instances to auto fit the + //text, so we check if autoFitText has been set in the attributes. Default to false + boolean fit = styledAttrs.getBoolean(R.styleable.FittedTextView_autoFitText, false); + setAutoFitText(fit); + } finally { + styledAttrs.recycle(); + } } } -- cgit v1.1