Android
Verbesserung der Android-Leistung mithilfe von Symbol-Schriftarten
Suche…
Bemerkungen
Symbolschriftarten sind wie normale Schriftarten, die Symbole anstelle von Buchstaben haben. Es kann in Ihrer Anwendung mit Leichtigkeit verwendet werden.
Sie sind:
- Flexibel
- Skalierbar
- Vektoren
- Schnell verarbeitbar
- Leicht
- Zugänglich
Auswirkungen auf die Größe
Das Exportieren eines Bildes in verschiedenen Größen für Android-Geräte würde Ihre App zusätzlich kosten, etwa 30 KB pro Bild. Das Hinzufügen einer Schriftartdatei (.ttf) mit etwa 36 Symbolen würde nur 9 KB kosten. Stellen Sie sich nur den Fall vor, wenn Sie 36 einzelne Dateien mit verschiedenen Konfigurationen hinzufügen, sie wären etwa 1000 KB groß. Es ist ein angemessener Speicherplatz, den Sie durch die Verwendung von Symbolschriftarten sparen.
Einschränkungen von Icon-Schriftarten.
Symbolzeichensätze können in der Navigationsleiste verwendet werden. Die Verwendung in Navigationsansichten als Symbol für Menüelemente ist nicht möglich, da die Menüdatei nicht ohne Angabe des Titels erstellt werden kann. Daher ist es ratsam, SVG-Dateien als Ressourcen für diese Symbole zu verwenden.
Symbolfonts können nicht in Floating-Aktionsschaltflächen verwendet werden. da sie kein
setText()
-Attribut haben.Externe Schriftarten können nicht aus XML übernommen werden. Sie müssen mit der Java-Datei angegeben werden. Oder Sie müssen die Basisansicht erweitern und eine Ansicht erstellen, wie in diesem Beitrag angegeben
So integrieren Sie Icon-Schriftarten
Um die Symbolschriftarten zu verwenden, folgen Sie einfach den folgenden Schritten:
Fügen Sie die Schriftartdatei Ihrem Projekt hinzu
Sie können Ihre Schriftart- Symboldatei von Online-Websites wie z. B. icomoon erstellen , auf der Sie SVG-Dateien mit den erforderlichen Symbolen hochladen und dann die erstellte Symbolschriftart herunterladen können. Legen Sie dann die .ttf- Schriftartdatei in einen Ordner mit dem Namen fonts (benennen Sie ihn nach Belieben) im Assets-Ordner ab:
Erstellen Sie eine Helferklasse
Erstellen Sie nun die folgende Hilfsklasse, damit Sie den Initialisierungscode für die Schriftart nicht wiederholen müssen:
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); } }
Sie können die
Typeface
Klasse verwenden, um die Schriftart aus den Assets auszuwählen. Auf diese Weise können Sie die Schriftart auf verschiedene Ansichten einstellen, beispielsweise auf eine Schaltfläche:Button button=(Button) findViewById(R.id.button); Typeface iconFont=FontManager.getTypeface(getApplicationContext()); button.setTypeface(iconFont);
Die Schaltflächenschriftart wurde nun in die neu erstellte Symbolschriftart geändert.
Heben Sie die gewünschten Symbole auf
Öffnen Sie die Datei styles.css , die der Symbolschriftart angehängt ist. Dort finden Sie die Stile mit Unicode-Zeichen Ihrer Symbole:
.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”; }
Diese Ressourcendatei dient als Wörterbuch, in dem das mit einem bestimmten Symbol verknüpfte Unicode-Zeichen einem vom Menschen lesbaren Namen zugeordnet wird. Erstellen Sie nun die Zeichenfolgenressourcen wie folgt:
<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>
Verwenden Sie die Symbole in Ihrem Code
Nun können Sie Ihre Schrift beispielsweise in folgenden Ansichten verwenden:
button.setText(getString(R.string.icon_arrow_circle_left))
Sie können Schaltflächentextansichten auch mit Symbolschriftarten erstellen:
TabLayout mit Symbolschriftarten
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 diesem Beispiel befindet sich myfont.ttf im Ordner Assets. Ordner "Assets" erstellen
- In deiner Aktivitätsklasse
//..
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);
//..