給你一個全自動的螢幕適配方案(基於SW方案)二 —— Calces.Screen外掛擴充功能升級

Tangpj發表於2018-10-29

如果不瞭解Calces.screen外掛的用法或者想深入瞭解sw( Smallest Width) 螢幕適配方案的話,可以閱讀上一篇文章:

給你一個全自動的螢幕適配方案(基於SW方案)!—— 解放你和UI的雙手

原文連結

前言

前段時間,筆者開發了一個名為Calces.Screen的全自動螢幕適配外掛,這個外掛是基於官方推薦的螢幕適配方案實現的。它的核心原理就是通過配置限定符來設定需要適配的螢幕的最少寬度來實現螢幕適配。而該外掛的作用就是通過配置把設計稿的標尺自動生成你需要適配的螢幕dimension資原始檔來實現螢幕適配。並且外掛還提供了資源圖片自動設配方案,所以在開發的時候,我們只需要提供一套高清的圖片資源即可。外掛會根據配置自動幫你生成你需要的解析度的圖片。而本外掛推出後,有部分使用者反應了一些問題,主要是Screen限制了資原始檔的名字為dimens.xml,並且無法圖片縮放的時候只支援縮放mipmap資料夾下的圖片,所以這次更新主要是為了解決這兩個問題的。

如果不瞭解Calces外掛的話,可以登陸Github檢視專案的介紹。

專案地址:calces-gradle-plugin

如果想了解Calces是如何實現自動元件化的話,可以閱讀這篇文章:

Gradle自動實現Android元件化模組構建

你的Star是我堅持的動力?

Screen外掛指定dimensions的檔名

Screen外掛在1.2.42之前的版本里面,限制了dimensions檔案的名字為dimens.xml的,但是不是所有專案中的dimensions檔案都命名為dimens.xml的。例如,我們把dimensions檔案命名為dimen.xml,如果我們用1.2.42之前版本的Screen外掛來生成適配sw dimensions檔案的話,則會適配失敗。在1.2.42版本的話則解決了這個問題,我們只需要把dimensFileName設定為dimens就可以了。程式碼如下:

screen{

    dimens{
        dimensFileName "dimen"
        designPx 375
        smallesWidths 320,375,411,900
        scale BigDecimal.ROUND_UP
        auto true
    }

}
複製程式碼

在1.2.42的版本中,dimensFileName的預設值是dimens,所以如果dimensions的名字為dimens的話,則可以不設定該值。配置完畢後,重新build一遍專案,就會根據配置生成values-sw320dp、values-sw375dp、values-sw411dp、values-sw900dp的螢幕適配資原始檔了。

Screen外掛指定資原始檔夾的名字

在1.2.42之前的版本中,Screen外掛的資原始檔夾預設是mipmap,並且沒有提供配置方法。但是有一些老專案中的圖片資源是儲存在drawable中的,所以Screen外掛會和一些比較老的專案產生不相容的問題。所以在新版本中,Screen提供了配置方法,配置方法也非常簡單。在新版本的mipmap的配置項中提供了folder配置,可以通過floder配置待轉換的圖片資原始檔夾的名字。具體配置方法如下:


screen{
    mipmap{
        folder "drawable"
        designDensity "xxxhdpi"
        mipmapDensity 'xxhdpi','xhdpi','hdpi'
        auto true
    }
}
複製程式碼

十分簡單,配置完畢後,重新build一下就可以生成需要密度的圖片資源了。如上面的例子中,會生成drawable-xxhdpi、drawable-xhdpi、drawable-hdpi資料夾,轉換後的圖片就會儲存在這裡。

小結

這篇部落格非常簡單,主要是介紹Calces.Screen外掛的重要更新。上個版本的Calces.Screen外掛推出後收到反饋比較多的問題。因為筆者在開發Calces.Screen外掛的時候,是基於比較新的Android SDK進行開發的。沒有考慮對舊版本的專案的相容,在這裡非常感謝提出意見的讀者。如果大家有什麼想法的話,可以對Calces專案提交pull request,又或者直接發郵件給我也是可以的。

在這裡在提醒一下大家,如果希望進一步瞭解Calces外掛或者你對Android自動化構建有什麼想法的話,可以去Github上提交pull request,或者發郵件聯絡我。這裡也非常歡迎大家參與到Calces的開發中。如果覺得這個外掛好用的話,歡迎點下star

你的Star是我堅持的動力?

掃一掃二維碼可以關注我:

qr

相關文章