CardView要在布局最外邊繁仁,不然陰影顯示不全
獲取app的目錄
獲取當前程序路徑
getApplicationContext().getFilesDir().getAbsolutePath();
獲取該程序的安裝包路徑
String path=getApplicationContext().getPackageResourcePath();
獲取程序默認數(shù)據(jù)庫路徑
getApplicationContext().getDatabasePath(s).getAbsolutePath();TextUtils.isEmpty(s) 判斷字符串s是否為雙空及皂,即null或者長度為0
獲取某一天是星期幾
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(format.parse(pTime));//pTime是我們的日期,格式"2016-03-04"
int i = c.get(Calendar.DAY_FOR_WEEK);
返回值1是星期日碱蒙,2是星期一誉结,以此類推
- 計算兩個日期之間的天數(shù)
計算出兩個日期之間的毫秒數(shù)惩激,轉換成天數(shù)。
private int getDays(String day1, String day2) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = simpleDateFormat.parse(day1);
Date date2 = simpleDateFormat.parse(day2);
GregorianCalendar cal1 = new GregorianCalendar();
GregorianCalendar cal2 = new GregorianCalendar();
cal1.setTime(date1);
cal2.setTime(date2);
return (int)((cal2.getTimeInMillis()-cal1.getTimeInMillis())/(1000*3600*24));
} catch (ParseException e) {
e.printStackTrace();
return -100;
}
}
- 存儲目錄
package = Io.github.yuedev
//內(nèi)部存儲
context.getCacheDir
/data/data/Io.github.yuedev/cache
context.getFileDir
/data/data/Io.github.yuedev/files
context.getDir
/data/data/Io.github.yuedev
//外部存儲
context.getExternalCacheDir
/sdcard/Android/data/io.github.yuedev/
cachecontext.getExternalFilesDir
/sdcard/Android/data/Io.gothub.yuedev/files
Environment.getExternalStorageDirectory
/sdcard/
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
/sdcard/Movies
- API21以上使用舊版本的DatePicker樣式
API21(Lolipop)開始引入MD風格的DatePicker获讳,如果我們想用之前的DatePicker樣式,在XML的datePicker里使用以下屬性
android:calendarViewShown="false"
android:datePickerMode="spinner"
注意活喊,僅能在API21以上只用android:datePickerMode屬性丐膝。
8.想給Fragment傳遞參數(shù)的話,不要用帶參數(shù)構造方法,F(xiàn)ragment最好只有默認的無參構造方法帅矗。傳參數(shù)用setArguments()方法偎肃。
9.利用String.split()拆分字符串,利用replace()修改字符串浑此。
String path = "sdcard/test.mp2";
String[] strings = path.split("/");
這樣strings數(shù)組內(nèi)容就是sdcard和test.mp2
String fileName = strings[1].replace("mp2", "mp3");
這樣累颂,fileName的值就是test.mp3
10.TextView內(nèi)容過多顯示省略號,用ellipsize屬性凛俱。比如在xml里:
android:ellipsize="end"
11.設計支持庫com.android.support:design在28版本后新增了幾種view紊馏,比如MaterialCardView和MaterialButton,其中MatreialCardView比之前的CardView多了幾種常用屬性最冰,比如stroke描邊瘦棋。x
app:cardCornerRadius="10dp" <!--cardview的圓角角度-->
app:cardElevation="0dp" <!--cardview的高度-->
app:strokeWidth="1dp" <!--cardview外描邊線的寬度-->
app:strokeColor="@android:color/darker_gray"<!--cardview外描邊線的顏色-->
app:cardBackgroundColor="@android:color/holo_orange_light"<!--cardview卡片的顏色-->
12.RecyclerView視圖錯亂
如果在自己定義的adapter或者viewHolder里數(shù)據(jù)源有if的時候,一定跟上一個else暖哨,這樣保證每次復用都會進行一次賦值赌朋。詳細見下邊這篇文章。
http://www.reibang.com/p/6b990f339f49
public void bind(Note note) {
mNote = note;
mCardView.setCardBackgroundColor(getResources().getColor(mNote.getColorResId()));
//這里mNote的背景如果是白色篇裁,給mCardView描邊沛慢。
//一定要在else里給不是白色背景的mCardView設置描邊寬度為0,不然會出現(xiàn)描邊錯亂达布。
if (mNote.getColorResId() == R.color.backgroundColor0) {
mCardView.setStrokeColor(getResources().getColor(R.color.defStrokeColor));
mCardView.setStrokeWidth(3);
} else {
mCardView.setStrokeWidth(0);
}
}
13.TextView的fontFamily可以定義字體团甲,每個api的字體可能稍有不同,具體在SDK文件夾的platform文件夾下里邊的font.xml查看黍聂,貌似對中文不起作用躺苦。textAppearance屬性可以使用google推薦的字體樣式,如大小顏色等产还,api21可以用material標準匹厘,api21以下用appcomat的標準也很好。
- 在用tint改變view的顏色時脐区,經(jīng)常需要用到TintList類型愈诚,一般是用ColorStateList.valueOf(colorId)方法。這里的colorId不能直接用我們的resId牛隅,需要先用ContextCompat.getColor(context, resId)獲取colorId炕柔。
val colorId = ContextCompat.getColor(imageView.context, resId)
ImageViewCompat.setImageTintList(imageView, ColorStateList.valueOf(colorId))
或者
ImageViewCompat.setImageTintList(imageView, ContextCompat.getColorStateList(imageView.context, resId)
具體見官方的databinding demo
https://codelabs.developers.google.com/codelabs/android-databinding/
推薦閱讀
http://kaywu.github.io/2016/07/17/Android-Storage-Note/