用這款sketch插件琅催,幫你完美還原安卓界面

你是否也曾被Android”慘不忍睹”的實(shí)現(xiàn)界面搞得焦頭爛額居凶,一度懷疑安卓開發(fā)小哥的能力是否不及格,幾乎都快要對(duì)安卓無望了藤抡。從現(xiàn)在開始無須擔(dān)心侠碧,這篇文章一定會(huì)讓你對(duì)安卓重拾信心,配合開發(fā)做到安卓界面完美還原缠黍。(插件下載弄兜,見文章最底部。)

一瓷式、起因

每一次接過安卓測(cè)試機(jī)驗(yàn)收安卓的實(shí)現(xiàn)界面替饿,都懷著無比忐忑的心情。不出意外每次都被“隨性”的界面所折服贸典,然后花上N次的加班時(shí)間來一點(diǎn)點(diǎn)的調(diào)整视卢。在近期項(xiàng)目結(jié)束后打算找到每個(gè)“隨性”界面的問題所在。終于在旁觀了開發(fā)搭界面的過程中瓤漏,發(fā)現(xiàn)了問題的關(guān)鍵:安卓文本框上下空白間隙腾夯。

經(jīng)過測(cè)量發(fā)現(xiàn),界面實(shí)現(xiàn)出來的文本框高度占比要比設(shè)計(jì)圖中文字高度高出一大截蔬充。文本框在顯示文字的基礎(chǔ)上蝶俱,上下留有相當(dāng)距離的空白間隙走芋。這個(gè)間隙就成了安卓界面還原問題的關(guān)鍵所在歹撒。

通過互聯(lián)網(wǎng)查找解決問題的答案,試圖通過 去除開發(fā)時(shí)文本框控件上下間隙 的辦法來解決這一問題秋柄。最終找到的辦法有兩種:

方法一:自定義文本控件

不使用系統(tǒng)默認(rèn)文本框控件庸队,自定義每個(gè)文本框的寬高积蜻。雖然自定義控件的辦法可以消除控件中的上下間隙,但這個(gè)辦法又產(chǎn)生了新問題彻消,因?yàn)槊恳粋€(gè)文本框都需要單獨(dú)寫一層自定義寬高竿拆,這無疑是增加了一層布局深度,如果整個(gè)APP都使用這種方式來顯示文本宾尚,會(huì)很大程度的影響產(chǎn)品的性能丙笋。所以這個(gè)方法不可取谢澈。

方法二:增加一條去間隙的代碼

這是一個(gè)在很多論壇都提及過得的一條代碼,作用是可以消除文本框的上下間隙:

android:includeFontPadding="false"

當(dāng)加入這條代碼之后御板,文本框高度雖然有所改變锥忿,但并不是完全消除,并且也無法保證消除后的高度與設(shè)計(jì)圖中文本框高度一致怠肋。所以這個(gè)辦法也沒有完全的解決這一問題敬鬓。

當(dāng)消除文本框間隙方法行不通時(shí),那就只能換一種思考方式來解決問題笙各。那就是增加設(shè)計(jì)圖中的文本行高钉答,使得設(shè)計(jì)和實(shí)現(xiàn)界面文本框所占高度保持一致。

這種辦法在互聯(lián)網(wǎng)中有很多文章都曾提到酪惭,那就是在使用sketch進(jìn)行界面設(shè)計(jì)時(shí)希痴,文字的行高設(shè)置。但是大部分的文章都只提到一個(gè)大概的行高與字號(hào)比例春感,如1.2倍砌创、1.4倍等。沒有準(zhǔn)確的對(duì)應(yīng)數(shù)值和驗(yàn)證過程鲫懒。

但前段時(shí)間由@Gis1on和@Youngxkk 兩人分享的《自動(dòng)修復(fù)ios文字行高》的文章中https://mp.weixin.qq.com/s/al93CHBP3z8HQkuDuBW7yQ 詳細(xì)的列舉了在iOS平臺(tái)上嫩实,文本控件的高度與字號(hào)的對(duì)應(yīng)關(guān)系,并找到其中規(guī)律窥岩,開發(fā)了sketch插件甲献,自動(dòng)修復(fù)設(shè)計(jì)圖中不同字號(hào)的行高,使得修復(fù)后的行高與ios開發(fā)平臺(tái)中的文本框高度一致颂翼。高效的解決了ios平臺(tái)界面實(shí)現(xiàn)與設(shè)計(jì)圖因文本所帶來的差異晃洒。

這篇文章對(duì)我有很大的啟發(fā)‰Γ可惜的是球及,他們只解決了ios的問題,但實(shí)際工作中安卓界面的還原情況更令人擔(dān)憂呻疹,只有解決了文本框間隙高度這一問題吃引,才會(huì)有安卓完美還原設(shè)計(jì)的可能。

