Sök…


Anmärkningar

Ikon Typsnitt är som vanliga typsnitt som har symboler istället för bokstäver. Det kan användas i din applikation på högsta möjliga sätt.

Dom är:

  • Flexibel
  • skalbar
  • vektorer
  • Snabbt bearbetbart
  • Lättvikt
  • Tillgänglig

Effekt på storlek

Exportera en bild i olika storlekar för Android-enheter skulle kosta din app, en ytterligare tillgångsstorlek på cirka 30 kB per bild. Att lägga till en teckensnittsfil (.ttf) med cirka 36 ikoner skulle kosta bara 9 kB. Föreställ dig fallet om du lägger till 36 enskilda filer med olika konfigurationer skulle det vara cirka 1000 kB. Det är en rimlig mängd utrymme som du sparar med ikonteckensnitt.

Begränsningar av ikonteckensnitt.

  • Ikonteckensnitt kan användas i navigeringslådan. Att använda dem i navigationsvyer som ikon för menyalternativ är inte möjligt eftersom menyfilen inte kan skapas utan att ange titeln. Så det är lämpligt att använda svg-filer som resurser för dessa ikoner.

  • Ikonsteckensnitt kan inte användas i flytande åtgärdsknapp. eftersom de inte har ett setText() .

  • Externa teckensnitt kan inte tillämpas från xml. De måste anges med Java-filen. Eller annars behöver du utöka den grundläggande vyn och skapa en vy som anges i det här inlägget

Hur man integrerar ikonsteckensnitt

Följ stegen nedan för att använda ikonteckensnitt:

  • Lägg till teckensnittsfilen till ditt projekt

    Du kan skapa din typsnittsikonfil från onlinewebbplatser , t.ex. icomoon , där du kan ladda upp SVG-filer med de nödvändiga ikonerna och sedan ladda ner det skapade ikonteckensnittet. Placera sedan .ttf- teckensnittsfilen i en mapp med namnen typsnitt (namnge den som du vill) i mappen för tillgångar:

    Plats där du ska placera teckensnittsfilen

  • Skapa en Helper Class

    Skapa nu följande hjälparklass, så att du kan undvika att upprepa initialiseringskoden för teckensnittet:

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

    Du kan använda Typeface för att välja typsnitt från tillgångarna. På så sätt kan du ställa in typsnittet på olika vyer, till exempel till en knapp:

    Button button=(Button) findViewById(R.id.button);
    Typeface iconFont=FontManager.getTypeface(getApplicationContext());
    button.setTypeface(iconFont);
    

    Nu har knappsnittet ändrats till det nyskapade ikonteckensnittet.

  • Plocka upp de ikoner du vill ha

    Öppna filen styles.css som är kopplad till ikonsteckensnittet. Där hittar du stilarna med Unicode-tecken på dina ikoner:

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

    Den här resursfilen kommer att fungera som en ordlista som kartlägger Unicode-karaktären som är associerad med en specifik ikon till ett mänskligt läsbart namn. Skapa nu strängresurserna enligt följande:

    <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>
    
  • Använd ikonerna i din kod

    Nu kan du använda ditt teckensnitt i olika vyer, till exempel enligt följande:

    button.setText(getString(R.string.icon_arrow_circle_left))
    

    Du kan också skapa knapptextsvyer med hjälp av ikonteckensnitt:

    Exempelknappar med ikoner på dem

TabLayout med ikonteckensnitt

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow