簡易Android屏幕適配方案

前言

今天給大家推薦一個簡單易行的適配不同安卓機型的方案柿菩,重點突出簡單蘸吓,大約花5~10分鐘就能讓現有的Android項目支持大部分設備状您。

簡書中已有作者更詳細的闡述http://www.reibang.com/p/1302ad5a4b04傀蓉,此文只做補充欧漱,特別補充如何替換現有項目layout文件中的dp、sp

一葬燎、是否合適使用此方案误甚?

UI設計一般以一套dp尺寸作為基準,或者使用Sketch Measure切圖工具生成可切換多個尺寸谱净,如圖:


image.png

靶草。

二、安裝ScreenMatch插件

ScreenMatch
在Android Studio 安裝插件

image.png

三岳遥、自動生成dimens.xml

在項目的默認 values 文件夾中需要一份 dimens.xml 文件
dimens.xml模板下載下來后放入工程即可奕翔。

1.右鍵項目后彈出菜單欄選中ScreenMatch


image.png

2.選擇工程module,一般優(yōu)先選擇各個模塊都能訪問的資源模塊或者通用模塊里生成浩蓉,方便各個模塊都能使用派继。


image.png

3.生成dimens


image.png

三、使用dp_10捻艳、sp_12代替10dp驾窟、12sp寫法

以后在layout中使用新的寫法代替∪瞎欤可以打開dimens.xml看一下名稱定義規(guī)則绅络,
整數:dp_10、sp_12 代表10dp嘁字、12sp
小數:dp_0_5 代表0.5dp
負數:dp_m_16 代表-16dp

四恩急、常見問題

如果是新工程問題不大,生成好dimens.xml后改用新的寫法就好纪蜒。那么對于以后的老工程怎么辦衷恭?手動替換layout文件中的dp、sp值顯然是巨大的勞動成本纯续,而且還可能漏掉某個沒改的就更不好了随珠。對于這類問題當然最理想的解決方案是用腳本批量替換。但是筆者找了一圈并沒有現成腳本猬错,所以自己寫了一個python腳本窗看。

# -*-coding:utf-8-*-
import re
import os


# 替換所有res/layout目錄下的xml
def replace_res_layout(file_dir):
    for root, dirs, files in os.walk(file_dir):
        for name in files:
            file_name = os.path.join(root, name).replace('\\', '/')
            if re.search(r'/res/layout/\w+.xml', file_name, re.S):
                replace_layout_file(file_name)
    pass


# 替換單個layout文件
def replace_layout_file(path):
    layout_file_path = path
    # 讀取layout文件內容
    layout_file = open(layout_file_path, 'r')
    layout_lines = layout_file.read()
    # 正則匹配
    new_lines = replace_layout(layout_lines)    
    if layout_lines != new_lines:
        print(path)
    # 重新寫入正則替換后的內容
    layout_file = open(layout_file_path, 'w')
    layout_file.writelines(new_lines)


pass


# 正則匹配dp、sp值
def replace_layout(search_text):
    # 匹配整數倦炒,如10dp显沈,轉成@dimens/dp_10
    result = re.sub(r'"(?!(0dp))(\d+)([sd]p)"', r'"@dimen/\3_\2"', search_text)
    # 匹配小數,如0.5dp析校,轉成@dimens/dp_0_5
    result = re.sub(r'"(\d+)(?:.)(\d+)([sd]p)"', r'"@dimen/\3_\1_\2"', result)
    # 匹配負數构罗,如-60dp铜涉,轉成@dimens/dp_m_60
    result = re.sub(r'"-(\d+)([sd]p)"', r'"@dimen/\2_m_\1"', result)

    return result


if __name__ == '__main__':
    replace_res_layout(r'/替換你的工程目錄位置/xxxx')

底部replace_res_layout字符串里修改你對應工程目錄位置,親測在python2.7遂唧、python3.7環(huán)境中可正常運行芙代。

如果碰到dimens.xml沒有定義尺寸怎么辦,比如dp_800盖彭?
很簡單纹烹,只要在dimens.xml一下,然后右鍵工程菜單欄screenmatch重新生成一下即可召边。

image.png
         /*獲取sp值*/
        float pxValue = getResources().getDimension(R.dimen.sp_15);//獲取對應資源文件下的sp值
        int spValue = ConvertUtils.px2sp(this, pxValue);//將px值轉換成sp值
        mTvShowParams.setTextSize(spValue);//設置文字大小

        /*獲取dp值*/
        float pxValue2 = getResources().getDimension(R.dimen.dp_360);//獲取對應資源文件下的dp值
        int dpValue = ConvertUtils.px2dp(this, pxValue2);//將px值轉換成dp值
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末铺呵,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子隧熙,更是在濱河造成了極大的恐慌片挂,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贞盯,死亡現場離奇詭異音念,居然都是意外死亡,警方通過查閱死者的電腦和手機躏敢,發(fā)現死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門闷愤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人件余,你說我怎么就攤上這事讥脐。” “怎么了啼器?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵旬渠,是天一觀的道長。 經常有香客問我镀首,道長坟漱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任更哄,我火速辦了婚禮,結果婚禮上腥寇,老公的妹妹穿的比我還像新娘成翩。我一直安慰自己,他們只是感情好赦役,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布麻敌。 她就那樣靜靜地躺著,像睡著了一般掂摔。 火紅的嫁衣襯著肌膚如雪术羔。 梳的紋絲不亂的頭發(fā)上赢赊,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音级历,去河邊找鬼释移。 笑死,一個胖子當著我的面吹牛寥殖,可吹牛的內容都是我干的玩讳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嚼贡,長吁一口氣:“原來是場噩夢啊……” “哼熏纯!你這毒婦竟也來了?” 一聲冷哼從身側響起粤策,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤樟澜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后叮盘,有當地人在樹林里發(fā)現了一具尸體往扔,經...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年熊户,在試婚紗的時候發(fā)現自己被綠了萍膛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡嚷堡,死狀恐怖蝗罗,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情蝌戒,我是刑警寧澤串塑,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站北苟,受9級特大地震影響桩匪,放射性物質發(fā)生泄漏。R本人自食惡果不足惜友鼻,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一傻昙、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彩扔,春花似錦妆档、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春须板,著一層夾襖步出監(jiān)牢的瞬間碰镜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工习瑰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绪颖,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓杰刽,卻偏偏與公主長得像菠发,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子贺嫂,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內容