Mi aplicación se desplaza muy mal después de importar la fuente roboto en la carpeta assets / fonts

Mi aplicación que ejecuta sándwich de helado de Android, después de importar las fuentes roboto.ttf y roboto-bold.ttf en la carpeta de fuentes y después de establecer cuatro vistas de texto con estas fuentes, es muy (MUY) lenta mientras se desplaza el listview. ¿Alguien sabe un método para optimizar las actuaciones? ¿Hay consejos y trucos para mejorar la velocidad?

Aclaro que fue muy suave antes de insertar estas líneas de código:

Typeface roboto = Typeface.createFromAsset(activity.getAssets(), "fonts/Roboto-Regular.ttf"); Typeface robotobold = Typeface.createFromAsset(activity.getAssets(), "fonts/Roboto-Bold.ttf"); nome.setTypeface(robotobold); mq.setTypeface(roboto); citta.setTypeface(roboto); prezzo.setTypeface(roboto); descrizione.setTypeface(roboto); 

Añado la clase que puede ayudar con la caché de fuentes:

 public class TypefaceCache { private final HashMap<String, Typeface> map; private Context con; public TypefaceCache(Context con) { map = new HashMap<String, Typeface>(); this.con = con; } public Typeface getTypeface(String file) { Typeface result = map.get(file); if (result == null) { result = Typeface.createFromAsset(con.getAssets(), file); map.put(file, result); } return result; } } 

Llamo a la clase ya la fuente a través de

  TypefaceCache typecache = new TypefaceCache(activity); Typeface roboto = typecache.getTypeface("fonts/Roboto-Regular.ttf"); 

Pero el resultado es el mismo…

Usted podría intentar poner en caché su Typeface .

 public class TypefaceCache { private final HashMap<String, Typeface> map = new HashMap<String, Typeface>(); private Typeface getTypeface(String file, Context context) { Typeface result = map.get(file); if (result == null) { result = Typeface.createFromAsset(context.getAssets(), file); map.put(file, result); } return result; } } 

Tuve este problema no hace mucho tiempo, la solución era establecer la clase a estática, al igual que se describe en este blog ;

 public class TypefaceSingleton { private static TypefaceSingleton instance = new TypefaceSingleton(); private TypefaceSingleton() {} public static TypefaceSingleton getInstance() { return instance; } public Typeface getTypeface() { return Typeface.createFromAsset(ThinkNearApp.getContext().getResources().getAssets(), "fonts/Roboto-Bold.ttf"); } } 

Esta es mi solución: en el asynctask en el que i iniciar el ui i insertar la variable de clase

 private final HashMap<String, Typeface> map; 

Y luego lo inicializar a través del constructor de clase

 map = new HashMap<String, Typeface>(); 

Implemento el método que carga mi tipo de letra en la clase:

 private Typeface getTypeface(String file, Context context) { Typeface result = map.get(file); if (result == null) { result = Typeface.createFromAsset(context.getAssets(), file); map.put(file, result); } return result; } 

Entonces, cuando quiero en el asynctask, agrego mi tipo de letra favorito i cargado en mi textviews y todo es muy suave. Gracias a todos

  • ¿Por qué Android Eclipse constantemente actualiza las carpetas externas y toma forver?
  • Cómo detectar la velocidad de la CPU android?
  • Código postal / código postal de android lugar objeto
  • Alto uso de la CPU con el emulador de Android (qemu-system-i386.exe)
  • Problema de rendimiento de PublisherAdView loadAd en Android
  • Android ListView Actualizar una sola fila
  • Java MappedByteBuffer.get () sorprendentemente lento
  • Pantalla blanca antes de la pantalla inicial
  • ¿Qué indica sf_frame_dur en los registros de Logcat de Android?
  • Compresión de imagen de Android sin carga completa en la memoria
  • Android - ¿qué es cola de mensajes encuesta nativa una vez en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.