Android
Miglioramento delle prestazioni di Android utilizzando i font icona
Ricerca…
Osservazioni
I caratteri di icona sono come tipi di carattere normali che contengono simboli anziché lettere. Può essere utilizzato nella tua applicazione con la massima facilità.
Loro sono:
- Flessibile
- Scalabile
- Vettori
- Veloce processabile
- Peso leggero
- Accessibile
Effetto sulle dimensioni
Esportare un'immagine in varie dimensioni per dispositivi Android costerebbe alla tua app, una dimensione aggiuntiva di circa 30 KB per immagine. Mentre aggiungere un file di font (.ttf) con circa 36 icone costerebbe solo 9kB. Immagina il caso se stai aggiungendo 36 singoli file di varie configurazioni che sarebbero circa 1000kB. È una quantità ragionevole di spazio che verrà salvato utilizzando i caratteri icona.
Limitazioni dei caratteri Icon.
I caratteri icona possono essere utilizzati nel cassetto di navigazione. Non è possibile utilizzarli nelle viste di navigazione come icona delle voci di menu poiché non è possibile creare il file di menu senza specificare il titolo. Quindi è consigliabile usare i file svg come risorse per queste icone.
I caratteri icona non possono essere utilizzati nel pulsante di azione mobile. in quanto non hanno un attributo
setText()
.I caratteri esterni non possono essere applicati da xml. Devono essere specificati usando il file java. Oppure è necessario estendere la vista di base e creare una vista come specificato in questo post
Come integrare i font Icon
Per utilizzare i font di icone, procedi nel seguente modo:
Aggiungi il file di font al tuo progetto
È possibile creare il file dell'icona del carattere da siti Web online come icomoon , in cui è possibile caricare i file SVG delle icone richieste e quindi scaricare il carattere dell'icona creato. Quindi, inserisci il file di font .ttf in una cartella denominata fonts ( nominalo come desideri) nella cartella assets:
Crea una classe di supporto
Ora, crea la seguente classe helper, in modo che tu possa evitare di ripetere il codice di inizializzazione per il font:
public class FontManager { public static final String ROOT = "fonts/"; FONT_AWESOME = ROOT + "myfont.ttf"; public static Typeface getTypeface(Context context) { return Typeface.createFromAsset(context.getAssets(), FONT_AWESOME); } }
È possibile utilizzare la classe
Typeface
per prelevare il carattere dalle risorse. In questo modo è possibile impostare il carattere tipografico su varie viste, ad esempio su un pulsante:Button button=(Button) findViewById(R.id.button); Typeface iconFont=FontManager.getTypeface(getApplicationContext()); button.setTypeface(iconFont);
Ora, il carattere tipografico del pulsante è stato modificato con il carattere dell'icona appena creato.
Raccogli le icone che vuoi
Apri il file styles.css collegato al carattere dell'icona. Lì troverai gli stili con i caratteri Unicode delle tue icone:
.icon-arrow-circle-down:before { content: “\e001”; } .icon-arrow-circle-left:before { content: “\e002”; } .icon-arrow-circle-o-down:before { content: “\e003”; } .icon-arrow-circle-o-left:before { content: “\e004”; }
Questo file di risorse fungerà da dizionario, che associa il carattere Unicode associato a un'icona specifica a un nome leggibile dall'uomo. Ora, crea le risorse stringa come segue:
<resources> <! — Icon Fonts --> <string name=”icon_arrow_circle_down”> </string> <string name=”icon_arrow_circle_left”> </string> <string name=”icon_arrow_circle-o_down”> </string> <string name=”icon_arrow_circle_o_left”> </string> </resources>
Usa le icone nel tuo codice
Ora, puoi usare il tuo font in varie viste, ad esempio, come segue:
button.setText(getString(R.string.icon_arrow_circle_left))
Puoi anche creare viste di testo pulsante utilizzando i caratteri icona:
TabLayout con caratteri icona
public class TabAdapter extends FragmentPagerAdapter {
CustomTypefaceSpan fonte;
List<Fragment> fragments = new ArrayList<>(4);
private String[] icons = {"\ue001","\uE002","\uE003","\uE004"};
public TabAdapter(FragmentManager fm, CustomTypefaceSpan fonte) {
super(fm);
this.fonte = fonte
for (int i = 0; i < 4; i++){
fragments.add(MyFragment.newInstance());
}
}
public List<Fragment> getFragments() {
return fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
SpannableStringBuilder ss = new SpannableStringBuilder(icons[position]);
ss.setSpan(fonte,0,ss.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
ss.setSpan(new RelativeSizeSpan(1.5f),0,ss.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE );
return ss;
}
@Override
public int getCount() {
return 4;
}
}
- In questo esempio, myfont.ttf si trova nella cartella Assets. Creazione della cartella Risorse
- Nella tua classe di attività
//..
TabLayout tabs;
ViewPager tabs_pager;
public CustomTypefaceSpan fonte;
//..
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
fm = getSupportFragmentManager();
fonte = new CustomTypefaceSpan("icomoon",Typeface.createFromAsset(getAssets(),"myfont.ttf"));
this.tabs = ((TabLayout) hasViews.findViewById(R.id.tabs));
this.tabs_pager = ((ViewPager) hasViews.findViewById(R.id.tabs_pager));
//...
}
@Override
protected void onStart() {
super.onStart();
//..
tabs_pager.setAdapter(new TabAdapter(fm,fonte));
tabs.setupWithViewPager(tabs_pager);
//..