수색…


비고

아이콘 글꼴은 문자 대신 기호가있는 일반적인 글꼴 유형과 같습니다. 대부분의 경우 쉽게 응용 프로그램에서 사용할 수 있습니다.

그들은:

  • 융통성 있는
  • 확장 성
  • 벡터
  • 빠른 처리 가능
  • 가벼운 무게
  • 얻기 쉬운

크기에 미치는 영향

다양한 크기의 이미지를 Android 기기 용으로 내보내려면 앱당 비용이 들며 이미지 당 약 30kB의 추가 애셋 크기가 필요합니다. 약 36 개의 아이콘이있는 글꼴 파일 (.ttf)을 추가하는 데 드는 비용은 9kB에 불과합니다. 다양한 구성의 36 개의 개별 파일을 추가하는 경우 1000kB 정도가 될 것이라고 상상해보십시오. 아이콘 글꼴을 사용하여 절약 할 수있는 공간입니다.

아이콘 글꼴의 제한 사항.

  • 탐색 서랍에서 아이콘 글꼴을 사용할 수 있습니다. 제목을 지정하지 않고 메뉴 파일을 만들 수 없으므로 메뉴 항목의 아이콘으로 탐색보기에서 해당 항목을 사용할 수 없습니다. 따라서 svg 파일을이 아이콘의 자원으로 사용하는 것이 좋습니다.

  • 플로팅 액션 버튼에는 아이콘 글꼴을 사용할 수 없습니다. setText() 특성이 없기 때문입니다.

  • 외부 글꼴은 xml에서 적용 할 수 없습니다. Java 파일을 사용하여 지정해야합니다. 아니면 기본보기를 확장하고이 게시물에 지정된대로보기를 작성해야합니다.

아이콘 글꼴을 통합하는 방법

아이콘 글꼴을 사용하려면 다음 단계를 따르십시오.

  • 프로젝트에 글꼴 파일 추가

    icomoon 과 같은 온라인 웹 사이트에서 글꼴 아이콘 파일을 만들 수 있습니다. icomoon 에서는 필요한 아이콘의 SVG 파일을 업로드 한 다음 생성 된 아이콘 글꼴을 다운로드 할 수 있습니다. 그런 다음 .ttf 글꼴 파일을 assets 폴더에 fonts 라는 폴더에 저장합니다 (원하는 이름 지정).

    글꼴 파일을 저장할 위치

  • 도우미 클래스 만들기

    이제 글꼴에 대한 초기화 코드를 반복하지 않도록 다음 도우미 클래스를 만듭니다.

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

    애셋에서 Typeface 를 선택하기 위해 Typeface 클래스를 사용할 수 있습니다. 이 방법으로 서체를 다양한보기 (예 : 버튼)로 설정할 수 있습니다.

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

    이제 버튼 글꼴이 새로 생성 된 아이콘 글꼴로 변경되었습니다.

  • 원하는 아이콘을 선택하십시오.

    아이콘 글꼴에 첨부 된 styles.css 파일을 엽니 다. 여기서 아이콘의 유니 코드 문자로 스타일을 찾을 수 있습니다.

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

    이 리소스 파일은 특정 아이콘과 연관된 유니 코드 문자를 사람이 읽을 수있는 이름으로 매핑하는 사전 역할을합니다. 이제 다음과 같이 문자열 리소스를 만듭니다.

    <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>
    
  • 코드의 아이콘 사용

    이제 다음과 같이 다양한보기에서 글꼴을 사용할 수 있습니다.

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

    아이콘 글꼴을 사용하여 버튼 텍스트보기를 만들 수도 있습니다.

    아이콘이있는 예제 버튼

아이콘 글꼴이있는 TabLayout

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

}
  • 이 예제에서 myfont.ttf는 Assets 폴더에 있습니다. 자산 폴더 생성
  • 당신의 활동 수업에서
//..
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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow