关闭

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

标签: 字体android控件安卓
3067人阅读 评论(2) 收藏 举报
分类:

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




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


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等 ,同理。

3
0
查看评论

自定义TextView显示偏移问题

自定义TextView显示偏移问题先上最终要实现的效果图好了: 下面上代码:`public class MyTextView extends TextView { private String titleText; private int titleColor; pr...
  • weryung
  • weryung
  • 2016-04-05 13:21
  • 997

自定义View——坑、技巧、调优

相信有创建过“自定义View”经验的众多的开发者朋友当中有相当一部分人猿友是直接copy网上的一些代码拿来用,结果往往不尽如人意, 碰到bug或者是需求发生变化时往往手忙脚乱,android自定义View你真的知道么??? 本文主要是整理介绍一下“自定义View"的 一些容易踩坑的地方和一...
  • sinat_15877283
  • sinat_15877283
  • 2016-04-04 14:28
  • 1568

android 自定dialog,其中textview卡顿现象

今天自定义了一个dialog,来实现像系统的progressDialog的功能,布局什么都是小case了,会android的都会,那么现在就来说说遇到的这个卡顿现象。 因为这个dialog是用来显示下载的进度,并且显示时时的下载字节数,所以每次下载后,都会去更新textview的值,因为下载都是在...
  • htyxz8802
  • htyxz8802
  • 2016-08-30 18:35
  • 821

解决Android CalendarView显示卡顿的问题

Android CalendarView显示卡顿 基本情况 添加CalendarView代码 解决方法基本情况无论在Dialog、PopupWindow等View中嵌套CalendarView的时候,都会出现CalendarView显示卡顿的问题,或者显示的日历只有星期,具体的日期无法看到的问题,更...
  • u012336923
  • u012336923
  • 2016-06-16 16:15
  • 1791

android中textview控件中的文字的位置是如何调整的

有2种方法可以设置TextView文字居中: 一:在xml文件设置:android:gravity="center" 二:在程序中设置:m_TxtTitle.setGravity(Gravity.CENTER); 备注:android:gravity和android:layou...
  • xjbclz
  • xjbclz
  • 2016-11-06 22:25
  • 6738

Android—解决重写TextView设置字体大量引用后卡屯的问题

我在http://blog.csdn.net/weiguishan/article/details/46678935这边博客谢了两种方法,自定义textview字体,在xml里面大量引用会卡顿,下面给出解决办法。 首先写一个类,继承Application,在该类的oncreate方法获取Typef...
  • weiguishan
  • weiguishan
  • 2015-06-29 12:10
  • 1669

字体造成卡顿

在iOS7下选择iOS9的字体会造成卡顿的现象
  • gavin0123
  • gavin0123
  • 2016-01-17 23:48
  • 254

解决Android Studio卡顿的问题

有时我们操作后,AS要很久才能反映过来。严重影响开发的心情,做完如下操作,会好很多:  (1)   Android Studio 2.0 以下:                   每次...
  • DG_summer
  • DG_summer
  • 2016-11-24 14:16
  • 940

解决安卓手机卡顿的七个技巧

转载自:http://www.7to.cn/news/detail/3446.html 导读:最近,有用户吐槽自己的手机越来越卡,其实这不是手机的问题,而安卓运行机制的缺陷。虽然安卓系统512MB也能流畅运行,但这仅仅是系统流畅,现在手机APP都是名副其实的内存杀手。有经验的安卓高手都知道,即...
  • lin111000713
  • lin111000713
  • 2016-11-25 15:26
  • 6374

Android Studio 卡顿问题解决方案

先说说我的电脑配置: CPU-i7低压 内存-8G 硬盘-机械500G 相信大部分人初次使用AS都会遇到一个头疼的问题:卡顿-运行慢 网上有很多解决方案,目前本人亲测行之有效果的方案如下: step1: 修改android-studio/bin/studio.exe.vmoptions ...
  • leaf_130
  • leaf_130
  • 2016-04-27 16:29
  • 1423
    个人资料
    • 访问:131276次
    • 积分:1625
    • 等级:
    • 排名:千里之外
    • 原创:50篇
    • 转载:2篇
    • 译文:0篇
    • 评论:43条
    最新评论