幸運(yùn)的是刽锤,團(tuán)隊(duì)新來了一位安卓開發(fā)工程師@zz379镊尺。和他簡(jiǎn)單的溝通后,他也意識(shí)到這個(gè)問題的關(guān)鍵性并思。我也感覺到了他追求完美還原的態(tài)度庐氮。和他探討之后,我們決定在ios自動(dòng)修復(fù)插件的基礎(chǔ)上宋彼,通過實(shí)際的測(cè)量弄砍,制作一個(gè)針對(duì)安卓文字行高優(yōu)化的插件颅筋,來高效的解決這一棘手的問題。

二输枯、測(cè)量

先放測(cè)量結(jié)果,見下圖:

1.測(cè)量大小范圍10-70,測(cè)量單位:PX

為什么選擇測(cè)量范圍為10-70占贫?

常用安卓設(shè)計(jì)稿尺寸有兩種一種是360*640桃熄;另一種就是720*1280。而在720*1280的尺寸中常用到的文字的大小型奥,包含了360*640尺寸設(shè)計(jì)圖中常用到的文字大小瞳收。

移動(dòng)設(shè)備中最小文字為20px,常用漢字文字在720尺寸設(shè)計(jì)圖中也基本不會(huì)超過70px厢汹,所以我們選取了10px-70px的文字大小來進(jìn)行測(cè)量螟深,所以我們測(cè)量了10px-70px字號(hào)大小對(duì)應(yīng)的textview的高度。

為什么選擇選擇測(cè)量px而不是sp烫葬?

測(cè)量px是因?yàn)閜x在設(shè)計(jì)圖中是可獲取的單位界弧,如果選擇測(cè)量sp,則在sketch中無法獲得sp數(shù)值搭综。

2.不同機(jī)型和倍率測(cè)量

開發(fā)使用安卓默認(rèn)字體垢箕,但考慮到不同品牌機(jī)型運(yùn)行字體不同,我們進(jìn)行了4款機(jī)型的測(cè)量兑巾,分別是:三星s7(可換分辨率720*1280/1080*1920/1440*2560)条获、小米4(1080*1920)、華為mate9(1080*1920)堅(jiān)果pro2(1080*1920)經(jīng)過測(cè)量蒋歌,同倍率下得到結(jié)果幾乎一致帅掘。所以得到結(jié)論:行高測(cè)量結(jié)果不受品牌安卓機(jī)型默認(rèn)字體影響

隨后又測(cè)量了不同倍率下的行高是否也遵循倍率變化堂油。測(cè)量發(fā)現(xiàn)不論是2倍圖修档、3倍圖還是4倍圖,通過倍率換算為像素值是幾乎一樣的称诗。僅在33sp以上的部分4倍圖中會(huì)出現(xiàn)2-3像素的減少萍悴。所以得到結(jié)論:在UI常用的文字大小范圍內(nèi)行高測(cè)量結(jié)果不受倍率影響。

接著又進(jìn)行了不同字重下行高的測(cè)量寓免,結(jié)果是:行高不受字重影響癣诱。

在ios的插件中,測(cè)量的數(shù)值是有一定的規(guī)律的袜香,他們運(yùn)用了算法來計(jì)算字體大小所對(duì)應(yīng)行高撕予。但是安卓則不同,通過觀察測(cè)量對(duì)比數(shù)據(jù)蜈首,沒有發(fā)現(xiàn)可用規(guī)律实抡,于是就把所有對(duì)應(yīng)數(shù)值全部放入代碼中欠母,不同文字大小直接調(diào)用對(duì)應(yīng)行高數(shù)值。

三吆寨、插件使用注意事項(xiàng)

注意一:

因安卓開發(fā)時(shí)漢字默認(rèn)字體為思源黑體赏淌,所以設(shè)計(jì)圖字體最好為思源黑體,但sketch對(duì)于思源黑體的支持有bug啄清,修改行高后六水,會(huì)出現(xiàn)錯(cuò)位,如圖

所以在設(shè)計(jì)圖中不必再轉(zhuǎn)換字體為思源黑體辣卒,直接使用蘋方字體代替掷贾,因兩款字體均為黑體,并且漢字高度字型接近荣茫,視覺效果不受影響想帅。(注意:兩款字體數(shù)字部分差異較大,思源黑體數(shù)字部分高于蘋方字體的數(shù)字部分啡莉,開發(fā)中如遇到港准,請(qǐng)參照漢字調(diào)節(jié)數(shù)字位置)。

注意二:

