偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

看完字體系列的文章,你還覺(jué)得我是在說(shuō)字體?

移動(dòng)開(kāi)發(fā) Android
最近一段時(shí)間,斷斷續(xù)續(xù)的一直在寫(xiě)一個(gè)關(guān)于修改 App 字體的系列文章,到現(xiàn)在已經(jīng)寫(xiě)了九篇了,差不多算是將我覺(jué)得和字體有關(guān)的內(nèi)容,都講解清楚了,到現(xiàn)在,應(yīng)該算是完結(jié)了。

[[208286]]

最近一段時(shí)間,斷斷續(xù)續(xù)的一直在寫(xiě)一個(gè)關(guān)于修改 App 字體的系列文章,到現(xiàn)在已經(jīng)寫(xiě)了九篇了,差不多算是將我覺(jué)得和字體有關(guān)的內(nèi)容,都講解清楚了,到現(xiàn)在,應(yīng)該算是完結(jié)了。

花這么大的精力和篇幅,用來(lái)講解 Android 替換字體的所有細(xì)節(jié),我相信之后的 Android 技術(shù)圈應(yīng)該不會(huì)再有字體相關(guān)的文章能超過(guò)它了。

當(dāng)然,我這里并不是說(shuō)它有多好技術(shù)有多深,只是修改字體還改的知識(shí)點(diǎn)就這么多,而這個(gè)系列的文章已經(jīng)涵蓋了修改字體所涉及到的所有內(nèi)容,再花精力和時(shí)間來(lái)重寫(xiě)一遍,也很難有本質(zhì)上的提高,時(shí)間和精力的成本收益不均衡,意義并不大。當(dāng)然,不排除有更顛覆的技術(shù)出現(xiàn),就另當(dāng)別論了。

不過(guò)今天要聊的,并不是本系列完結(jié)后的感言,我真正想說(shuō)的是,你真的看懂本系列的文章了嗎?

從開(kāi)始寫(xiě)這個(gè)系列的文章開(kāi)始,就一直有一些聲音在群里或者評(píng)論里。有人說(shuō),Google 已經(jīng)在 Support v26 中,發(fā)布了 Font in xml 的方案了;有人說(shuō),已經(jīng)有成熟的開(kāi)源項(xiàng)目了,你說(shuō)這些都沒(méi)有意義。最開(kāi)始我會(huì)說(shuō),哦,這個(gè)之后會(huì)寫(xiě)到,之后慢慢的也不再理會(huì)了。

[[208287]]

但是,真的是沒(méi)有意義的嗎?

技術(shù)是一直在迭代更新的,每天都有新的技術(shù)在面世,作為技術(shù)人,如果只是一味的追逐這些新鮮的技術(shù)如何使用,何時(shí)是個(gè)頭?

如果你想在這個(gè)行業(yè)一直走下去,你真正需要做的是建立自己的技術(shù)知識(shí)體系,將你學(xué)到的新技術(shù),核心技術(shù)和概念抽象出來(lái),形成自己的技術(shù)回路,固化在意識(shí)中,能將這些經(jīng)驗(yàn),橫向輻射到其它的技術(shù)點(diǎn)上。當(dāng)然,說(shuō)這些有點(diǎn)玄奧。

而我們真正需要關(guān)心的是這些技術(shù)的核心點(diǎn),它的精髓在哪里,為什么會(huì)這么設(shè)計(jì),這樣的實(shí)現(xiàn)到底有缺點(diǎn)在哪里。將技術(shù)抽象出來(lái),透過(guò)表象看本質(zhì),你才能適用在其他技術(shù)上。當(dāng)然,這樣境界,通常沒(méi)有五年以上的經(jīng)驗(yàn),很難做到。

知其然不難,還要知其所以然,知一件事所以然,可知百件事所以然。我寫(xiě)這些文章,你看過(guò)可以讓你得到結(jié)論,但是獲取、證明、推導(dǎo)、驗(yàn)證這些技術(shù)的思維路徑,是我更想讓你知道的事情。

Google 剛在 Google I/O 大會(huì)上宣布 Kotlin 之后為 Android 的主要開(kāi)發(fā)語(yǔ)言,很多人花大力氣學(xué)它。但是我見(jiàn)過(guò)有人,花了小半天看了 Kotlin 的文檔和一些關(guān)鍵點(diǎn),之后用了兩周從零寫(xiě)了個(gè)完整的 App 出來(lái),現(xiàn)在已經(jīng)上架,廣告收入還不錯(cuò)。這些才是掌握了核心技術(shù)的人,任由技術(shù)如何發(fā)展,只要他們還在這個(gè)行業(yè)內(nèi),他們是不會(huì)被淘汰的,因?yàn)樗麄冇凶约旱募夹g(shù)體系,很多東西哪怕沒(méi)接觸過(guò)也能分析出大概的原理。而這些,才是真正想走技術(shù)路的技術(shù)人,真正需要培養(yǎng)的能力。

再來(lái)反觀本字體系列的文章,透過(guò)他們你能看到什么?其實(shí)整體的系列,主要就是分四部分。

一、了解修改字體相關(guān)的基本知識(shí)。

1、Android 修改字體,細(xì)節(jié)概述。

2、修改字體所需要的 Typeface。

這兩篇文章,主要講解了修改字體你需要用到的一些屬性,還有系統(tǒng)默認(rèn)字體的細(xì)節(jié),以及加載自定義字體需要用到的 Typeface 這個(gè)類(lèi)的源碼細(xì)節(jié)。

當(dāng)你決定需要用一個(gè)方案去實(shí)現(xiàn)某個(gè)功能的時(shí)候,你提前需要了解到這個(gè)方案,所涉及到的所有的細(xì)節(jié),這樣避免給今后的自己埋坑。

不能說(shuō)用到一個(gè) Api,挺好用,調(diào)用 setXxx() 就可以實(shí)現(xiàn)。如果你到這里就完了,那永遠(yuǎn)只能是個(gè)初級(jí)。

最少你需要知道 setXxx() 方法內(nèi)部到底干了什么?線程是否安全?使用的時(shí)候有沒(méi)有什么需要注意的情況?這些細(xì)節(jié),只能通過(guò)讀源碼來(lái)找到答案。

二、一些可以解決問(wèn)題但不***的方案

3、粗暴的方式,替換全局字體。

4、通過(guò)反射,修改 Typeface,替換全局字體。

這兩篇文章,講了一些不優(yōu)雅的方案,例如全局替換自定義控件,在 onCreate() 的時(shí)候遍歷 ViewTree ,以及通過(guò)反射去修改 Typeface 的某個(gè)默認(rèn)字體,然后配合主題的設(shè)置去修改全局字體。

這些,其實(shí)最終都不會(huì)被用在商業(yè)項(xiàng)目上,除了不優(yōu)雅,局限性和效率問(wèn)題,都是商業(yè)項(xiàng)目需要考慮的,但是并不阻礙我們了解這些方法。

修改字體這個(gè)功能,實(shí)際上是有更好的解決方案的,但是并不排除有其他的需求,暫時(shí)找不到別的更好的方案。那么,這個(gè)時(shí)候能解決問(wèn)題的方案,就是好方案,需要解決的是讓這些不好的方案,影響不要那么大。

 

[[208288]]

三、低成本快速的替換控件

5、利用 AppCompatDelegate ,全局替換字體。

6、修改 LayoutInflater,全局修改字體。

7、通過(guò)自定義屬性,低成本添加多個(gè)字體。

其實(shí)到***,你就會(huì)發(fā)現(xiàn),最終的問(wèn)題在于,如何低成本、快速優(yōu)雅的替換掉控件,或者統(tǒng)一的為控件附加字體信息。

而這些方案,你橫向輻射一下,你會(huì)發(fā)現(xiàn),它不僅僅適用于替換字體。全局替換控件,并不是要手動(dòng)一個(gè)布局文件一個(gè)布局文件的去修改,用 AppCompatDelegate 或者 LayoutInflater 也能快速全局替換。自定義屬性并不是只有在自定義控件的時(shí)候才可以用上。

