Android
Zwiększanie wydajności Androida za pomocą czcionek ikon
Szukaj…
Uwagi
Czcionki ikon są jak normalne typy czcionek, które mają litery zamiast liter. Można go używać w aplikacji z największą łatwością.
Oni są:
- Elastyczne
- Skalowalny
- Wektory
- Szybka obróbka
- Lekka waga
- Dostępny
Wpływ na rozmiar
Eksportowanie obrazu w różnych rozmiarach na urządzenia z Androidem kosztowałoby twoją aplikację, dodatkowy rozmiar zasobu około 30kB na obraz. Dodanie pliku czcionki (.ttf) z około 36 ikonami kosztowałoby zaledwie 9kB. Wyobraź sobie, że jeśli dodasz 36 pojedynczych plików o różnych konfiguracjach, będzie to około 1000 kB. Jest to rozsądna ilość miejsca, które można zaoszczędzić, używając czcionek ikon.
Ograniczenia czcionek ikon.
Czcionki ikon mogą być używane w szufladzie nawigacji. Używanie ich w widokach nawigacji jako ikony pozycji menu nie jest możliwe, ponieważ pliku menu nie można utworzyć bez podania tytułu. Dlatego zaleca się używanie plików svg jako zasobów dla tych ikon.
Czcionek ikon nie można używać w pływającym przycisku akcji. ponieważ nie mają atrybutu
setText()
.Czcionek zewnętrznych nie można stosować z XML. Należy je określić za pomocą pliku Java. W przeciwnym razie musisz rozszerzyć widok podstawowy i utworzyć widok określony w tym poście
Jak zintegrować czcionki Icon
Aby użyć czcionek ikon, wykonaj następujące czynności:
Dodaj plik czcionki do swojego projektu
Możesz utworzyć plik ikony czcionki ze stron internetowych, takich jak icomoon , gdzie możesz przesłać pliki SVG wymaganych ikon, a następnie pobrać utworzoną czcionkę ikony. Następnie umieść plik czcionek .ttf w folderze o nazwie czcionki (nazwij go jak chcesz) w folderze zasobów:
Utwórz klasę pomocnika
Teraz utwórz następującą klasę pomocnika, aby uniknąć powtarzania kodu inicjalizacji czcionki:
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); } }
Możesz użyć klasy
Typeface
, aby wybrać czcionkę z zasobów. W ten sposób możesz ustawić krój pisma na różne widoki, na przykład na przycisk:Button button=(Button) findViewById(R.id.button); Typeface iconFont=FontManager.getTypeface(getApplicationContext()); button.setTypeface(iconFont);
Teraz czcionka przycisku została zmieniona na nowo utworzoną czcionkę ikony.
Wybierz żądane ikony
Otwórz plik styles.css dołączony do czcionki ikony. Znajdziesz tam style ze znakami Unicode twoich ikon:
.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”; }
Ten plik zasobów będzie służył jako słownik, który odwzorowuje znak Unicode związany z określoną ikoną na nazwę czytelną dla człowieka. Teraz utwórz zasoby ciągów w następujący sposób:
<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>
Użyj ikon w kodzie
Teraz możesz używać czcionki w różnych widokach, na przykład w następujący sposób:
button.setText(getString(R.string.icon_arrow_circle_left))
Możesz także tworzyć widoki przycisków za pomocą czcionek ikon:
TabLayout z czcionkami ikon
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;
}
}
- W tym przykładzie plik myfont.ttf znajduje się w folderze Zasoby. Tworzenie folderu zasobów
- W twojej klasie aktywności
//..
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);
//..