最近一直忙于各種事情,今晚有空所以將最近遇到過的一些問題記錄一下,一來是怕以后遇到可以再次翻看,二來也是給大家一起分享分享自己的心得.
1:華為手機(jī)選擇相冊后返回時候path值為null
出錯情況:
Intent intentFromGallery = new Intent();
intentFromGallery.setType("image/*");
intentFromGallery.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intentFromGallery, 102);
這里時候返回的cursor中在華為手機(jī)中是沒有path的
改正后:
IntentintentFromGallery =newIntent();
intentFromGallery.setType("image/*");
intentFromGallery.setAction(Intent.ACTION_PICK);
intentFromGallery.setData(android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
2:小米4Cpopuwindow兼容性問題
一般通常情況我們都是讓pupupwindow基于某一個控件的下方顯示,所以都會比方說我們在讓p居于title下方顯示,用到showAsDropDown(title),這樣的話一般手機(jī)都是會支持的,但是在小米4C上設(shè)置這樣的話,popupwindow會覆蓋在title上面,直接顯示在手機(jī)頂部,為了解決這個問題,我們需要的這樣做:
(1),計(jì)算出title的高度,然后在popupwindow中設(shè)置marginTop="title的高度"
(2),在自己的主視圖xml中建一個0dp的view
(3),在showAsDropDown.showAsDropDown的時候直接把錨點(diǎn)賦值給0dp的view.
3:自定義camera中手勢聚焦
遇到這樣一個需求,當(dāng)拍照后讓sensor的值不再監(jiān)聽,這里就需要監(jiān)聽到按下拍照的這個事件監(jiān)聽,可能可以用onkeydown()的方法去監(jiān)聽,在adb shell中直接input key 27的是可以讓起按下,但是在代碼中不走這個方法,還有就是用反射的方式找到系統(tǒng)源碼中拍照的activity做監(jiān)聽,但是太麻煩,所以直接用自定義相機(jī)來處理.
處理完成后添加手勢聚焦,代碼如下:
(1)設(shè)置屏幕點(diǎn)擊的監(jiān)聽事件
(2)計(jì)算xy坐標(biāo)值
(3)設(shè)置focusAreas的值
4:懸浮框權(quán)限問題
最近在弄一個拍照方位角顯示的問題,所以需要用到WindowManager這個類,這里他不需要依附某個activity所以顯示的話wm.addView(findid(), wmParams);那么問題來了,應(yīng)為Windowmanager使用需要申請權(quán)限,權(quán)限控制的話,在6.0以上機(jī)型中需要手動開啟,沒有我測試做直接去checkpermission獲取,但是沒有成功,應(yīng)該是需要手動進(jìn)入應(yīng)用權(quán)限中開啟,當(dāng)然有一種說法就是改變TYPE的值,變成TYPE_TOAST,這樣的話,在6.0一下好像是可以,建議在6.0以上判斷有權(quán)限后改變TYPE值為ALERT.
5:fragment中切換問題
做一個fragment+vierpager的切換圖片的效果,一共三個fragment這個時候發(fā)現(xiàn)在切換會第一個和第三個的時候在雙擊放大的時候,沒有效果,而第二個fragment是正常的,后來發(fā)現(xiàn)第一個和第三個在切換的時候沒有找到onResume,這里的解決方案是監(jiān)聽setUserhintVisibility(boolean value),注意這個方法是在onCreateView之前執(zhí)行.后來采用如果單純做切換,不要使用fragment,使用PagerAdapter就可以.