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:

    Lokalizacja, w której należy umieścić plik czcionki

  • 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”>&#xe001; </string>
      <string name=”icon_arrow_circle_left”>&#xe002; </string>
      <string name=”icon_arrow_circle-o_down”>&#xe003; </string>
      <string name=”icon_arrow_circle_o_left”>&#xe004; </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:

    Przykładowe przyciski z ikonami

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;
}

}
//..
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);
    //..


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow