上班第六周

2020-06-16  本文已影响0人  寒冬_腊月

任务

  1. 完成提问和运营账号主页需求

完成提问和运营账号主页需求

在公司的第一个需求,总算是提测了,自己分三点对做需求做了总结:

  1. 和产品确定需求的细节,了解整个需求过程
  2. 界面上对照设计图争取做的和设计图上的一样,公司的设计没有区别Android和iOS,有些地方实现起来还是比较麻烦,还好项目中有一些已经实现了类似功能的可以拿过来用
  3. 代码上尽量写简洁,使用Android Studio inpect code工具规范代码

获取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);
        }
    });

这里有个问题,在真机和模块器上通过这个算出来的值,来计算实际View的高度,但是结果是差别,后面看怎么解决

代码实现样式

实现文字加粗

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推荐使用, 大量数据同样性能不佳;并且该集合类型不能解决自动装箱问题, 但是也能减少内存消耗;

adb 工具

查看包版本信息

adb shell dumpsys package packageName | grep "version"

查看当前显示的Activity所在包名和Activity路径,争对debug应用, Release失效

adb shell dumpsys activity activities | grep "mFocusedWindow" //模拟器
adb shell dumpsys activity activities | grep "ResumedActivity:" //真机

查看当前手机屏幕信息

adb shell dumpsys window | grep display

调试adb命令

adb shell am start -d your-deep-link

空格字符

发现个问题,从网上复制了一串字符,虽然已经使用了String的trim()方法,但是首字母还是有空格, 后面发现trim只能去掉英文下的空格,中文的空格是去不掉的,所以JAVA11(JDK11)中引入了strip(),用于去掉字符首尾空白是Unicode空白字符

版本api支持问题

xml布局中使用drawableTint要注意,这个只能在api 23上生效,要支持低版本的, 还是得用ImageView的 android:tint方法

layer-list中使用android:width也要注意

获取statusBar高度

private int getStatusBarHeight() {
    Resources resources = mActivity.getResources();
    int resourceId = resources.getIdentifier("status_bar_height", "dimen","android");
    int height = resources.getDimensionPixelSize(resourceId);
    return height;
}

距离传感器

距离传感器通常用于确定用户头部与手持设备屏幕表面的距离(比如,用户拨打或接听电话时脸贴近屏幕会亮等)。
大部分距离传感器返回的是绝对距离,单位是 cm,也有返回其他的,比如我手头这台华为,只返回0,5两个值。

 Sensor sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

小点

  1. SimpleDateFormat格式化需要添加locale
 new SimpleDateFormat("MM月dd日  mm:ss", Locale.CHINA);

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

  2. 从sdk26开始,所有的视图中新增了一个android:importantForAutofill的属性来控制是否需要自动填充信息功能

  3. 使用constraintlayout中group控件可以对一组的view进行Visiable或者Gone操作

参照

SparseArray 的使用及实现原理

Android布局中的空格

Sensor(PROXIMITY)

上一篇下一篇

猜你喜欢

热点阅读