1:在相對布局中設(shè)置了固定寬高,如果又設(shè)置了在兩個控件之間(toLeftOf,toRightOf),這個固定寬高就沒用了
2:activity的style中可以設(shè)置其他控件的默認樣式,比如dialog
3:使用AlarmManager時,使用set方法,第二個參數(shù)time跟第一個參數(shù)關(guān)系很大,第一個為相對時間的話,就需要把alarmmanager啟動時間取出來加上需要延遲的時間然后傳入time中
4:接入FaceBook,需要一個獲取keystore的編號Hash(SHA1),文檔里都有代碼,windows需要安裝一個東西https://code.google.com/p/openssl-for-windows/(記一下,自己qq微云里面下載了一個),下載下來運行bin目錄里面的exe,然后自己去dos里面敲文檔里面給出的命令就行
5:使用Retrofit ,發(fā)現(xiàn)實體類使用泛型會報錯 {Java.lang.IllegalArgumentException: Unable to create converter for class ...},是因為沒有添加addConverterFactory(GsonConverterFactory.create())在Retrofit上,大約這樣
Retrofit retrofit = new Retrofit.Builder()
? ? ? ? ? ? ? ? .baseUrl("http://apis.baidu.com/acman/zhaiyanapi/tcrand/")
? ? ? ? ? ? ? ? .addConverterFactory(GsonConverterFactory.create())
? ? ? ? ? ? ? ? .build();
6:使用阿里云推送,阿里支付,阿里登錄等功能時,他們都會引用一個叫utdid的工具包,如果同時使用幾個阿里包,會出現(xiàn)引用utdid包沖突,解決辦法就是將其中的一些包給設(shè)置成私有的,比如:compileOnly files ('libs/alipaySdk-15.6.2-20190416165036.aar'),具體為啥,沒有去研究過
7:android studio依賴jar始終失敗,已經(jīng)將jar放入libs中,并且gradle也已經(jīng)添加依賴(sourceSets或implementation),但是怎么都無法使用,可以查看一下jar包的大小,有可能在復(fù)制過程中出現(xiàn)異常,jar包的大小變?yōu)榱?kb,所以就不能依賴,將包重新復(fù)制一下再檢查檢查就好了
8:android studio Setting->Editor->Live Templates可以設(shè)置默認代碼,只需要輸入簡單字母,就可以提示整個設(shè)置的代碼
9:android 10 創(chuàng)建文件失敗,已經(jīng)賦予權(quán)限,也沒有多層文件創(chuàng)建,但是就是創(chuàng)建失敗,讀取文件列表也失敗,只需要在AndroidManifest的Application中加一句代碼:android:requestLegacyExternalStorage="true"就可以了,原因沒有查詢,反正先這么用著!? 補:20200323,找到原因:在Android 10上即使你擁有了儲存空間的讀寫權(quán)限,也無法保證可以正常的進行文件的讀寫操作,所以需要適配,而最簡單粗暴的就是現(xiàn)在這個,請求使用舊的存儲模式,但是在android 11的時候,這種適配會被去掉,所以還是要想辦法適配
10:支付寶分享功能,設(shè)置的簽名是通過keystoll獲取的MD5去掉冒號所得,還需要用小寫,不能用keytool獲取的全大寫MD5,要小寫
11:阿里百川的客服OpenIm已經(jīng)下架,不能再使用,引用進來運行會報AndroidManifest錯誤
12:還是facebook的坑,如果調(diào)用facebook登錄,提示{登錄出錯 將你登入到此應(yīng)用程序時出錯。請稍后再試}基本上就是說明你的hashcode錯了,最好用代碼去獲取,不用命令,代碼獲取的就沒有問題,就能用,命令的要裝東西運行才行
13:App在AS上運行第一次沒有任何問題,后面從桌面上點擊打開App后就直接跳轉(zhuǎn)到APP的設(shè)置詳情去了,是因為在AndroidManifests里面配置了
<data android:scheme="smarthomeapp" android:host="smarthome.app" android:pathPrefix="/parameter"/>
14:java,kotlin中設(shè)置顏色的時候,使用ContextCompat.getColor(context,R.color.white)比較好,總是容易忘記這個方法
15:查詢app啟動時間,命令:adb shell am start -W 包名/啟動的activity的完整路徑? ?比如:adb shell am start -W com.xxx.xxx/com.xxx.xxx.activity
16:給app添加運行內(nèi)存,放置OOM,只需要在application 里面加一句android:largeHeap="true"就行了,但是不建議這么做,雖然加大了內(nèi)存,但是根本問題還是沒有解決,其他需要大內(nèi)存的app,比如視頻,圖片類app可以加一個這個,普通的app還是老老實實的解決內(nèi)存泄露比較好
17:TabLayout隱藏下劃線
app:tabIndicatorColor="@null"
18:recyclerview 去掉緩沖動畫,就是滑動到盡頭的動畫
android:overScrollMode="never"
java代碼中
recyclerview.setOverScrollMode(View.OVER_SCROLL_NEVER);
19:字符串顏色轉(zhuǎn)color?
Color.parseColor("#fffafafa")
20:使用firebase接入google登錄,除了配置相應(yīng)的數(shù)據(jù)外,還需要去驗證那兒添加打開登錄功能

21:BottomSheetDialog展示,在橫屏模式下,默認是只展示一半的,所以可以手動設(shè)置一下,成為完全展開,代碼如下:
val dialog = BottomSheetDialog(context , R.style.BottomSheetDialog)
val bindingSheet = DataBindingUtil.inflate<T>(context.layoutInflater!! , layoutId , null , false)
binding?.invoke(bindingSheet)
dialog.setContentView(bindingSheet.root)
val bottomSheet = dialog.findViewById<View>(R.id.design_bottom_sheet) as FrameLayout
val behavior = BottomSheetBehavior.from(bottomSheet)
behavior.state= BottomSheetBehavior.STATE_EXPANDED//默認就打開了
behavior.isHideable= true//需要加一句這個,免得崩潰
behavior.skipCollapsed= true//設(shè)置下滑直接就關(guān)閉,不切換到半關(guān)閉狀態(tài)
behavior.peekHeight= 0
22:webview不讓長按復(fù)制,又想要網(wǎng)頁里面的輸入框長按粘貼,怎么辦呢,找到一個小方法
WebView.setOnLongClickListener {//讓不讓長按復(fù)制
? ? when (bWebView.hitTestResult.type) {
? ? ? ? WebView.HitTestResult.EDIT_TEXT_TYPE-> false
? ? ? ? else ->true
? ? }
}
這兒是webview的長按反饋,里面判斷一下如果是長按的輸入框,就返回false,其他任何情況都返回true,因為返回true就表示不讓長按
23:android studio自帶的模擬器無法聯(lián)網(wǎng)怎么辦,參考一個鏈接
其實操作也算簡單:
1->cmd進入到自己sdk/emulator文件夾下
2->執(zhí)行emulator -avd @{YourEmulator} -dns-server 8.8.8.8,這個YourEmulator就是模擬器名稱,一般在c/user/applicationname/.android/avd/里面,注意名字是沒有.avd的,就是,avd前面那節(jié)
3->執(zhí)行了后,就自動啟動了模擬器,試試能不能聯(lián)網(wǎng)了
但是一個賊jb大的問題就是,這種居然是只能一次有效,重啟就又沒了,你能想象嘛,還特么有這種設(shè)定
24:BottomSheetDialog里面有recyclerview,發(fā)現(xiàn)滑動沖突了,啷個辦,我也不曉得,只曉得一個BottomSheetDialog就一個recyclerview不會沖突,或者多個recyclerview都在一個父布局里面也不會沖突,原因不知道,懶得去了解
25:如果遇到viewmodel里面編譯出錯,提示類似與這種modelMainInfo = model.getMainInfo();估計就是你的viewmodel里面有一個maininfo參數(shù),然后自己又寫了一個getMainInfo方法,這個方法最好改個名字,因為編譯的時候,會自動生成一個getMaininfo方法來獲取maininfo,你就別在寫get什么什么的方法了,危險,半天都沒想起這個問題,造孽