Android APP 사용자 정의 글꼴 구현 방법 사용
안 드 로 이 드 시스템 자체 에 일부 글꼴 이 내장 되 어 있 으 며 프로그램 에서 사용 할 수 있 으 며 xml 에서 textView 를 설정 할 때 글꼴 을 수정 하 는 스타일 을 지원 합 니 다.지원 필드 는 안 드 로 이 드:textStyle,안 드 로 이 드:typeface,안 드 로 이 드:font Family 입 니 다.시스템 에는 normal|bold|italic 세 가지 스타일 이 내장 되 어 있 습 니 다.normal,sans,serif,monospace,몇 가지 글꼴(실측 이 몇 가지 글꼴 은 영어 로 만 유효 합 니 다),typace 와 font Family 기능 이 같 습 니 다.
사용자 정의 글꼴 사용
이상 의 방식 으로 글꼴 의 스타일 을 바 꿀 수 있 습 니 다.사용자 정의 가 아 닙 니 다.안 드 로 이 드 시스템 은 TypeFace,즉 ttf 의 글꼴 파일 을 지원 합 니 다.프로그램 에 ttf 글꼴 파일 을 넣 고 Typeface 로 글꼴 을 설정 할 수 있 습 니 다.
첫 번 째 단 계 는 assets 디 렉 터 리 에 fonts 디 렉 터 리 를 새로 만 들 고 ttf 글꼴 파일 을 여기에 놓 습 니 다.
두 번 째 단계,프로그램 에서 호출:
public class MainActivity extends AppCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView= (TextView) findViewById(R.id.text);
AssetManager assets = getAssets();
Typeface fromAsset = Typeface.createFromAsset(assets, "fonts/fzlt.ttf");
textView.setTypeface(fromAsset);
}
}
ttf 파일 이름 은 중국 어 를 사용 할 수 없습니다.그렇지 않 으 면 불 러 올 수 없습니다.사용 해 야 할 부분 에 대해 서 는 TextView 의 하위 클래스 를 써 서 통일 적 으로 처리 할 수 있 습 니 다.
public class CustomTextView extends TextView {
public CustomTextView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context,attrs);
// TODO Auto-generated constructor stub
}
public CustomTextView(Context context, AttributeSet attrs,int defStyle) {
super(context,attrs,defStyle);
// TODO Auto-generated constructor stub
}
public void setTypeface(Typeface tf, int style) {
super.setTypeface(AppContext.getInstance().getTypeface());
}
}
//사용자 정의 글꼴 초기 화typeface = Typeface.createFromAsset(getAssets(), "fonts/fzlt.ttf");
법 은 단점 이 있 습 니 다.한 가지 컨트롤 의 글꼴 만 바 꿀 수 있 습 니 다.Button 이나 EditText 컨트롤 의 글꼴 을 바 꾸 려 면 같은 방식 으로 이 컨트롤 을 사용자 정의 해 야 합 니 다.이렇게 작업량 이 많 고 전체 app 의 글꼴 을 어떻게 효과적으로 바 꾸 는 지 아래 참고 자 료 를 참조 하 십시오.
웹 뷰 에서 사용자 정의 글꼴 사용 하기
로 컬 웹 페이지 에 대해 asset 디 렉 터 리 에 글꼴 파일 을 놓 고 css 에 다음 내용 을 추가 하여 글꼴 face 를 사용자 정의 하고 필요 한 곳 에 이 글꼴 face 를 사용 하면 됩 니 다.
<style>
@font-face {
font-family: 'myface';
src: url('file:///android_asset/fonts/fzlt.ttf');
}
body {
margin: 0;
padding: 0;
font-family:'myface',' ';
}
.textbar{ box-sizing:border-box; width:100%; padding:5px;}
.textbar p{ font-size:16px; text-align:justify; color:#333;line-height:24px; margin:0 0 0 0;}
.textbar h1{ font-size:18px; margin:10px 0 10px 0;color:#000}
</style>
온라인 웹 페이지 에 서 는 글꼴 파일 을 서버 에 두 고 같은 방식 으로 글꼴 face 를 정의 하여 모든 곳 에 적용 해 야 합 니 다.웹 페이지 나 서버 쪽 의 작업 을 줄 이기 위해 서 는 로 컬 주입 방식 으로 font-face 의 css 를 주입 하고 전체 웹 페이지 를 스타일 로 바 꿀 수 있 습 니 다.웹 뷰 에 웹 뷰 클 라 이언 트 를 사용자 정의 하고 onPageFinish 를 다시 쓰 며 다음 과 같은 내용 을 추가 합 니 다.
view.loadUrl("javascript:!function(){" + "s=document.createElement('style');s.innerHTML=" + "\"@font-face{font-family:myhyqh;src:url('**injection**/hyqh.ttf');}*{font-family:myhyqh !important;}\";"
+ "document.getElementsByTagName('head')[0].appendChild(s);" +
"document.getElementsByTagName('body')[0].style.fontFamily = \"myhyqh\";}()");
// asset , , `file:
//android_assets/` `**injection**/` , `shouldInterceptRequest`
// , :
@Override
public WebResourceResponse shouldInterceptRequest (WebView view, String url){
WebResourceResponse response = super.shouldInterceptRequest(view, url);
Log.i("load intercept request:" + url);
if (url != null && url.contains("**injection**/")) {
//String assertPath = url.replace("**injection**/", "");
String assertPath = url.substring(url.indexOf("**injection**/") + "**injection**/".length(), url.length());
try {
response = new WebResourceResponse("application/x-font-ttf", "UTF8", getAssets().open(assertPath));
} catch (IOException e) {
e.printStackTrace();
}
}
return response;
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.