Ho un TextView personalizzato, con un attributo font personale:problema Prestazioni su personalizzato carattere TextView
public class TextViewPlus extends TextView {
private static final String TAG = "TextViewPlus";
public TextViewPlus(Context context) {
super(context);
}
public TextViewPlus(Context context, AttributeSet attrs) {
// This is called all the time I scroll my ListView
// and it make it very slow.
super(context, attrs);
setCustomFont(context, attrs);
}
public TextViewPlus(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setCustomFont(context, attrs);
}
private void setCustomFont(Context ctx, AttributeSet attrs) {
TypedArray a = ctx.obtainStyledAttributes(attrs, R.styleable.TextViewPlus);
String customFont = a.getString(R.styleable.TextViewPlus_customFont);
setCustomFont(ctx, customFont);
a.recycle();
}
public boolean setCustomFont(Context ctx, String asset) {
Typeface tf = null;
try {
tf = Typeface.createFromAsset(ctx.getAssets(), asset);
setTypeface(tf);
} catch (Exception e) {
Log.e(TAG, "Could not get typeface: "+e.getMessage());
return false;
}
return true;
}
}
sto usando nei miei file XML con l'attributo customFont = "ArialRounded.ttf", e sta funzionando abbastanza bene.
Sto usando questo TextViewPlus in un ListView, popolato con un ArrayAdapter.
TextViewPlus dataText = (TextViewPlus) itemView.findViewById(R.id.data_text);
dataText.setText("My data String");
Il mio problema è che le prestazioni, quando sto scorrendo il ListView, sono terribili! Molto lento e pieno di ritardi. Il costruttore di TextViewPlus n ° 2 è chiamato tutto il tempo che faccio scorrere l'elenco.
Se cambio TextViewPlus in una normale TextView, e uso dataText.setTypeface (myFont), tutto è smussato e funziona bene.
Come posso utilizzare il mio TextViewPlus senza problemi di prestazioni?
Hai provato caching vostro 'Typeface' da qualche parte, quindi non è sempre creato ogni volta? – jprofitt
Lo faccio adesso. Ho provato la soluzione di Praful Bhatnagar e sta funzionando molto bene – Nifhel