在Android里面设置一个TextView的文字颜色和文字大小,都很简单,也是一个常用的基本功能。但很少有设置文字字体的,今天要分享的是通过TypeFace去设置TextView的文字字体,布局里面有两个Button,总共包含两个小功能:换字体和变大

功能的核心部分主要是两点:

  1. 创建assets外部资源文件夹,将ttf格式的字体文件放在该目录下
  2. 通过TypeFace类的createFromAsset方法,让TextView通过setTypeFace来改变字体

完整源码如下:

`import android.app.Activity;

import android.graphics.Typeface;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import com.example.memorydemo.R;

public class ChangeFontActivity extends Activity implements View.OnClickListener {

private TextView textViewFont;

@Override

protected void onCreate(Bundle onSavedInstance) {

super.onCreate(onSavedInstance);

setContentView(R.layout.change_textview_font);

textViewFont = findViewById(R.id.textViewFont);
Button btnChangeFont = findViewById(R.id.buttonChangeFont);
Button btnAmplify = findViewById(R.id.buttonAmplify);
btnChangeFont.setOnClickListener(this);
btnAmplify.setOnClickListener(this);

}

@Override

public void onClick(View view) {

switch (view.getId()) {

case R.id.buttonChangeFont:

        // 这里我是从Android framework目录下随便挑了一种字体
textViewFont.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/BitMDL2.ttf")); // 直接将 ttf 文件放在 assets 目录下也是可以的
// textViewFont.setTypeface(Typeface.createFromAsset(getAssets(), "BitMDL2.ttf"));
break; case R.id.buttonAmplify:
// 布局里面默认大小是 12 SP,这里将字体大小设置为 24 SP,方便看效果
textViewFont.setTextSize(24);
break; default:
break;
}

}`

字体文件的存放目录结构如下(ttf字体文件既可以直接放在assets目录,也可以在assets下新建一层目录,比如我建了一层 fonts目录):

2、布局文件change_textview_font.xml

3、效果图如下(先点击变大、再更换字体):

关于Android的字体,有以下两点要注意:

  1. 字体文件必须是ttf(True Type Font)格式,否则,即使程序编译时不出错,在运行时也会发生无法更改字体的情况
  2. 目前Android在支持字体文件时还有些问题,即使用了不支持的字体,Android也不会发生错误,而是以默认字体 Droid Sans 替换。所以大家如果遇到使用外部字体却发现没变化时,问题就出在Android不支持该字体,而非程序错误

本功能里面使用了外部字体,也可以通过调用Typeface的静态方法defaultFromStyle,使用原生字体,它有以下常量,都是int类型:

  • BOLD
  • BOLD_ITALIC
  • DEFAULT
  • DEFAULT_BOLD
  • ITALIC
  • MONOSPACE
  • NORMAL
  • SANS_SERIF
  • SERIF

大家有兴趣可以自己测试下这些字体对应的效果。

【Android初级】使用TypeFace设置TextView的文字字体(附源码)的更多相关文章

  1. 【Android初级】如何动态添加菜单项(附源码+避坑)

    我们平时在开发过程中,为了灵活多变,除了使用静态的菜单,还有动态添加菜单的需求.今天要分享的功能如下: 在界面的右上角有个更多选项,点开后,有两个子菜单:关于和退出 点击"关于", ...

  2. Android 音视频深入 五 完美的录视频(附源码下载)

    本篇项目地址,名字是录视频,求star https://github.com/979451341/Audio-and-video-learning-materials 这一次的代码录视频在各个播放器都 ...

  3. Android 音视频深入 八 小视频录制(附源码下载)

    本篇项目地址,求starthttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/%E5%B0%8F%E ...

  4. Android 音视频深入 二 AudioTrack播放pcm(附源码下载)

    本篇项目地址,名字是录音和播放PCM,求starhttps://github.com/979451341/Audio-and-video-learning-materials 1.AudioTrack ...

  5. EasyPlayer Android安卓流媒体播放器实现播放同步录像功能实现(附源码)

    本文转自EasyDarwin团队John的博客:http://blog.csdn.net/jyt0551,John是EasyPusher安卓直播推流.EasyPlayer直播流媒体播放端的开发和维护者 ...

  6. 环信SDK 头像、昵称、表情自定义和群聊设置的实现 一(附源码)

    前言: 环信的SDK在公司的项目中有用到,现在用到的是群聊的部分,这里我们分析总结一下自己对环信给的DEMO大概的拆解一下,说说我们怎么样充分的利用这个demo来写我们所需要的业务.这个也由于篇幅的原 ...

  7. Android 音视频深入 四 录视频MP4(附源码下载)

    本篇项目地址,名字是<录音视频(有的播放器不能放,而且没有时长显示)>,求star https://github.com/979451341/Audio-and-video-learnin ...

  8. Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO

    距离上次发布(android高仿系列)今日头条 --新闻阅读器 (二) 相关的内容已经半个月了,最近利用空闲时间,把今日头条客户端完善了下.完善的功能一个一个全部实现后,就放整个源码.开发的进度就是按 ...

  9. Android中Canvas绘图基础详解(附源码下载) (转)

    Android中Canvas绘图基础详解(附源码下载) 原文链接  http://blog.csdn.net/iispring/article/details/49770651   AndroidCa ...

随机推荐

  1. angular8 在componet里面跳转新的地址页面

    this.router.navigate(['/teacher/course/detail/' + id]);

  2. 如何优雅地使用云原生 Prometheus 监控集群

    作者陈凯烨,腾讯云前端开发工程师.负责 TKE 集群,弹性集群和云原生监控等模块控制台开发. 概述 Prometheus 是一套开源的系统监控报警框架.2016 年,Prometheus 正式加入 C ...

  3. 用Python实现童年的回忆:俄罗斯方块!别说还挺好玩

    在那个电子产品比较匮乏的年代,小游戏机

  4. 高德打车对接loader.js文件的实现

    const u = navigator.userAgent;const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > ...

  5. Unity使用小剧场—创建的按钮On Click()只有MonoScript怎么办

    前言: 在游戏开发过程中遇到了一些小问题,以后都放到小剧场里,今天介绍怎么给按钮赋予方法并解决标题所述问题. 步骤: 1. 不管怎么说,先新建一个按钮 右键场景-[UI]-[Button] 这里会自动 ...

  6. 安装篇七:配置 Nginx 使其支持 PHP 应用

    配置说明(NGINX-PHP) (让nginx  php(中间件)之间建立关系):nginx--php建立关系---fastcgi---cgi 第一个里程: 编写nginx虚拟主机配置文件 第二个里程 ...

  7. Android 自定义构建类型 BuildType

    简单介绍了 BuildType 定义在 app 项目与 module 项目的区别,以及在 Gradle 2.x 与 3.x 版本的区别. 最近接触到自定义构建类型 BuildType,发现这一块有些地 ...

  8. mac 清理磁盘空间

    128G mac真的用的很崩溃,发现系统占用80G ,肯定是有问题的,发现了是缓存的原因,删除后好多了,记录一下. 从管理里进入之后,从文稿中选择"文件浏览器"可以看到每一个文件夹 ...

  9. 为什么MySQL不推荐使用uuid作为主键?

    前言 在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么 ...

  10. Java基础之String中equals,声明方式,等大总结

    无论你是一个编程新手还是老手,提到String你肯定感觉特别熟悉,因为String类我们在学习java基础的时候就已经学过,但是String类型有我们想象的那么简单吗?其实不然,String类型的知识 ...