Recherche…


Remarques

Les polices d'icône sont comme les types de police normaux qui ont des symboles au lieu de lettres. Il peut être utilisé dans votre application avec le plus de facilité.

Elles sont:

  • Flexible
  • Évolutive
  • Vecteurs
  • Processable Rapide
  • Poids léger
  • Accessible

Effet sur la taille

L'exportation d'une image de différentes tailles pour des appareils Android coûterait à votre application une taille d'actif supplémentaire d'environ 30 Ko par image. Tout en ajoutant un fichier de polices (.ttf) avec environ 36 icônes, cela ne coûterait que 9 Ko. Imaginez le cas si vous ajoutez 36 fichiers individuels de différentes configurations, ce serait environ 1000 Ko. C'est une quantité raisonnable d'espace que vous économiserez en utilisant des polices d'icônes.

Limites des polices Icon.

  • Les polices d'icônes peuvent être utilisées dans le tiroir de navigation. Leur utilisation dans les vues de navigation en tant qu'icône des éléments de menu n'est pas possible car le fichier de menu ne peut pas être créé sans spécifier le titre. Il est donc conseillé d'utiliser les fichiers svg comme ressources pour ces icônes.

  • Les polices d'icône ne peuvent pas être utilisées dans un bouton d'action flottant. comme ils n'ont pas d'attribut setText() .

  • Les polices externes ne peuvent pas être appliquées à partir de XML. Ils doivent être spécifiés en utilisant le fichier java. Ou bien vous devez étendre la vue de base et créer une vue telle que spécifiée dans cet article.

Comment intégrer les polices Icon

Pour utiliser les polices d'icônes, suivez simplement les étapes ci-dessous:

  • Ajouter le fichier de police à votre projet

    Vous pouvez créer votre fichier d'icône de police à partir de sites Web en ligne tels que icomoon , où vous pouvez télécharger des fichiers SVG contenant les icônes requises, puis télécharger la police d'icône créée. Ensuite, placez le fichier de police .ttf dans un dossier nommé polices (nommez-le comme vous le souhaitez) dans le dossier assets:

    Emplacement où placer le fichier de police

  • Créer une classe d'assistance

    Maintenant, créez la classe d'assistance suivante afin d'éviter de répéter le code d'initialisation de la police:

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

    Vous pouvez utiliser la classe Typeface pour sélectionner la police à partir des actifs. De cette façon, vous pouvez définir la police sur différentes vues, par exemple sur un bouton:

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

    Maintenant, la police de caractères du bouton a été remplacée par la police d’icône nouvellement créée.

  • Ramassez les icônes que vous voulez

    Ouvrez le fichier styles.css attaché à la police d'icône. Vous y trouverez les styles avec les caractères Unicode de vos icônes:

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

    Ce fichier de ressources servira de dictionnaire, qui associe le caractère Unicode associé à une icône spécifique à un nom lisible par l'homme. Maintenant, créez les ressources de chaîne comme suit:

    <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>
    
  • Utilisez les icônes dans votre code

    Maintenant, vous pouvez utiliser votre police dans différentes vues, par exemple, comme suit:

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

    Vous pouvez également créer des vues de texte de bouton à l'aide des polices d'icônes:

    Exemple de boutons avec des icônes sur eux

TabLayout avec des polices d'icône

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow