控件開發(fā)需要考慮的問題:
磨刀不誤砍柴工:
弄清楚清楚onMeasure、onLayout坠宴、onDraw洋魂。
還有dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()喜鼓。
搞掂上面的這些東西副砍,后續(xù)的工作以及查bug都會事半功倍。
一庄岖、基本界面以及功能:
1豁翎、基本功能這個不用說,開發(fā)該控件的目的隅忿,要么View心剥,要么ViewGroup启搂。
2、還要考慮從右到左的布局刘陶,畢竟希伯來語胳赌,阿拉伯語等語言設(shè)計很蛋痛。
3匙隔、考慮盲人模式Accessibility疑苫。
4、兼容多國語言纷责,給部分外語坑過捍掺,翻譯過來的文本長得驚人。
5再膳、系統(tǒng)整體縮放導(dǎo)致的問題挺勿,超大字體,超小字體喂柒。
6不瓶、控件動畫,考慮從右到左(有點欺人太甚了)灾杰,考慮修改系統(tǒng)動畫時間蚊丐,動畫時間為0的極端情況。
7艳吠、保證在google原生的基礎(chǔ)上正常運行麦备。
8、自定義View的時候昭娩,以畫布的大小為基準(zhǔn)凛篙,里面所有元素的大小等數(shù)值參數(shù),全部通過基準(zhǔn)計算出來栏渺,需要適配各種各樣分辨率的時候呛梆,你會給當(dāng)時的自己點個贊。
9迈嘹、多分辨率適配削彬,drawable,layout秀仲,values等融痛,看情況解決,多建幾個不同分辨率的文件夾存放神僵。
二雁刷、性能問題:
1、界面布局盡量簡潔保礼,層級越少越好沛励。
2责语、處理好多線程,Handler目派,Thread等這些如果用得好它們都是溫順的小貓坤候,否則就準(zhǔn)備接受被怪物支配的恐懼吧。
3企蹭、緩存數(shù)據(jù)白筹,SharePreference,LRUCache等等等谅摄,讀取文件徒河,讀取資源,獲取設(shè)備density等能一次性完事的都在初始化的時候搞掂送漠。使用反射的時候切記要緩存啊喂顽照,免得卡頓的問題拋過來一頭霧水。
4闽寡、延遲加載代兵,有時候碰到空指針的問題,你已經(jīng)像柯南那樣去推理演繹了下隧,然而并沒有什么卵用奢人。這時候postDelay一下谓媒,說不定就發(fā)生神跡了淆院。
5、提前加載句惯,耗時的內(nèi)容加載土辩,可以提前加載好,能產(chǎn)生一個加速的錯覺抢野。例如OpenGL加載模型的時候拷淘。
6、不要分配不必要的內(nèi)存指孤,就算是自助餐启涯,也不是拿的越多越好,吃不完要賠的恃轩。
7结洼、去掉不必要的操作,這些主要是在細(xì)節(jié)上叉跛,例如已經(jīng)在XML上設(shè)置了字體大小松忍,代碼里面又去設(shè)置一遍,多余的操作筷厘。
8鸣峭、謹(jǐn)慎使用static宏所,不要隨便給View設(shè)置成static,view持有Activity的context摊溶,然后就內(nèi)存泄漏了爬骤。
9、Bitmap的使用莫换,內(nèi)存方面盖腕,回收等。
10浓镜、做動畫的時候ViewTreeObserver拣技,ChoreoGrapher有時候是個好東西脉幢。
11、圖片資源的體積大小,可以用tinypng進行壓縮荆责。
Cherry,HHKB等不一定就能提高敲代碼的效率和質(zhì)量漠秋,因人而異懈息。但,其音效真的很不錯咨跌。