android 设置字体卡顿,android 自定义控件字体,解决字体偏移,卡顿,代码重复等问题...

其实,安卓上使用自定义的字体非常得简单,在assets文件夹下面,自己定义一个font文件夹,然后,把自己的字体放进去,可以重命名一下,如图:

d74c8a50bb81062e6b80ab35c92fb53c.png

这样之后,在代码中,设置一下就可以,如下面所示:

Typeface typeface = Typeface.createFromAsset(_instance.getAssets(), "fonts/mi4.ttf");

textView.setTypeface(typeface);

这样,textView显示的文字就是我们自定义的字体了。

但其实这样还有一些问题,我一个一个说:

字体偏移:

刚开始,我们老大给我们找了一个xx.otf格式的字体,苹果上使用没有问题,安卓上,可以把后缀名改一下,改成ttf,也可以使用,但发生的问题就是,字体是整体偏下的,使用原生的字体,可以正常显示,但使用了这个字体,只能显示上半拉,更关键的是,英文和中文 的偏移量还不一样,弄得我调了半天,最后发现,是字体的问题,必须使用原生的ttf字体,使用软件把otf字体转换成ttf也不行,照样会偏。

解决办法 :

使用原生的ttf字体

卡顿,代码 重复:

如你所知,使用上面的代码 ,就可以给textView设置字体,但这样,没法设置全局字体,每一个控件,都要这样设置,我的应用有很多个界面 ,有很多控件,我每个都这样设置,结果,界面非常卡。还会溢出。

而且,这样,也会有大量的代码重复。

这两个问题,我最后的解决办法如下:

首先:自定义applicaion,现在,一般都是这样自定义的application,然后,在程序如下:

public class MyApplication extends Application {

private Typeface typeface;

private static MyApplication _instance;

@Override

public void onCreate() {

super.onCreate();

_instance = (MyApplication) getApplicationContext();

typeface = Typeface.createFromAsset(_instance.getAssets(), "fonts/mi4.ttf");

}

public static MyApplication getInstace() {

return _instance;

}

public Typeface getTypeface() {

return typeface;

}

public void setTypeface(Typeface typeface) {

this.typeface = typeface;

}

}

如下面的代码所示,我直接声明了一个typeFace,它有自己的getter,setter方法,同时,在程序初使化的时候,我就用下面的代码,把typeface初使化了。

然后,使用自定义的View:

public class MyTextView extends TextView {

public MyTextView(Context context) {

super(context);

setTypeface(MyApplication.getInstace().getTypeface());

}

public MyTextView(Context context, AttributeSet attrs) {

super(context, attrs);

setTypeface(MyApplication.getInstace().getTypeface());

}

public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

setTypeface(MyApplication.getInstace().getTypeface());

}

}

如图,在自定义的view的构造方法中,直接使用了MyApplication中的typeFace来给view设置字体。

这样,在所有的界面中,我们可以使用我们这个自定义的textView,我们测试并且软件现在已经上线了,完全没有问题。

其它的,如果editText,button等 ,同理。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值