上班第六周
任务
- 完成提问和运营账号主页需求
完成提问和运营账号主页需求
在公司的第一个需求,总算是提测了,自己分三点对做需求做了总结:
- 和产品确定需求的细节,了解整个需求过程
- 界面上对照设计图争取做的和设计图上的一样,公司的设计没有区别Android和iOS,有些地方实现起来还是比较麻烦,还好项目中有一些已经实现了类似功能的可以拿过来用
- 代码上尽量写简洁,使用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
- 只能存储key为int类型的数据
- 避免了基本数据类型的装箱操作
- 不需要额外的结构体,单个元素的存储成本更低
- 数据量小的情况下,随机访问的效率更高
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);
小点
- SimpleDateFormat格式化需要添加locale
new SimpleDateFormat("MM月dd日 mm:ss", Locale.CHINA);
-
Glide 可以进行圆角控制,如果加载的是gif的话,就需要使用CardView
-
从sdk26开始,所有的视图中新增了一个android:importantForAutofill的属性来控制是否需要自动填充信息功能
-
使用constraintlayout中group控件可以对一组的view进行Visiable或者Gone操作