縱橫開發(fā)也多年了滋迈,開發(fā)過(guò)程中總會(huì)有一些疑難雜癥函喉,意想不到的bug問(wèn)題等,在此開帖記錄備用也方便他人
1. textview設(shè)置單行屬性singleline為true后在viewpager和recyclerview中橫向滑動(dòng)不順暢造成卡頓的感覺(jué)?
原因:滑動(dòng)不順暢卡頓通常都是存在事件沖突造成取董,這個(gè)也不列外:textview設(shè)置sigleline以后,textview在橫向上可以滑動(dòng)无宿,edittext常設(shè)置此屬性茵汰,對(duì)于單行大數(shù)據(jù)的輸入可以前后滑動(dòng)看數(shù)據(jù),但是將其放到viewpager等橫向滑動(dòng)的容器中孽鸡,textview的橫向滑動(dòng)和viewpager的橫向滑動(dòng)沖突了蹂午。所以才會(huì)出現(xiàn)上面的問(wèn)題”蚣睿可以看一下textview的源碼applySingleLine(boolean singleLine, boolean applyTransformation,boolean changeMaxLines)里面描述的很清楚豆胸。
解決方案:由于我的需求是文本不需要橫向滑動(dòng),如果顯示不全巷疼,直接后面點(diǎn)點(diǎn)點(diǎn)即可晚胡,所以替換一種方案,利用lines替代sigleline既可以實(shí)現(xiàn)單行皮迟,也可以重寫textview的setsigleline()方法搬泥,不啟動(dòng)橫向滑動(dòng)即可
2. 地圖應(yīng)用開發(fā)過(guò)程中poi的mark和彈窗infowindow需要注意的點(diǎn):
在高德地圖的使用中添加infowindow顯示坐標(biāo)點(diǎn)的詳細(xì)信息在很多應(yīng)用中使用,當(dāng)前高德地圖(3一上版本)將infowindow和marker封裝在一塊(可以說(shuō)很屎)在使用過(guò)程中有一些需要注意的:
- 在高德地圖中設(shè)置infowindow很簡(jiǎn)單伏尼,直接設(shè)置一個(gè)infowindowadapter就好參數(shù)是一個(gè)監(jiān)聽(tīng)忿檩,在監(jiān)聽(tīng)方法中返回一個(gè)view即可,再返回view的時(shí)候注意爆阶,高德已經(jīng)封裝了一個(gè)背景(奇丑無(wú)比)燥透,如果想重寫了需要在最外層布局中設(shè)置背景沙咏。
- 添加maker的時(shí)候必須設(shè)置marker的title,不然是不會(huì)彈出infowindow的班套。
- 點(diǎn)擊marker的時(shí)候無(wú)需其他操作可以自己彈出infowindow肢藐,并自動(dòng)移動(dòng)到地圖的中間,看似很牛掰吱韭,可以在移動(dòng)的過(guò)程中我還需要調(diào)整地圖的層級(jí)的奧吆豹,避免大量的poi點(diǎn)聚在一起不容易操作,所以這個(gè)東西對(duì)于大批量poi點(diǎn)來(lái)說(shuō)意義不大理盆。
- 有3可知痘煤,為了在點(diǎn)擊poi點(diǎn)移動(dòng)到中間并且擴(kuò)大地圖的層級(jí)同時(shí)實(shí)現(xiàn)那就不能讓其直接顯示了,設(shè)置amap的onmarkerclicklistener()猿规,特別注意此時(shí)要返回true衷快,不然還是會(huì)傳遞事件自己顯示。通過(guò)地圖api設(shè)置poi到中間并且響應(yīng)的縮放層級(jí)即可姨俩,然后調(diào)用marker.showinfowindow()即可蘸拔。
3. httpclient接口訪問(wèn)post讀取數(shù)據(jù)不完整:
httpclient訪問(wèn)php服務(wù)器有可能獲取到數(shù)據(jù)不全(即返回的json格式不完整),通過(guò)網(wǎng)絡(luò)搜索包括項(xiàng)目解決將可能原因匯總?cè)缦拢ㄖ皇怯龅降暮途W(wǎng)絡(luò)上說(shuō)明的环葵,歡迎大家補(bǔ)充):
- php服務(wù)器有緩存调窍,接口從緩存區(qū)讀取數(shù)據(jù),緩存區(qū)滿了积担,遇到接口的數(shù)據(jù)量太大陨晶,只能將部分的數(shù)據(jù)存入緩存區(qū),此時(shí)獲取到的數(shù)據(jù)不完整帝璧。項(xiàng)目出現(xiàn)的是這個(gè)先誉。此時(shí)想不通的是瀏覽器和ios偏好一些,可以獲取到更多的數(shù)據(jù)的烁,對(duì)于非常大的接口數(shù)據(jù)褐耳,瀏覽器也沒(méi)轍。
- php接口對(duì)數(shù)據(jù)進(jìn)行了gzip壓縮渴庆,網(wǎng)上看到的铃芦。
- 當(dāng)前手機(jī)連接的網(wǎng)絡(luò)有問(wèn)題,路由器等對(duì)數(shù)據(jù)傳輸有限制襟雷,數(shù)據(jù)量太大刃滓,超過(guò)了此限制,網(wǎng)上了解到的耸弄,對(duì)于有些公司限制網(wǎng)絡(luò)訪問(wèn)速度或者數(shù)據(jù)量有可能出現(xiàn)
- httpclinet 下載圖片不全可以參照這個(gè)博客:點(diǎn)擊打開鏈接
4. textview動(dòng)態(tài)設(shè)置字號(hào)時(shí)可以直接指定字號(hào)單位:
setTextSize(TypedValue.COMPLEX_UNIT_PX,22); //22像素
setTextSize(TypedValue.COMPLEX_UNIT_SP,22); //22SP
setTextSize(TypedValue.COMPLEX_UNIT_DIP,22);//22DIP
5. 點(diǎn)擊popwindow外部不能關(guān)閉bug解決:
popupWindow.setBackgroundDrawable(new ColorDrawable(0));//popwindow 不設(shè)置背景圖片點(diǎn)擊外部不會(huì)消失
6. IntentService出現(xiàn)沒(méi)有空構(gòu)造方法異常:
intentservice是平時(shí)Android開發(fā)很常用的一個(gè)異步處理邏輯咧虎,正常繼承intentservice需要構(gòu)造方法,系統(tǒng)提示默認(rèn)生成帶有參數(shù)name的構(gòu)造方法计呈,在使用的時(shí)候按照正常使用砰诵,就會(huì)出現(xiàn)上面沒(méi)有單參數(shù)構(gòu)造方法的異常
解決: 通常intentservices處理單個(gè)邏輯征唬,所以在繼承的時(shí)候直接在子類內(nèi)部添加無(wú)參數(shù)構(gòu)造方法,在方法內(nèi)部設(shè)置好對(duì)應(yīng)的name即可茁彭。
7.如何實(shí)現(xiàn)動(dòng)態(tài)切換app切換主屏幕圖標(biāo)
參考文章:動(dòng)態(tài)切換app主屏幕圖標(biāo)
8. 解決Android webview “l(fā)ocation.replace” 不起作用問(wèn)題
Android webview “l(fā)ocation.replace” 不起作用問(wèn)題
9. 解讀recyclerview的幾個(gè)獲取高度的api
recyclerview的高度獲茸芎:整體高度+屏幕高度+滑動(dòng)高度
- 解決頁(yè)面被回收造成的dialog關(guān)閉異常。
DialogFragment 崩潰異常 IllegalStateException:Can not perform this action after onSaveInstanceState