onSaveInstanceState和onRestoreInstanceState使用
考虑到系统可能因为内存不足把当前的Activity收到掉,所以要使用这两个方法对当前的状态进行保存和恢复,onSaveInstanceState将会在onStop之前执行,onRestoreInstanceState是在onCreate之后执行的
获取View在屏幕中的位置
final int[] decorViewLocationInScreen=new int[2];
decorView.getLocationOnScreen(decorViewLocationInScreen);
如果是在初始化View的时候需要用到post方法
decorView.post(new Runnable() {
@Override
public void run() {
final int[] decorViewLocationInScreen=new int[2];
decorView.getLocationOnScreen(decorViewLocationInScreen);
}
});
代码实现样式
实现文字加粗
textview.setTypeface(textview.getTypeface(), Typeface.BOLD);
修改ImageView tint颜色
setColorFilter(Color.parseColor("#3462FF"));
SparseArray、ArrayMap用来代替HashMap
SparseArray
- 只能存储key为int类型的数据
- 避免了基本数据类型的装箱操作
- 不需要额外的结构体,单个元素的存储成本更低
- 数据量小的情况下,随机访问的效率更高
ArrayMap
该集合类型和SparseArray同样基于二分查询, 对于千以内的数据量Google推荐使用, 大量数据同样性能不佳;并且该集合类型不能解决自动装箱问题, 但是也能减少内存消耗;
trim()删除空白字符失效
发现个问题,从网上复制了一串字符,虽然已经使用了String的trim()方法,但是首字母还是有空格, 后面发现trim只能去掉英文下的空格,中文的空格是去不掉的,所以JAVA11(JDK11)中引入了strip(),用于去掉字符首尾空白是Unicode空白字符
获取statusBar高度
private int getStatusBarHeight() {
Resources resources = mActivity.getResources();
int resourceId = resources.getIdentifier("status_bar_height", "dimen","android");
int height = resources.getDimensionPixelSize(resourceId);
return height;
}