Androidアプリは、ユーザー定義のフォントでの実現方法を使用しています。
Androidシステム内蔵フォント
Androidシステム自体にはいくつかのフォントが内蔵されており、プログラムで使用できます。また、xml設定textViewの時にフォントを変更するスタイルにも対応しています。サポートフィールドはandroid:textStyle,android:typeface,android:font Famimilyで、システムはnormal bold_;italicの3種類のstyleを内蔵しています。normal,sans,serif,monoospace,いくつかのフォント(実際にはこれらのフォントは英語のみ有効です)。
カスタムフォントを使う
以上のようにフォントのスタイルを変更することができます。本当にカスタムされていません。AndroidシステムはTypeFace、つまりttfのフォントファイルをサポートしています。プログラムにttfフォントファイルを入れて、プログラムにTypefaceを使ってフォントを設定します。
最初のステップは、astesディレクトリの下にfontsディレクトリを新規作成し、ttfフォントファイルをここに置いてください。
第二ステップ、プログラムで呼び出します。
多くのところを使う必要がある場合は、TextViewのサブクラスを書いて一括処理します。
typeface=Typeface.reat From Aset(get Asets()、“fonts/fzlt.ttf”);
これらのコントロールを同じようにカスタマイズする必要があります。このような仕事量が多いので、どのようにアプリ全体のフォントを効率的に置き換えるか、下の参照資料を参照してください。
webviewにカスタムフォントを使う
ローカルのウェブページには、assetディレクトリにフォントファイルを置き、cssに以下の内容を追加し、フォントfaceをカスタマイズし、必要なところにこのフォントfaceを使えばいいです。
ウェブページやサーバー側の作業を減らすために、ローカル注入方式でfont-faceのcssを注入し、ページ全体にスタイルを置き換えることができます。webviewのカスタムwebView CientにonPageFinishを書き直して、その中に以下の内容を追加します。
Androidシステム自体にはいくつかのフォントが内蔵されており、プログラムで使用できます。また、xml設定textViewの時にフォントを変更するスタイルにも対応しています。サポートフィールドはandroid:textStyle,android:typeface,android:font Famimilyで、システムはnormal bold_;italicの3種類のstyleを内蔵しています。normal,sans,serif,monoospace,いくつかのフォント(実際にはこれらのフォントは英語のみ有効です)。
カスタムフォントを使う
以上のようにフォントのスタイルを変更することができます。本当にカスタムされていません。AndroidシステムはTypeFace、つまりttfのフォントファイルをサポートしています。プログラムにttfフォントファイルを入れて、プログラムにTypefaceを使ってフォントを設定します。
最初のステップは、astesディレクトリの下に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.reat From Aset(get Asets()、“fonts/fzlt.ttf”);
これらのコントロールを同じようにカスタマイズする必要があります。このような仕事量が多いので、どのようにアプリ全体のフォントを効率的に置き換えるか、下の参照資料を参照してください。
webviewにカスタムフォントを使う
ローカルのウェブページには、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を注入し、ページ全体にスタイルを置き換えることができます。webviewのカスタムwebView Cientに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;
}
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。