Android日常

57 阅读1分钟

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

  1. 只能存储key为int类型的数据
  2. 避免了基本数据类型的装箱操作
  3. 不需要额外的结构体,单个元素的存储成本更低
  4. 数据量小的情况下,随机访问的效率更高

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;
}

Glide 可以进行圆角控制,如果加载的是gif的话,就需要使用CardView