這篇文章會記錄我在項目開發(fā)過程中遇到的一些值得記錄的簡短知識點或經(jīng)驗,有些內(nèi)容會比較基礎(chǔ),大佬請略過。這篇文章會持續(xù)不定時更新。
1. 如何修改應(yīng)用名稱?
- 修改 AndroidManifest.xml 文件中 application 標(biāo)簽的 label 屬性,這里修改的是應(yīng)用安裝界面上顯示的應(yīng)用名稱,也是應(yīng)用市場顯示的應(yīng)用名稱;
- 修改 AndroidManifest.xml 文件中主 Activity( action 為 main 的 Activity ) 標(biāo)簽的 label 屬性,這里修改的是應(yīng)用的桌面快捷方式中顯示的名稱。
2. 在 Retrofit 中,如何控制一個參數(shù)傳或不傳?
如果你不想傳某個參數(shù),可以給參數(shù)賦值 null,Retrofit 會自動過濾掉值為 null 的參數(shù),不添加到參數(shù)列表里。
3. TabLayout 如何設(shè)置下劃線寬度自適應(yīng)標(biāo)題寬度?
在版本號28以上的 support design 庫中,Google 添加了一個屬性 app:tabIndicatorFullWidth ,設(shè)置為 false 則可以自適應(yīng)標(biāo)題寬度。
4. Android v2 應(yīng)用簽名
v1簽名是對jar進(jìn)行簽名,v2簽名是對整個apk簽名。
官方介紹就是:v2簽名是在整個APK文件的二進(jìn)制內(nèi)容上計算和驗證的,v1是在歸檔文件中解壓縮文件內(nèi)容。
新的v2模式簽名機(jī)制提醒我們在v2簽名之后,對apk本身做任何改動都會導(dǎo)致校驗不通過的情況,導(dǎo)致在android 7.0以及之上都會安裝不成功。
只使用 v2簽名的應(yīng)用在 Android7.0 以下系統(tǒng)會安裝失敗,提示“找不到安全證書”;在 Android7.0以上的系統(tǒng)則沒問題。
只用 v1 簽名的應(yīng)用在全部版本系統(tǒng)都沒問題
- 一定可行的方案: 只使用 v1 方案
- 不一定可行的方案:同時使用 v1 和 v2 方案
- 對 7.0 以下一定不行的方案:只使用 v2 方案
5. Retrofit提交數(shù)組參數(shù)
Retrofit 提交數(shù)組類型的參數(shù)時,參數(shù)的鍵名必須加上 "[]", 否則會被認(rèn)為是同名參數(shù)然后只傳數(shù)組中的一個值。
@FormUrlEncoded
@POST("follows")
fun followUsers(@Field("uid") uid: Int, @Field("follow_uid[]") uidList: List<Int>): Flowable<SimpleResp>
6. Glide 加載 gif 圖片并播放一次
Glide.with(activity).load(R.drawable.gif_get_gold_coin).into(object : SimpleTarget<Drawable>() {
override fun onResourceReady(drawable: Drawable, transition: Transition<in Drawable>?) {
if (drawable is GifDrawable) {
drawable.setLoopCount(1)
mIvGoldCoin.setImageDrawable(drawable)
drawable.start()
}
}
})
7. 解決 ScrollView 嵌套 Recyclerview 時, 列表顯示不全的問題
- 測試單獨不嵌套時recyclerview是否可以正常顯示完所有的數(shù)據(jù)
- recyclerview建議設(shè)置 android:minHeight ="xxxxxx"
- ScrollView 的高度設(shè)置match_parent
- 在ScrollView 中加入 android:fillViewport="true"
- 如果還是無法顯示,換成NestScrollView 替換ScrollView測試
8. APP crash之后如何在 Android Studio 中查看崩潰日志?
選擇 DEAD 進(jìn)程即可看到崩潰時的 log

9. 去掉 Button 控件的默認(rèn)邊距
android:minHeight="0dp"
只要在按鈕的xml標(biāo)簽里加上這么一句話就行了
10. String 的 trim 方法
該方法的注釋說明是這樣的:
Returns a copy of the string, with leading and trailing whitespace omitted.
所以該 trim 方法只會去除字符串頭部和尾部的空格,想去除字符串中間空格不適用。