android 自定义控件字体,解决字体偏移,卡顿,代码重复等问题
2016-05-23 11:08
459 查看
其实,安卓上使用自定义的字体非常得简单,在assets文件夹下面,自己定义一个font文件夹,然后,把自己的字体放进去,可以重命名一下
对相应的textview设置自定义字体
但其实这样还有一些问题,我一个一个说:
刚开始,我们老大给我们找了一个xx.otf格式的字体,苹果上使用没有问题,安卓上,可以把后缀名改一下,改成ttf,也可以使用,但发生的问题就是,字体是整体偏下的,使用原生的字体,可以正常显示,但使用了这个字体,只能显示上半拉,更关键的是,英文和中文 的偏移量还不一样,弄得我调了半天,最后发现,是字体的问题,必须使用原生的ttf字体,使用软件把otf字体转换成ttf也不行,照样会偏。
解决办法 : 使用原生的ttf字体
如你所知,使用上面的代码 ,就可以给textView设置字体,但这样,没法设置全局字体,每一个控件,都要这样设置,我的应用有很多个界面 ,有很多控件,我每个都这样设置,结果,界面非常卡。还会溢出。
而且,这样,也会有大量的代码重复。
这两个问题,我最后的解决办法如下:
首先:自定义applicaion,现在,一般都是这样自定义的application,然后,在程序如下:
如上面的代码所示,我直接声明了一个typeFace,它有自己的getter,setter方法,同时,在程序初使化的时候,我就用下面的代码,把typeface初使化了。
然后,使用自定义的View:
如上面代码,在自定义的view的构造方法中,直接使用了MyApplication中的typeFace来给view设置字体。
这样,在所有的界面中,我们可以使用我们这个自定义的textView,只在初始化的MyApplication类中加载一次字体初始化,所以卡顿问题解决,测试后完全没有问题。
其它的,如果editText,button等 ,同理。
对相应的textview设置自定义字体
但其实这样还有一些问题,我一个一个说:
字体偏移:
刚开始,我们老大给我们找了一个xx.otf格式的字体,苹果上使用没有问题,安卓上,可以把后缀名改一下,改成ttf,也可以使用,但发生的问题就是,字体是整体偏下的,使用原生的字体,可以正常显示,但使用了这个字体,只能显示上半拉,更关键的是,英文和中文 的偏移量还不一样,弄得我调了半天,最后发现,是字体的问题,必须使用原生的ttf字体,使用软件把otf字体转换成ttf也不行,照样会偏。解决办法 : 使用原生的ttf字体
卡顿,代码 重复:
如你所知,使用上面的代码 ,就可以给textView设置字体,但这样,没法设置全局字体,每一个控件,都要这样设置,我的应用有很多个界面 ,有很多控件,我每个都这样设置,结果,界面非常卡。还会溢出。而且,这样,也会有大量的代码重复。
这两个问题,我最后的解决办法如下:
首先:自定义applicaion,现在,一般都是这样自定义的application,然后,在程序如下:
如上面的代码所示,我直接声明了一个typeFace,它有自己的getter,setter方法,同时,在程序初使化的时候,我就用下面的代码,把typeface初使化了。
然后,使用自定义的View:
如上面代码,在自定义的view的构造方法中,直接使用了MyApplication中的typeFace来给view设置字体。
这样,在所有的界面中,我们可以使用我们这个自定义的textView,只在初始化的MyApplication类中加载一次字体初始化,所以卡顿问题解决,测试后完全没有问题。
其它的,如果editText,button等 ,同理。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories