為之于未有,治之于未亂。
1、關(guān)于View.getBackground().setAlpha(i);的坑
- 坑:在使用上述方法動態(tài)改變view透明度時,會導致應用中其他相同控件的透明度發(fā)生變化;
- 原因:默認情況下,所有從同一資源(R.drawable.***等)加載的實例都共享一個共用的狀態(tài),如果你更改一個實例的狀態(tài),其余的實例 都會接收到相同的通知,相同控件共享ColorState(ColorDrawable),當你改變其Alpha值時,其他控件也會獲取到相同值;
- 解決辦法:View.getBackground().mutate().setAlpha(i)。
2、Mac上讓隱藏文件可見和不可見的方法
-
顯示:
- defaults write com.apple.finder AppleShowAllFiles TRUE
- killall Finder
-
隱藏:
- defaults write com.apple.finder AppleShowAllFiles FALSE
- killall Finder
3、常用正則表達式
- 驗證驗證車牌號(內(nèi)地):"[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z0-9]{5}"
- 驗收手機、座機號:"^(0[0-9]{2,3}-)?\d{6,8})|(1[2-9]\d{9}"
- 驗證手機號:"^((13[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$"
- 驗證郵箱 :"^([a-z0-9A-Z]+[-|_|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?.)+[a-zA-Z]{2,}$"
- 驗證8-12位必須包含數(shù)字、字母的密碼 :"(?![0-9]*$)(?![a-zA-Z]*$)^([a-zA-Z0-9]{8,12})$"
- 驗證門牌號:(1-4-1703):"(\d{1,6}\-){2}\d{1,6}"
- 驗證身份證號碼:"(\d{15}$)|(\d{17}([0-9]|X)$)"
4、RxJava學習筆記
-
Scheduler
在RxJava 中,Scheduler ——調(diào)度器,相當于線程控制器,RxJava 通過它來指定每一段代碼應該運行在什么樣的線程,使用subscribeOn() 和 observeOn()兩個方法來對線程進行控制。RxJava 已經(jīng)內(nèi)置了幾個 Scheduler ,它們已經(jīng)適合大多數(shù)的使用場景:
- Schedulers.immediate(): 直接在當前線程運行,相當于不指定線程。這是默認的 Scheduler。
- Schedulers.newThread(): 總是啟用新線程,并在新線程執(zhí)行操作。
- Schedulers.io(): I/O 操作(讀寫文件、讀寫數(shù)據(jù)庫、網(wǎng)絡(luò)信息交互等)所使用的 Scheduler。行為模式和 newThread() 差不多,區(qū)別在于 io() 的內(nèi)部實現(xiàn)是是用一個無數(shù)量上限的線程池,可以重用空閑的線程,因此多數(shù)情況下 io() 比 newThread() 更有效率。不要把計算工作放在 io() 中,可以避免創(chuàng)建不必要的線程。
- Schedulers.computation(): 計算所使用的 Scheduler。這個計算指的是 CPU 密集型計算,即不會被 I/O 等操作限制性能的操作,例如圖形的計算。這個 Scheduler 使用的固定的線程池,大小為 CPU 核數(shù)。不要把 I/O 操作放在 computation() 中,否則 I/O 操作的等待時間會浪費 CPU。
- AndroidSchedulers.mainThread():指定的操作將在 Android 主線程運行。
5、修改.gitignore后無效的解決辦法
- git rm -r --cached .
- git add .
- git commit -m 'update .gitignore'
6、Android Studio中獲取SHA1或MD5的方法
- keytool -v -list -keystore keystore.jks
- “-v” 參數(shù),不然只能看到SHA1,沒有MD5