1. Rest
1.1 序列化json自動命名:
json中如果有下劃線命名的key,例如 user_name
, 但是java代碼中希望是駝峰式的命名缰猴,例如userName
, 如果使用Gson解析可以設(shè)置LOWER_CASE_WITH_UNDERSCORES
屬性
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .create()
或者添加SerializedName
的Annotation
@SerializedName("user_name")
private final String userName;
2. 裁切圖片
- Android提供了
com.android.camera.action.CROP
用來裁切圖片,但是不同設(shè)備上的表現(xiàn)不同,可能引起難以預(yù)料的bug。為了解決這個問題是越,應(yīng)該使用下面的第三方庫.(來自commensware) - https://github.com/lvillani/android-cropimage
- https://github.com/biokys/cropimage
- https://github.com/MMP-forTour/cropimage (forked from the above one)
- https://github.com/dtitov/pickncrop
3. 資源
- 資源可以使用
res.srcDirs = ['src/main/res'_pagea, 'src/main/res_pageb']
將資源分在不同的文件夾中
4. View
4.1 View的屬性
- android:fillViewport
4.2 獲取當(dāng)前橫豎屏狀態(tài)
4.3 requestLayout子類沒有調(diào)用onLayout
4.4 獲取子控件相對于父View的位置
4.4 Activity屬性
- windowSoftInputMode
- 原來窗口resize
- 原來窗口不變 adjustSpan
- 原來窗口位移
5. 清除數(shù)據(jù)
6. AlarmManager
- alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+(10*1000), pi);
7. 調(diào)試
7.1 無法調(diào)試
- 開發(fā)者模式中飘千,選擇正在調(diào)試的應(yīng)用
解決同步依賴庫太慢問題
- 使用sonatype Nexus配置代理: (Remote Storage Location: https://jcenter.bintray.com/)
- 使用oschina的代理: maven.oschina.net
使用stetho可以更方便地調(diào)試
8. Gradle
8.1 防止gradle每次都下載
- 在官網(wǎng)下載安裝包,然后加入系統(tǒng)變量筒扒,接著使用
gradle build
而不是.`/gradlew
8.2 加快gradle編譯速度
-
gradle --daemon
代替gradle
9. 安卓系統(tǒng)開發(fā)
安裝android ROM開發(fā)環(huán)境所需要的軟件
sudo apt-get install git gnupg flex bison gperf build-essential
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown
libxml2-utils xsltproc
10. 讓android studio可以在所有apps里被搜索到
- 復(fù)制下面的代碼到
~/.local/share/applications
[Desktop Entry]
Comment=
Terminal=false
Name=Studio
Exec=$StudioPATH/studio.sh
Type=Application
Icon=$StudioIconPATH
11. 開發(fā)工具
11.1 adb 提示No such file or directory for existing executable
- 執(zhí)行
sudo apt-get install libc6:i386 libstdc++6:i386
11.2 編譯提示 make sure the aapt execute at *aapt can run successfully
- sudo apt-get install zlib1g:i386
gralde用本地的
修改.idea/gradle.xml
<option name="distributionType" value="LOCAL" />
<option name="gradleHome" value="$USER_HOME$/prog/gradle-2.10" />
12. 存儲
12.1 SharedPreferences的commit()與apply()
SharedPreferences
類的.commit()
和.apply()
都可以提交數(shù)據(jù),但是apply是異步的,不會阻塞當(dāng)前線程,然而正因為是異步的霉旗,在某些異常情況下(例如程序異常退出)會導(dǎo)致數(shù)據(jù)沒有保存到本地磁盤,引起一些bug冰蘑,所以如果需要保證保存下來的話,建議用commit()