android UI調(diào)試工具SwissArmyKnife

SwissArmyKnife是什么

SwissArmyKnife 是一款方便調(diào)試android UI的工具膛壹,可以兼容所有android版本,不需要root權(quán)限唉堪∧A可以直接在android手機(jī)屏幕上顯示當(dāng)前Activity中所有控件(不管是否隱藏)的邊界,內(nèi)外邊距大小唠亚,每一個(gè)控件大小链方,圖片大小,字體顏色灶搜,大小祟蚀,以及自定義信息。同時(shí)可以直接在屏幕上取色割卖,另外還提供了直尺(單位為px和dp)前酿,圓角尺(單位dp)工具,可以直接測(cè)量大小究珊。針對(duì)android開發(fā)者還提供了布局樹查看功能薪者,可以直接在手機(jī)屏幕查看當(dāng)前Activity中所有控件層次信息等。

可以通過滾動(dòng)層級(jí)滾輪來控制只顯示某一層級(jí)的信息剿涮,避免層級(jí)覆蓋等言津。

使用方式

android 4.0及以上用戶直接在application的onCreate中調(diào)用 com.wanjian.sak.LayoutManager.init(Application context) ,其他版本可以在activity的onResume中調(diào)用com.wanjian.sak.LayoutManager.init(Activity act)初始化攻人。

啟動(dòng)app后會(huì)在屏幕左上角看到一個(gè) android logo ,點(diǎn)擊即可進(jìn)入功能界面悬槽。

功能界面

image
image
img
img

邊框選項(xiàng)

開啟邊框選項(xiàng)后可以在手機(jī)屏幕看到所有控件的邊界怀吻,效果如下

image
image

內(nèi)外邊距選項(xiàng)

開啟后會(huì)在屏幕看到如下效果

image
image

半透明綠色代表內(nèi)邊距,PT表示上邊內(nèi)邊距(padding top)初婆,PL表示左內(nèi)邊距(padding left)蓬坡,PT表示右內(nèi)邊距(padding right),PB便是下內(nèi)邊距(padding bottom)磅叛。

半透明紅色代表外邊距屑咳, ML,MT弊琴,MR兆龙,MB分別表示左外邊距,上外邊距敲董,右外邊距紫皇,下外邊距。

所有邊距單位都是dp(pt)腋寨,android中會(huì)四舍五入聪铺,所有邊距都是整數(shù),所以可能跟設(shè)計(jì)圖中有不超過1dp(pt)的誤差萄窜。

寬高選項(xiàng)

開啟后會(huì)看到控件的寬高铃剔,單位是dp(pt)

image
image

圖片寬高

image
image

字體大小

image
image

字體顏色

16進(jìn)制,ARGB

image
image

強(qiáng)制圖片寬高

若開啟圖片寬高選項(xiàng)后看不到圖片大小脂倦,可以嘗試開啟強(qiáng)制圖片寬高選項(xiàng)番宁。 ps 該選項(xiàng)可能會(huì)導(dǎo)致滑動(dòng)卡頓

自定義信息

自定義信息用于android開發(fā)者調(diào)試使用,開發(fā)者可以為view設(shè)置setTag(com.wanjian.sak.CanvasManager.INFO_KEY,Object),設(shè)置后并開啟自定義信息選項(xiàng)后就可以在控件左上角看到自定義的文本信息了赖阻。

比如開發(fā)者想要在屏幕上看到TextView中有多少個(gè)文字,就可以這樣使用textview.setTag(com.wanjian.sak.CanvasManager.INFO_KEY,textview.getText().length()),這樣開啟自定義信息選項(xiàng)后就可以在TextView上看到文字長(zhǎng)度了踱蠢。

實(shí)時(shí)刷新

開啟實(shí)時(shí)刷新后當(dāng)手指在屏幕上移動(dòng)時(shí)就可以實(shí)時(shí)看到相關(guān)信息火欧,開啟實(shí)時(shí)刷新后可能會(huì)導(dǎo)致滑動(dòng)卡頓,也可能導(dǎo)致觸摸茎截,點(diǎn)擊等失效苇侵。

層級(jí)信息

可以通過滾動(dòng)滾輪來控制只顯示某一層次區(qū)間的信息,比如只想看ListView中子控件的大小企锌,就可以滾動(dòng)滾輪來控制只顯示ListView子控件大小榆浓,具體調(diào)整成多少需要多次嘗試。滾輪可以控件邊框撕攒,寬高陡鹃,布局樹等等烘浦。

直尺圓角尺,取色器

開啟后會(huì)在屏幕左上角顯示萍鲸,取色器剛開啟時(shí)只會(huì)在屏幕左上角看到一個(gè)黑框闷叉,拖動(dòng)到要取色的位置后抬起手機(jī)即可完成取色,取色器四個(gè)角可以獲取所指像素的顏色值脊阴。取色器可以獲取native頁面每個(gè)像素顏色握侧,也可以獲取webview中每一個(gè)像素的顏色。

image
image

布局樹

布局樹可以雙指縮放

image
image

擴(kuò)展

用戶可以方便的對(duì)SAK進(jìn)行擴(kuò)展嘿期,只需要繼承自AbsCanvas并重新onDraw(Canvas canvas, Paint paint, ViewGroup viewGroup, int startLayer, int endLayer),

或者繼承自CanvasLayerAdapter并重寫drawLayer(Canvas canvas, Paint paint, View view)

又或者繼承自CanvasLayerTxtAdapter

區(qū)別在于onDraw中沒對(duì)層級(jí)進(jìn)行處理品擎,drawLayer中的view已經(jīng)是層級(jí)區(qū)間的view,CanvasLayerTxtAdapter提供了
drawTxt(String txt, Canvas canvas, Paint paint, View view)方法备徐,可以直接調(diào)用drawTxt就可以把txt繪制到當(dāng)前view左上角孽查。

寫完自定義的Canvas后還需要在OperatorView布局中加入布局代碼,用于開啟自定義的Canvas坦喘,比如在布局中加入開關(guān)按鈕盲再,并為按鈕添加監(jiān)聽,開啟后調(diào)用
CanvasManager.getInstance(getContext()).addCanvas(new 你的Canvas())

比如我想自定義一個(gè)查看TextView字體大小的瓣铣,我可以先實(shí)現(xiàn)一個(gè)Canvas



public class TextSizeCanvas extends CanvasLayerTxtAdapter {

    @Override
    protected void drawLayer(Canvas canvas, Paint paint, View view) {
        if (view instanceof TextView) {
            float size = ((TextView) view).getTextSize();
            String txt = px2sp(view.getContext(), size) + "sp/ " + px2dp(view.getContext(), size) + "dp";
            drawTxt(txt, canvas, paint, view);
        }

    }
}


然后在OperatorView布局中加入開關(guān)答朋,當(dāng)開啟后執(zhí)行


CanvasManager.getInstance(getContext()).addCanvas(new TextSizeCanvas());

就可以了。

工程代碼:

https://github.com/android-notes/SwissArmyKnife

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末棠笑,一起剝皮案震驚了整個(gè)濱河市梦碗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蓖救,老刑警劉巖洪规,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異循捺,居然都是意外死亡斩例,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門从橘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來念赶,“玉大人,你說我怎么就攤上這事恰力〔婷眨” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵踩萎,是天一觀的道長(zhǎng)停局。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么董栽? 我笑而不...
    開封第一講書人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任码倦,我火速辦了婚禮,結(jié)果婚禮上裆泳,老公的妹妹穿的比我還像新娘叹洲。我一直安慰自己,他們只是感情好工禾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開白布运提。 她就那樣靜靜地躺著,像睡著了一般闻葵。 火紅的嫁衣襯著肌膚如雪民泵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評(píng)論 1 307
  • 那天槽畔,我揣著相機(jī)與錄音栈妆,去河邊找鬼。 笑死厢钧,一個(gè)胖子當(dāng)著我的面吹牛鳞尔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播早直,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼寥假,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了霞扬?” 一聲冷哼從身側(cè)響起糕韧,我...
    開封第一講書人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎喻圃,沒想到半個(gè)月后萤彩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斧拍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年雀扶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饮焦。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡怕吴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出县踢,到底是詐尸還是另有隱情,我是刑警寧澤伟件,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布硼啤,位于F島的核電站,受9級(jí)特大地震影響斧账,放射性物質(zhì)發(fā)生泄漏谴返。R本人自食惡果不足惜煞肾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗓袱。 院中可真熱鬧籍救,春花似錦、人聲如沸渠抹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽梧却。三九已至奇颠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間放航,已是汗流浹背烈拒。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工厂僧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留派桩,地道東北人秤掌。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓文兢,卻偏偏與公主長(zhǎng)得像尔破,于是被迫代替她去往敵國(guó)和親吕粗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沐序,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,190評(píng)論 25 707
  • 內(nèi)容抽屜菜單ListViewWebViewSwitchButton按鈕點(diǎn)贊按鈕進(jìn)度條TabLayout圖標(biāo)下拉刷新...
    皇小弟閱讀 46,769評(píng)論 22 665
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程秸脱,因...
    小菜c閱讀 6,432評(píng)論 0 17
  • 介紹自己負(fù)責(zé)的部分蛋叼,如何實(shí)現(xiàn)的焊傅。 框架的搭建排查問題以及結(jié)解決方式兼容性保證性能優(yōu)化上線之后模塊導(dǎo)致crash的比...
    黃海佳閱讀 13,188評(píng)論 6 350
  • 世間所有的相遇狐胎,都是久別重逢。 1.初識(shí) 2016.7.17號(hào)歌馍,那天天氣很好握巢,我?guī)е枫凡话驳男娜サ搅宋覍?shí)習(xí)的地點(diǎn)...
    貍貓啊閱讀 267評(píng)論 4 3