安卓編程技巧總結(jié)(1) 資源與UI布局處理


資源

RES資源里最應該優(yōu)化的就是圖片了,可以減少安裝包大小罐旗,可以降低app內(nèi)存消耗等士八,一般的優(yōu)化如下:

  1. png壓縮
如果是png芒珠,且圖片過大牺堰,建議使用Tinypng進行壓縮拄轻。
TinyPng使用智能的有損壓縮算法,通過減少圖片的顏色伟葫,從而在幾乎不影響視覺的情況下恨搓,顯著的減少圖片的體積。
例如:一個2M的圖片可以壓縮到200K扒俯,甚至更小奶卓,且不影響視覺效果。

具體可參考:
http://blog.csdn.net/fuchaosz/article/details/51829662

  1. 不同drawable目錄適配方案1
為了支持多種屏幕尺寸和密度撼玄,Android 為多種屏幕提供不同的資源目錄進行適配夺姑。
為不同屏幕密度提供不同的位圖可繪制對象,可用于密度特定資源的配置限定符掌猛,
包括 ldpi(低)盏浙、mdpi(中)、 hdpi(高)荔茬、xhdpi(超高)废膘、xxhdpi (超
超高)和 xxxhdpi(超超超高)。
根據(jù)當前的設(shè)備屏幕尺寸和密度慕蔚,將會尋找最匹配的資源丐黄,如果將高分辨率圖片放
入低密度目錄,將會造成低端機加載過大圖片資源孔飒,又可能造成 OOM灌闺,同時也是資
源浪費,沒有必要在低端機使用大圖坏瞄。

3.不同drawable目錄適配方案2

如果資源圖片體積不大桂对,目標手機最低版本設(shè)置較高,如大于4.4等鸠匀,也可以選擇只放置一種drawable圖片蕉斜,如xxxhdpi,
這樣可以帶來的好處就是:減少安裝包大小缀棍,同時美術(shù)人員工作也輕松一些宅此;
帶來的問題:低端手機在對應的drawable目錄下找不到對應的圖片,會使用其他drawable中的圖片爬范,
加載到內(nèi)存并壓縮使用诽凌,也就是在低端手機上增加了額外的內(nèi)存開銷,要小心OOM坦敌。

4.大圖處理

對于一些特大的圖侣诵,如果不是啟動APP必須使用的圖片痢法,也可以放在服務器端,
根據(jù)需要下載并緩存使用杜顺,可減少壓縮包大小财搁。
  1. 顏色
與圖片相比,我們更應該考慮使用純色躬络、漸變色尖奔、shape等來實現(xiàn)想要的效果。

布局

1.布局嵌套

布局中不得不使用 ViewGroup 多重嵌套時穷当,不要使用 LinearLayout 嵌套提茁,
改用 RelativeLayout,通過其相對屬性進行合理控制馁菜,可以有效降低嵌套數(shù)茴扁。

Android 應用頁面上任何一個 View 都需要經(jīng)過 measure、layout汪疮、draw 三個步驟
才能被正確的渲染峭火。
從 xml layout 的頂部節(jié)點開始進行 measure,每個子節(jié)點都需
要向自己的父節(jié)點提供自己的尺寸來決定展示的位置智嚷,在此過程中可能還會重新
measure(由此可能導致 measure 的時間消耗為原來的 2-3 倍)卖丸。
節(jié)點所處位置越深,套嵌帶來的 measure 越多盏道,計算就會越費時稍浆。
這就是為什么扁平的 View 結(jié)構(gòu)會性能更好。
理想情況下猜嘱,總共的 measure粹湃,layout,draw 時間應該被很好的控制在 16ms以內(nèi)泉坐,以保證滑動屏幕時 UI 的流暢。

要找到那些多余的 View(增加渲染延遲的 view)裳仆,可以用 Android Studio Monitor
里的 Hierarachy Viewer 工具腕让,可視化的查看所有的 view。

2.過渡繪制

禁止在設(shè)計布局時多次設(shè)置子 view 和父 view 中為同樣的背景造成頁面過
度繪制歧斟,推薦將不需要顯示的布局進行及時隱藏纯丸。

例如:父View加載背景色,子View與其色一致静袖,不需要再為子View設(shè)置背景色觉鼻;
  1. 靈活使用
靈活使用布局,推薦 Merge队橙、ViewStub 來優(yōu)化布局坠陈,盡可能多的減少 UI
布局層級萨惑,推薦使用 FrameLayout,LinearLayout仇矾、RelativeLayout 次之
  1. 防止父View頻繁刷新
在需要時刻刷新某一區(qū)域的組件時庸蔼,建議通過以下方式避免引發(fā)全局 layout
刷新:
1)  設(shè)置固定的 view 大小的高寬,如倒計時組件等贮匕;
2)  調(diào)用 view 的 layout 方式修改位置姐仅,如彈幕組件等;
3)  通過修改 canvas 位置并且調(diào)用 invalidate(int l, int t, int r, int b)等方式限定刷新
區(qū)域刻盐;
4)  通過設(shè)置一個是否允許 requestLayout 的變量掏膏,然后重寫控件的 requestlayout、
onSizeChanged 方法 敦锌, 判 斷 控 件 的大小 沒 有 改 變 的 情況下 馒疹, 當 進 入
requestLayout 的時候,直接返回而不調(diào)用 super 的 requestLayout 方法供屉。

請參考自定義控件相關(guān)的文章行冰;
  1. ScrollView 嵌套禁忌
不能使用 ScrollView 包裹 ListView/GridView/ExpandableListVIew;因為這
樣會把 ListView 的所有 Item 都加載到內(nèi)存中,要消耗巨大的內(nèi)存和 cpu 去繪制圖
面伶丐。
說明:
ScrollView 中嵌套 List 或 RecyclerView 的做法官方明確禁止悼做。除了開發(fā)過程中遇到
的各種視覺和交互問題,這種做法對性能也有較大損耗哗魂。ListView 等 UI 組件自身有
垂直滾動功能肛走,也沒有必要在嵌套一層 ScrollView。目前為了較好的 UI 體驗录别,更貼
近 Material Design 的設(shè)計朽色,推薦使用 NestedScrollView。
  1. 編碼格式
源文件統(tǒng)一采用 UTF-8 的形式進行編碼组题。
例如:
<?xml version="1.0" encoding="utf-8"?>

第一篇: 安卓編程技巧總結(jié)(1) 資源與UI布局處理

http://www.reibang.com/p/ff97b15d5c9d

第二篇: 安卓編程技巧總結(jié)(2) 基礎(chǔ)組件開發(fā)

http://www.reibang.com/p/b05752377887

第三篇:安卓編程技巧總結(jié)(3) 進程與線程處理

http://www.reibang.com/p/7d05c8a368bd

第四篇:安卓編程技巧總結(jié)(4) 數(shù)據(jù)文件處理

http://www.reibang.com/p/0515df3b697d

第五篇:安卓編程技巧總結(jié)(5) 圖片處理

http://www.reibang.com/p/76690b2ba310

第六篇:安卓編程技巧總結(jié)(6) APP安全分析

http://www.reibang.com/p/4347ff392122

第七篇:安卓編程技巧總結(jié)(7) 性能檢測代碼分析

http://www.reibang.com/p/687f3c641408

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末葫男,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子崔列,更是在濱河造成了極大的恐慌梢褐,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赵讯,死亡現(xiàn)場離奇詭異盈咳,居然都是意外死亡,警方通過查閱死者的電腦和手機边翼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門鱼响,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人组底,你說我怎么就攤上這事丈积】鸷В” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵桶癣,是天一觀的道長拥褂。 經(jīng)常有香客問我,道長牙寞,這世上最難降的妖魔是什么饺鹃? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮间雀,結(jié)果婚禮上悔详,老公的妹妹穿的比我還像新娘。我一直安慰自己惹挟,他們只是感情好茄螃,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著连锯,像睡著了一般归苍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上运怖,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天拼弃,我揣著相機與錄音,去河邊找鬼摇展。 笑死吻氧,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的咏连。 我是一名探鬼主播盯孙,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼祟滴!你這毒婦竟也來了振惰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤垄懂,失蹤者是張志新(化名)和其女友劉穎骑晶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體埠偿,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年榜晦,在試婚紗的時候發(fā)現(xiàn)自己被綠了冠蒋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡乾胶,死狀恐怖抖剿,靈堂內(nèi)的尸體忽然破棺而出朽寞,到底是詐尸還是另有隱情,我是刑警寧澤斩郎,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布脑融,位于F島的核電站,受9級特大地震影響缩宜,放射性物質(zhì)發(fā)生泄漏肘迎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一锻煌、第九天 我趴在偏房一處隱蔽的房頂上張望妓布。 院中可真熱鬧,春花似錦宋梧、人聲如沸匣沼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽释涛。三九已至,卻和暖如春倦沧,著一層夾襖步出監(jiān)牢的瞬間唇撬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工刀脏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留局荚,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓愈污,卻偏偏與公主長得像耀态,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子暂雹,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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