插件使用后咧欣,因調(diào)整了行高叉趣,文字會(huì)發(fā)生輕微上下位移。建議先修復(fù)行高再調(diào)整文字距上下元素的間距该押。但在實(shí)際工作中疗杉,安卓設(shè)計(jì)圖基本由ios設(shè)計(jì)圖轉(zhuǎn)換而來,文字都已輸入完畢蚕礼,那只能在修復(fù)行高之后烟具,手動(dòng)微調(diào)各文字上下間距,以保證各元素間距為偶數(shù)或設(shè)計(jì)規(guī)范中的間距數(shù)值奠蹬。

注意三:

使用時(shí)朝聋,選中單個(gè)artboard或者多個(gè)文字圖層,選擇plugins => Auto Fix Android Text Line Height => Fix

快捷鍵: shift + option + command + o

(目前不支持同時(shí)選中多個(gè)artboard進(jìn)行修復(fù))

注意四:

插件不支持OSX系統(tǒng)囤躁,親測(cè)mac系統(tǒng) 10.11.6版本以下不支持冀痕,10.11.6以上能否可用暫不明確。macOS High Sierra均可使用狸演。(因android插件基于ios插件制作言蛇,所以這一問題也存在于ios插件)。

四宵距、修復(fù)效果對(duì)比

通過上面的一系列對(duì)比圖我們可以看到腊尚,修復(fù)前后的界面還原效果差距非常明顯,插件修復(fù)后的行高在實(shí)際工作中可以完美匹配界面還原满哪,并且字符框高度的問題是安卓界面完美還原最為棘手的問題婿斥。只有把這個(gè)問題解決了劝篷,才能有完美還原的可能。而解決這一問題的利器就是這款sketch修復(fù)行高插件民宿。

最后再次對(duì)@Gis1on和@Youngxkk 兩位表達(dá)敬意娇妓,也感謝團(tuán)隊(duì)中的安卓開發(fā)@zz379,感謝他為測(cè)試界面實(shí)現(xiàn)活鹰、和插件代碼的修改付出的努力峡蟋。

本文由York01 原創(chuàng)發(fā)布于公眾號(hào):約克想說,轉(zhuǎn)載請(qǐng)注明出處华望。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仅乓,隨后出現(xiàn)的幾起案子赖舟,更是在濱河造成了極大的恐慌,老刑警劉巖夸楣,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宾抓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡豫喧,警方通過查閱死者的電腦和手機(jī)石洗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來紧显,“玉大人讲衫,你說我怎么就攤上這事》醢啵” “怎么了涉兽?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)篙程。 經(jīng)常有香客問我枷畏,道長(zhǎng),這世上最難降的妖魔是什么虱饿? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任拥诡,我火速辦了婚禮,結(jié)果婚禮上氮发,老公的妹妹穿的比我還像新娘渴肉。我一直安慰自己,他們只是感情好爽冕,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布宾娜。 她就那樣靜靜地躺著,像睡著了一般扇售。 火紅的嫁衣襯著肌膚如雪前塔。 梳的紋絲不亂的頭發(fā)上嚣艇,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音华弓,去河邊找鬼食零。 笑死,一個(gè)胖子當(dāng)著我的面吹牛寂屏,可吹牛的內(nèi)容都是我干的贰谣。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼迁霎,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼吱抚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起考廉,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤秘豹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后昌粤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體既绕,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年涮坐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了凄贩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袱讹,死狀恐怖疲扎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情捷雕,我是刑警寧澤评肆,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站非区,受9級(jí)特大地震影響瓜挽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜征绸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一久橙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧管怠,春花似錦淆衷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春佳头,著一層夾襖步出監(jiān)牢的瞬間鹰贵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工康嘉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碉输,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓亭珍,卻偏偏與公主長(zhǎng)得像敷钾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肄梨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1阻荒、通過CocoaPods安裝項(xiàng)目名稱項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,988評(píng)論 3 119
  • (六十三)不羈本色 (六十四)是姐理虧 烏孫大長(zhǎng)公主幾時(shí)曾受這這種氣?一時(shí)氣得面色醬紫众羡,渾身顫抖侨赡,順手抓了手邊的盤...
    筆間流年閱讀 156評(píng)論 0 1
  • xcode 打包容易搞混的 4個(gè)選項(xiàng) 對(duì)不起,我又一次忘了纱控,這四個(gè)選項(xiàng)干嘛的; Save for iOS App ...
    pengxiaochao閱讀 419評(píng)論 0 0
  • 每日金句 沒有記錄就等于沒有發(fā)生 -【早起打卡】20180805 05:45 -踐行人員 余莎 -【踐行天數(shù)】60...
    Cherishyu閱讀 70評(píng)論 0 0