Zoeken…


Opmerkingen

Pictogramlettertypen zijn als normale lettertypen met symbolen in plaats van letters. Het kan hoogstens in uw toepassing worden gebruikt.

Zij zijn:

  • Flexibel
  • schaalbare
  • vectoren
  • Snel verwerkbaar
  • Lichtgewicht
  • Beschikbaar

Effect op grootte

Het exporteren van een afbeelding in verschillende formaten voor Android-apparaten kost uw app een extra activagrootte van ongeveer 30 kB per afbeelding. Terwijl het toevoegen van een lettertypebestand (.ttf) met ongeveer 36 pictogrammen slechts 9 kB kost. Stel je het geval voor als je 36 individuele bestanden van verschillende configuraties toevoegt, zou dit ongeveer 1000 kB zijn. Het is een redelijke hoeveelheid ruimte die u bespaart door pictogramlettertypen te gebruiken.

Beperkingen van pictogramlettertypen.

  • Pictogramlettertypen kunnen in de navigatielade worden gebruikt. Het is niet mogelijk om ze in navigatieweergaven als pictogram van menu-items te gebruiken, omdat het menubestand niet kan worden gemaakt zonder de titel op te geven. Het is dus raadzaam om svg-bestanden te gebruiken als bronnen voor deze pictogrammen.

  • Pictogramlettertypen kunnen niet worden gebruikt in zwevende actieknop. omdat ze geen kenmerk setText() hebben.

  • Externe lettertypen kunnen niet worden toegepast vanuit xml. Ze moeten worden opgegeven met behulp van het Java-bestand. Of anders moet je de basisweergave uitbreiden en een weergave maken zoals gespecificeerd in dit bericht

Hoe Icon-lettertypen te integreren

Volg de onderstaande stappen om pictogramlettertypen te gebruiken:

  • Voeg het lettertypebestand toe aan uw project

    U kunt uw lettertypepictogrambestand maken van online websites zoals icomoon , waar u SVG-bestanden van de vereiste pictogrammen kunt uploaden en vervolgens het gemaakte pictogramlettertype kunt downloaden. Plaats het .ttf- lettertypebestand vervolgens in een map met de naam lettertypen (noem het zoals u wilt) in de map activa:

    Locatie waar het lettertypebestand moet worden geplaatst

  • Maak een helperklasse

    Maak nu de volgende helperklasse, zodat u kunt voorkomen dat u de initialisatiecode voor het lettertype herhaalt:

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

    U kunt de klasse Typeface gebruiken om het lettertype uit de elementen te kiezen. Op deze manier kunt u het lettertype instellen op verschillende weergaven, bijvoorbeeld op een knop:

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

    Het lettertype van de knop is nu gewijzigd in het nieuw gemaakte lettertype.

  • Pak de gewenste pictogrammen op

    Open het bestand styles.css dat aan het pictogramlettertype is gekoppeld. Daar vindt u de stijlen met Unicode-tekens van uw pictogrammen:

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

    Dit bronbestand zal dienen als een woordenboek, dat het Unicode-teken geassocieerd met een specifiek pictogram toewijst aan een voor mensen leesbare naam. Maak nu de tekenreeksbronnen als volgt:

    <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>
    
  • Gebruik de pictogrammen in uw code

    Nu kunt u uw lettertype in verschillende weergaven gebruiken, bijvoorbeeld als volgt:

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

    U kunt ook knoptekstweergaven maken met pictogramlettertypen:

    Voorbeeldknoppen met pictogrammen erop

TabLayout met pictogramlettertypen

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 dit voorbeeld bevindt myfont.ttf zich in de map Activa. Een map Activa maken
  • In uw activiteitenklasse
//..
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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow