安卓杭攻、常見錯誤祟敛、規(guī)整

1、當(dāng)當(dāng)前方法里面要跳出去寫另外一個方法的時候兆解,如果另外那個方法里面如果需要大環(huán)境馆铁,那么必須把另外那個方法放在當(dāng)前方法外面,去獲取大環(huán)境锅睛。

2埠巨、注意历谍,在進(jìn)行下載操作時,如果是下載到SD卡中辣垒,別忘了加權(quán)限望侈。

3、注意勋桶,用隱式意圖跳轉(zhuǎn)時脱衙、如果是要加category屬性,那么方法不是set~,而是add~

4例驹、注意岂丘,一般listview和gridview的適配器不要抽取到一個類中單獨書寫,不然可能出現(xiàn)開啟不了活動的情況眠饮,原因是奥帘,加載條目的事情,必須在系統(tǒng)開啟活動之前完成仪召,單獨寫一個類的時候寨蹋,運用打氣筒時,需要傳一個上下文扔茅,因為此時已旧,活動還沒有開啟,所以不能用this召娜,直接new也會報錯运褪,new其他活動的實例可能能成功但是造成了不必要的麻煩。

5玖瘸、注意秸讹,在使用自定義控件,填充view的時候雅倒,注意不要使用重載方法addView(),而是直接用this.addView()璃诀,直接添加,要不然會出錯蔑匣。

6劣欢、注意,如果要使自定義控件有點擊事件裁良,不僅僅要重寫一個isClickable()方法凿将,并返回true,而且在只用XML(布局文件)中使用自定義控件的時候還要設(shè)置android:clickable="true",要不然不具備點擊事件价脾,也就導(dǎo)致了添加了選擇器卻點擊后不變樣子的情況牧抵。

7、注意彼棍,在設(shè)置自定義控件的自定義屬性的時候(attrs.xml)灭忠,屬性的返回值類型一定要寫成小寫膳算,要不然系統(tǒng)不識別,例如"String"一定要寫成"string"弛作。

8涕蜂、用彈窗對象Buelder對象的create()方法可以得到一個Dialog對象用來執(zhí)行dismiss(),以達(dá)到關(guān)閉窗體的作用映琳,但是机隙,每次執(zhí)行create(),都是重新NEW了一個AlertDialog對象萨西,所以有鹿,如果在局部使用的時候,最好在大環(huán)境中定義出來(全局)谎脯,這樣就不會出錯了葱跋。

9、當(dāng)為一個布局設(shè)置背景的時候源梭,不要單獨使用ImageView控件來設(shè)置src娱俺,而是直接在那個布局的屬性中添加background,要不然可能出現(xiàn)背景左右沒有填滿屏幕的情況废麻。

10荠卷、抽取樣式也有一定的格式,

<style name="【樣式名稱】"><item name="【屬性】">【屬性值】></item></style>

11烛愧、在狀態(tài)選擇器中油宜,使用圖片時,如果需要一張純色的圖片怜姿,不可以直接設(shè)置顏色值慎冤,這個時候可以用到color.xml這種東西,在res -> values -> colors.xml 中定義社牲,作用就是將一個純色轉(zhuǎn)換成一個純色的圖片資源粪薛。

12悴了、在廣播接收者中搏恤,如果OnReceive里面的方法執(zhí)行的時間超過10秒的話,就會不繼續(xù)執(zhí)行湃交,如果必須要執(zhí)行耗時操作的話熟空,一般放在服務(wù)里面進(jìn)行執(zhí)行。

13搞莺、通過RadioGroup的getCheckedRadioButtonId()方法得到的返回值(int)是RadioButton的id值息罗。

14、設(shè)置當(dāng)listview沒有數(shù)據(jù)顯示的時候,應(yīng)該顯示什么樣的view對象mListView.setEmptyView(mEmpty);

15才沧、在進(jìn)行電話攔截的時候迈喉,用的是不是廣播接收者绍刮,而是,電話的管理者

16挨摸、在ListView中如果需要分割線孩革,那么就是用divider屬性,就可以設(shè)置得运,可以用一張圖片在做膝蜈,也可以用一個顏色來做。但是需要注意的是熔掺,當(dāng)設(shè)置的是顏色的時候饱搏,必須設(shè)置顏色的高度(通過dividerHeight這個屬性來設(shè)置,單位為dp)置逻,因為顏色是沒有高度的推沸,用圖片充當(dāng)?shù)臅r候就不用設(shè)置高度,以為圖片本身就有一個高度券坞。

17坤学、可以通過一個控件的getWindow()方法得到自己所在的窗口的對象,通過這個對象可以得到自己在這個窗口中的屬性對象(getAttribute()),得到了屬性的對象(params)后报慕,就可以通過屬性的對象設(shè)置一些新的屬性給自己深浮,然后最后要注意的是,設(shè)置完成以后必須要再將這個屬性對象設(shè)置給我們的窗口對象(setAttribute(params))眠冈。

18飞苇、在自定義一個Dialog(彈窗)的時候,我們可以自定義它的樣式蜗顽,自定義它的視圖布卡,我們繼承Dialog類以后,里面有一個非常特殊的方法雇盖,onCreate()重載方法忿等,里面有一個setContentview的方法,這里這個方法和Activity里面的那個崔挖。贸街。。狸相。薛匪。非常相似了,就是為自己加載一個布局樣式脓鹃,這樣我們就在我們的彈窗中自定義出自己想要的風(fēng)格逸尖,需要注意的是當(dāng)我們使用自定義的Dialog主題樣式的時候,我們在兩個參數(shù)的構(gòu)造函數(shù)里面設(shè)置主題,當(dāng)設(shè)置了自己所需要的主題時娇跟,如果不引用系統(tǒng)自帶的主題的話岩齿,會導(dǎo)致我們的自定義Dialog全屏,這并不是我們想看到的苞俘,所以這里我們必須通過在自定義的屬性的標(biāo)簽里面用parent這個關(guān)鍵字(parent:"[系統(tǒng)的主題]")纯衍,來引用我們系統(tǒng)的Dialog主題,相當(dāng)于我們只是覆蓋了部分的主題苗胀。襟诸,而一些關(guān)鍵的主題風(fēng)格還是用的系統(tǒng)的樣式。

19基协、在安卓中有兩個定義樣式的文件一個是style文件歌亲,一個是theme文件,他們有什么區(qū)別呢澜驮?style文件主要是用來設(shè)置控件的樣式的陷揪,而theme主要是用來設(shè)置空間的主題的。大體方向上是屬于一類東西杂穷,但是在細(xì)節(jié)上還是有區(qū)別的悍缠。

20、當(dāng)我們 拷貝了一些系統(tǒng)的主題樣式來使用的時候耐量,一些屬性的開頭沒有加命名控件(Android:)飞蚓,如果我們不加的話,可能會報錯廊蜒,所以拷貝系統(tǒng)的風(fēng)格樣式來用的時候趴拧,我們一般都要在沒有加命名空間的位置加上(Android:)。

21山叮、當(dāng)listView中有固定的條目類型時著榴,不需要復(fù)用,那么就需要將服用的代碼提取到需要服用的條目加載的里面屁倔,要不然會出現(xiàn)空指針異常脑又。

22、怎么在谷歌提供的API demos里面找到我們想要的動畫效果并抄襲復(fù)用锐借?先看你需要的那個效果的界面上有什么關(guān)鍵字问麸,然后可以在.XML文件中搜索那個關(guān)鍵字找到string.xml文件,然后看哪個布局文件里面引用了這個關(guān)鍵字瞎饲,就好到了界面的布局口叙,找到布局以后,就在.JAVA文件中搜索嗅战,看哪個文件加載了這個布局,然后分析,那個效果是哪個控件觸發(fā)的驮捍,就去找那個控件的監(jiān)聽事件疟呐,然后代碼改一改,缺插補(bǔ)器的話找一找东且,然后你懂得启具!

23、在ListView中如果存在CheckBox的話珊泳,如果用盒子(Holder)鲁冯,對View進(jìn)行復(fù)用的話,其選中狀態(tài)也會跟著復(fù)用色查,解決的辦法就是薯演,讓它不可點擊,不可存在焦點秧了,把每個條目是否選中的信息存在BEAN中跨扮,然后調(diào)用NotifydataSetChange方法(調(diào)用這個方法會回調(diào)適配器中的GetCount和GetView這兩個方法),然后在適配器中用代碼手動的設(shè)置相應(yīng)的條目是否選中验毡。

24衡创、當(dāng)一個控件遮擋了另外的View的時候,如果后面的View有點擊事件晶通,那么璃氢,我們點擊我們上方控件

的時候,就會影響到 下面的View的點擊事件狮辽,所以拔莱,一般我們都要屏蔽了下方View的點擊事件,做法就

是在我們的上方控件里面設(shè)置Clickable屬性為真隘竭。

25塘秦、遠(yuǎn)程布局無法findViewById(),用里面提供的方法來設(shè)置里面的控件屬性。

26动看、不僅僅字符串可以進(jìn)行國際化尊剔,圖片也可以進(jìn)行國際化。

27菱皆、當(dāng)一個模塊需要另外一個模塊提供數(shù)據(jù)的時候须误,為了降低耦合我們采取回調(diào)的方式進(jìn)行數(shù)據(jù)傳遞。

在需要數(shù)據(jù)的模塊內(nèi)實現(xiàn)一個接口并實現(xiàn)方法仇轻,然后把接口對象傳遞給提供數(shù)據(jù)的模塊京痢,提供數(shù)據(jù)的模

塊只需要將數(shù)據(jù)放在接口的方法參數(shù)中,就相當(dāng)于調(diào)用了實現(xiàn)方法篷店,實現(xiàn)了相應(yīng)的需求祭椰。

28臭家、異步加載不能取消,只能設(shè)置標(biāo)示(cancle(true))方淤,在各個方法中獲取標(biāo)示來判斷然后屏蔽以

前執(zhí)行的代碼钉赁,來讓異步不執(zhí)行代碼了,只是一個偽取消操作携茂。

29你踩、安卓中,不允許單個的應(yīng)用程序清理其他程序的緩存讳苦,一鍵清理其實是使用了安卓的一個BUG來實現(xiàn)

的带膜。用包管理者里面的freestorageAndnotify方法來清除數(shù)據(jù),利用的是安卓中如果請求的空間大小大

于總大小的話鸳谜,就會清空已用空間膝藕,這個方法需要利用反射來做,并且需要加上清除APP緩存的權(quán)限卿堂。

30束莫、所有的aidl操作都是在子線程中進(jìn)行的,因為aidl操作一般都是耗時操作草描。

31览绿、包管理者,可以通過一個包名穗慕,得到打開這個應(yīng)用程序的意圖對象饿敲。

32、在安卓打包混淆的時候逛绵,自定義控件混淆不了怀各,四大組件也混淆不了。因為安卓系統(tǒng)在找的時候术浪,混淆了就找不到瓢对。

33、與ROOT相關(guān)的一個可執(zhí)行文件在system目錄下的xbin文件夾里面胰苏,叫做su硕蛹。只要放在這個指定目錄獲取了ROOT權(quán)限,但是需要注意的是硕并,現(xiàn)在很多的定制系統(tǒng)有的屏蔽或者改變了這個可執(zhí)行文件的位置法焰。這樣就可以去通過執(zhí)行這個文件,判斷手機(jī)是否ROOT了倔毙,執(zhí)行失敗說明沒有ROOT埃仪。

34、ListView的條目中如果有可以執(zhí)行點擊事件的控件的話陕赃,會搶奪條目的點擊事件卵蛉,如果需要分開處理點擊事件颁股,必須設(shè)置一下,條目的容器屬性(后裔事件)毙玻,descendantfocusability屬性豌蟋,選擇不同的處理方式廊散。

35桑滩、ListView默認(rèn)的上下邊緣有一個衰弱的顏色效果,如果要取消的話允睹,可以設(shè)置其fadingedgelength屬性运准,英文翻譯(衰弱邊緣長度)。與這個屬性類似的還有一個條目之間的分割線的長度dividelength屬性(設(shè)置分割線的高度)缭受。

36胁澳、自定義控件時,如果是在主線程中用invalidate米者,在子線程中用postinvalidata韭畸,這兩個方法可以回調(diào)onDraw方法或者ComputeScroll方法,區(qū)別在于蔓搞,如果繼承的是View就調(diào)用前者胰丁,如果是繼承的是ViewGroup就調(diào)用后者。

37喂分、在使用ViewPager(V4包)時锦庸,繼承適配器時,要手動添加兩個必要的實現(xiàn)方法蒲祈,注意甘萧!是手動添加,我至今不明白為什么這樣的必須實現(xiàn)的兩個方法,為什么不定義為抽象方法靡砌,這是我對谷歌工程師很不解的一點期贫,不過記住就好,一個是instantiateItem怪得,一個是destroyItem方法。并且在instantiateItem中钝鸽,得到一個子View的引用后并不能像ListView的適配器一樣直接返回汇恤,而是要手動的用addView方法添加,并且拔恰,這里這個方法的返回值變成了緩存View的對象(在ViewPager里最多有三緩存對象因谎,左右最多各一個,當(dāng)滑動時颜懊,如果左右超出了相鄰位置后财岔,會從緩存中刪掉那個條目)风皿。

38、ListView的條目中存在可以點擊的控件時匠璧,會搶奪條目本身的點擊事件桐款,如果不希望這樣,需要在條目的布局的根布局中添加adescendantFocusability屬性夷恍,屬性值設(shè)置為blockDescendants魔眨,這個屬性的名字叫做后裔事件處理,其實就是設(shè)置怎么處理孩子與自己沖突的事件酿雪。

39遏暴、當(dāng)一個控件還沒有完全布局到界面上時,不能調(diào)用getWidth這樣的方法得到控件的寬高指黎,因為這個方法只有當(dāng)活動的onCreate方法執(zhí)行完以后朋凉,才有值,在還沒有使用某個布局或者控件的時候醋安,如果想的到其寬高杂彭,只能通過測量后,得到一個測量的寬度吓揪。

40亲怠、在設(shè)置一個View隱藏時,一種是View.GONE磺芭,一種是View.INVISIBLE赁炎,兩種方法都可以隱藏,但是又有小小的區(qū)別钾腺,前者隱藏后徙垫,連布局本身都沒有了,可能會影響到父布局放棒,比如父布局的高設(shè)置為包裹內(nèi)容姻报,那么就撐不起來了!后者隱藏后布局本身還在间螟,還能為父布局撐起來吴旋。

41、在繼承ViewGroup來做自定義控件時厢破,為子孩子設(shè)置布局時荣瑟,設(shè)置的是子孩子的左上角,右下角的坐標(biāo)摩泪。這一點和其他地方有一些區(qū)別笆焰,需要特殊記憶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末见坑,一起剝皮案震驚了整個濱河市嚷掠,隨后出現(xiàn)的幾起案子捏检,更是在濱河造成了極大的恐慌,老刑警劉巖不皆,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贯城,死亡現(xiàn)場離奇詭異,居然都是意外死亡霹娄,警方通過查閱死者的電腦和手機(jī)能犯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來项棠,“玉大人悲雳,你說我怎么就攤上這事挎峦∠阕罚” “怎么了?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵坦胶,是天一觀的道長透典。 經(jīng)常有香客問我,道長顿苇,這世上最難降的妖魔是什么峭咒? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮纪岁,結(jié)果婚禮上凑队,老公的妹妹穿的比我還像新娘。我一直安慰自己幔翰,他們只是感情好漩氨,可當(dāng)我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著遗增,像睡著了一般叫惊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上做修,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天霍狰,我揣著相機(jī)與錄音,去河邊找鬼饰及。 笑死蔗坯,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的燎含。 我是一名探鬼主播宾濒,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼瘫镇!你這毒婦竟也來了鼎兽?” 一聲冷哼從身側(cè)響起答姥,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谚咬,沒想到半個月后鹦付,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡择卦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年敲长,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秉继。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡祈噪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出尚辑,到底是詐尸還是另有隱情辑鲤,我是刑警寧澤,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布杠茬,位于F島的核電站月褥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瓢喉。R本人自食惡果不足惜宁赤,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栓票。 院中可真熱鬧决左,春花似錦、人聲如沸走贪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厉斟。三九已至挚躯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間擦秽,已是汗流浹背码荔。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留感挥,地道東北人缩搅。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像触幼,于是被迫代替她去往敵國和親硼瓣。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,580評論 2 349

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,807評論 25 707
  • ¥開啟¥ 【iAPP實現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,367評論 0 17
  • 看到這個題目,就好像上小學(xué)時老師的命題作文瘟栖。那個時候的夢想大都是家長和老師灌輸?shù)睦砟羁妫鐣鲜裁葱袠I(yè)吃香就選擇什...
    善純閱讀 215評論 0 0
  • 時間飛快,轉(zhuǎn)眼就到了而立之年半哟。小時候和周圍的思想心靈都差不多酬滤,都是那么的單純,而長大后各個人的性格寓涨,三觀差別就比較...
    井中月他爹閱讀 1,345評論 1 0
  • 所以盯串,還是不知想要什么. 破碎的鏡片,印出傷痕容顏. 我戒良,直視無數(shù)雙眼. 卻還是沒能找出哪一雙体捏,是自己. 逐漸模糊...
    風(fēng)吹過的林閱讀 182評論 0 0