android常見記錄

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什么什么的方法了,危險,半天都沒想起這個問題,造孽

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容