而這些概念,所有需要替換控件的地方,都可以使用。例如:換膚、無(wú)埋點(diǎn)統(tǒng)計(jì),這些都是可以用到的。如果你單純的把它當(dāng)成一個(gè)替換字體的解決方案,那它也只能替換字體。

四、其他新的或者成熟的方案

8、Android Oreo 可下載字體。

9、利用成熟開(kāi)源庫(kù),替換全局字體。

Support v26 新增加的可下載字體,也是一個(gè)不錯(cuò)的解決方案。但是在商業(yè)項(xiàng)目上,對(duì)這些庫(kù)的版本升級(jí),都是謹(jǐn)慎的。而使用成熟的開(kāi)源庫(kù),也是一個(gè)不錯(cuò)的方案。

開(kāi)源庫(kù),用的時(shí)候非常的爽,引入進(jìn)來(lái),按文檔改個(gè)關(guān)鍵點(diǎn),就可以實(shí)現(xiàn)功能。但是只要是解決方案,都會(huì)有局限性,你在使用它的時(shí)候一定要了解清楚它的所有細(xì)節(jié),知道它的核心原理是什么?技術(shù)盲點(diǎn)在哪里?

如果你最終選擇了開(kāi)源庫(kù)來(lái)替換字體,如果你看了之前的文章,你會(huì)發(fā)現(xiàn)實(shí)際上這個(gè)開(kāi)源庫(kù)也只是前面幾篇文章中,介紹的技術(shù)點(diǎn)的一個(gè)不同的使用方式,你用起來(lái)就可以比較放心,知道出了問(wèn)題大概是哪里的問(wèn)題,如何快速解決。

成熟的開(kāi)源庫(kù)很多,但是如果你還是只停留在使用上,你再次出去面試的時(shí)候,面試官問(wèn)你為什么選擇它?它的核心原理是什么?有沒(méi)有別的替代方案?你怎么回答?難道說(shuō)因?yàn)榇蠹叶加脝?

這些就是你核心競(jìng)爭(zhēng)力的體現(xiàn)。

***,我想說(shuō),技術(shù)路漫漫,且行且珍惜。

不要只是流于表面,將技術(shù)原理抽象理解,固化在自己意識(shí)中,形成自己的技術(shù)回路。這樣你才能在這個(gè)技術(shù)大爆炸的時(shí)代,你的經(jīng)驗(yàn)才能保值,無(wú)懼變化。

結(jié)論固然重要,但是獲取、證明、推導(dǎo)、驗(yàn)證這些技術(shù)的思維路徑,是我更想讓你知道的事情。

【本文為51CTO專(zhuān)欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)微信公眾號(hào)聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2023-11-06 12:57:03

2020-06-24 14:06:04

IPv6IPv4互聯(lián)網(wǎng)協(xié)議

2022-12-08 19:20:11

開(kāi)源用戶使用軟件

2010-09-06 10:16:21

CSS字體

2019-01-30 13:44:34

JVM內(nèi)存服務(wù)器

2019-05-30 09:32:49

2023-08-10 13:57:50

模型AI

2018-06-05 09:00:00

編程字體HackMonaco

2023-06-14 15:06:30

筆跡AI

2019-07-10 15:15:23

JVM虛擬機(jī)Java

2010-08-25 13:25:22

CSSfont-family

2009-12-10 09:40:01

linux安裝字體

2018-05-22 16:21:54

數(shù)字體驗(yàn)管理DEMRiverbed

2009-08-17 07:43:42

Linux命令行安裝字linux命令行安裝彩色字體設(shè)置

2023-11-29 08:40:48

new關(guān)鍵字

2022-02-21 15:49:44

可變字體谷歌字體家族

2023-11-30 08:27:38

泛化調(diào)用架構(gòu)

2021-07-05 12:50:55

CRJava代碼

2018-07-31 14:03:09

JVM內(nèi)存數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)