andorid 修改字体一文搞定

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

替换字体也是一个比较常见的需求,一般分几种情况。实现起来也不麻烦,这里简单记录下

全局替换字体

步骤1

assets目录下拷贝字体文件

步骤2

application中替换默认字体

在Application的onCreate方法中增加替换方法

/**
 * 设置自定义字体
 *
 * @param context
 * @param staticTypefaceFieldName 需要替换的系统字体样式
 * @param fontAssetName           替换后的字体样式
 */
public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) {
    // 根据路径得到Typeface
    Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName);
    // 设置全局字体样式
    replaceFont(staticTypefaceFieldName, regular);
}

private static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) {
    try {
        final Field staticField = Typeface.class.getDeclaredField(staticTypefaceFieldName);
        staticField.setAccessible(true);
        //替换系统字体样式
        staticField.set(null, newTypeface);
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}

步骤3:新增主题Theme,并在AndroidManifest文件中注册

新增主题

<style name="YourTheme" parent="AppTheme.Base">
    <item name="android:typeface" >serif</item>
</style>

在AndroidManifest.xml文件中设置主题

<application xmlns:tools="http://schemas.android.com/tools"
    ...
    android:theme="@style/YourTheme"
    tools:replace="android:theme">
    ...
</application>

替换某些布局中的字体,也就是局部替换

步骤1:在res目录下新建font目录,拷贝字体文件

步骤2: 代码中替换

TextView textView = (TextView) findViewById(R.id.textView_font);
Typeface typeface = ResourcesCompat.getFont(this, R.font.myfont);
textView.setTypeface(typeface);

                       欢迎关注我的微信公众号,和我一起每天进步一点点!

AntDream

### NLP基础知识与学习路径 自然语言处理(Natural Language Processing, NLP)作为计算机科学和人工智能的重要分支,其目标在于使计算机能够理解和生成人类语言。这是一门融合了语言学、计算机科学以及数学等多个学科的综合性科学[^2]。 #### 数学基础的重要性 对于初学者而言,扎实的数学基础是不可或缺的一部分。线性代数、概率论与统计学构成了NLP的核心工具集。这些知识不仅帮助理解算法原理,还支持构建更高效的模型架构。 #### 词向量技术简介 在现代NLP实践中,`词向量(Word Embedding)`扮演着极为重要的角色。这是一种将词汇映射到连续空间上的高维数值表示方法。通过这种方式,可以有效地捕获词语间的语义相似性和句法结构特性。常见的预训练模型如`Word2Vec`, `GloVe` 和基于Transformer架构的`BERT`均依赖于此类嵌入机制来增强表达能力[^3]。 以下是实现简单版本word embedding的一个Python代码片段: ```python import numpy as np from sklearn.decomposition import PCA from matplotlib import pyplot def create_word_embedding(sentences, vocab_size=100, embed_dim=5): from gensim.models import Word2Vec model = Word2Vec(sentences=sentences.split(), vector_size=embed_dim, window=5, min_count=1, workers=4) words = list(model.wv.index_to_key) X = model.wv[words] pca = PCA(n_components=2) result = pca.fit_transform(X) pyplot.scatter(result[:, 0], result[:, 1]) for i, word in enumerate(words): pyplot.annotate(word, xy=(result[i, 0], result[i, 1])) pyplot.show() create_word_embedding("The cat sat on the mat.") ``` 此脚本展示了如何利用gensim库创建基本单词嵌入并可视化它们的关系图谱。 #### 推荐的学习平台 为了更好地掌握上述理论和技术细节,“ai-learning”是一个值得探索的学习站点。该平台上提供了丰富的课程资料覆盖从基础概念到高级应用各个层面的内容[^1]。 ### 结束语 综上所述,进入NLP领域需具备良好的编程技巧、坚实的数学功底以及对最新研究成果的关注度。随着深度学习框架的发展,越来越多强大的开源项目可供实践检验所学到的知识点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值