Android自定義字型
摘要:
在main資料夾下,新建assets/fonts檔案,新增.otf檔案
image.png
字型工具類
import android.app.Application;
import android.graphics.Typeface;
/*...
在main資料夾下,新建assets/fonts檔案,新增.otf檔案

image.png
字型工具類
import android.app.Application; import android.graphics.Typeface; /** * 字型工具類 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */ public class CustomFontManager { private static CustomFontManager singleton; private Typeface lightFont; private Typeface boldFont; private CustomFontManager() { } public void init(final Application context) { //讀取字型檔案 this.lightFont = Typeface.createFromAsset(context.getAssets(), "fonts/SFCompactText-Light.otf"); this.boldFont = Typeface.createFromAsset(context.getAssets(), "fonts/SFCompactText-Semibold.otf"); } public synchronized static CustomFontManager getInstance() { if (singleton == null) { singleton = new CustomFontManager(); } return singleton; } public Typeface getLightFont() { return this.lightFont; } public Typeface getBoldFont() { return this.boldFont; } }
自定義字型基類
import android.content.Context; import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; /** * 自定義字型型別 基類 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */ public abstract class BaseCustomTextView extends AppCompatTextView { public BaseCustomTextView(Context context) { super(context); setFont(); } public BaseCustomTextView(Context context, AttributeSet attrs) { super(context, attrs); setFont(); } public BaseCustomTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); setFont(); } protected abstract void setFont(); }
字型類
import android.content.Context; import android.util.AttributeSet; import com.sugrsugr.ivyapp.sugrsmartivy.util.CustomFontManager; /** * SFCompactText-Semibold 字型 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */ public class CustomBoldTextView extends BaseCustomTextView { public CustomBoldTextView(Context context) { super(context); } public CustomBoldTextView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomBoldTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void setFont() { setTypeface(CustomFontManager.getInstance().getBoldFont()); } }
AppManager中初始化字型
import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.support.multidex.MultiDexApplication; import com.sugrsugr.ivyapp.sugrsmartivy.util.CustomFontManager; /** * 初始化資源 * author:wiki on 2018/11/9 * email:zhengweiqunemail@qq.com */ public final class AppManager extends MultiDexApplication { private static AppManager instance; public static AppManager getInstance() { return instance; } public static Context getContext() { return instance.getApplicationContext(); } @Override public void onCreate() { super.onCreate(); instance = this; //初始化字型類 CustomFontManager.getInstance().init(this); } /** * 獲取本地軟體版本號 */ public static int getLocalVersion(Context ctx) { int localVersion = 0; try { PackageInfo packageInfo = ctx.getApplicationContext() .getPackageManager() .getPackageInfo(ctx.getPackageName(), 0); localVersion = packageInfo.versionCode; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return localVersion; } /** * 獲取本地軟體版本號名稱 */ public static String getLocalVersionName(Context ctx) { String localVersion = ""; try { PackageInfo packageInfo = ctx.getApplicationContext() .getPackageManager() .getPackageInfo(ctx.getPackageName(), 0); localVersion = packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return localVersion; } }
佈局檔案中使用
<com.sugrsugr.ivyapp.sugrsmartivy.widget.CustomBoldTextView android:layout_marginTop="27dp" android:layout_marginBottom="16dp" android:textColor="@color/green_8CC63F" android:textSize="25sp" tools:text="Hi" />