工具
Eclipse
方法
在Eclipse中新建Android工程fontdemo
代码只有MainActivity.javaCustomFontTextView.java
布局文件是activity_main.xml。assets下面是使用的字体库文件
核心代码是CustomFontTextView.java.CustomFontTextView继承自TextView,
在初始化的时候读取自定义的字体库
在布局文件中,像普通的TextView一样,引用自定义的这个文件
MainActivity只负责展示自定义的这个TextView
效果
android中是可以使用自定义的字体,将字体文件ttf格式的放在asserts,:/*
* 必须事先在assets底下创建一fonts文件夹 并放入要使用的字体文件(.ttf)
* 并提供相对路径给creatFromAsset()来创建Typeface对象
*/
Typeface fontFace = Typeface.createFromAsset(getAssets(),
"fonts/STXINGKA.TTF")
// 字体文件必须是true type font的格式(ttf);
// 当使用外部字体却又发现字体没有变化的时候(以 Droid Sans代替),通常是因为
// 这个字体android没有支持,而非你的程序发生了错误
把icon.ttf 字体库放入assets文件夹下
自定义类
public class Icon implements LayoutInflaterFactory {
private static Typeface mTypeFace
private AppCompatDelegate mAppCompatDelegate
public Icon(Context context,AppCompatDelegate AppCompatDelegate) {
if(mTypeFace ==null)
mTypeFace = Typeface.createFromAsset(context.getAssets(),"icon.ttf")
this.mAppCompatDelegate = AppCompatDelegate
}
@Override
public View onCreateView(View parent, String name, Context context, AttributeSet attrs) {
View view = mAppCompatDelegate.createView(parent, name, context, attrs)
if (view instanceof TextView) {
((TextView)view).setTypeface(mTypeFace)
}
return view
}
}
在activity 的oncreate 的实现代码
@Overrideprotected void onCreate(Bundle savedInstanceState) {
LayoutInflaterCompat.setFactory(getLayoutInflater(),new Icon(this,getDelegate()))
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)