月笔记(2017-10)

2017-10-28  本文已影响31人  寒冬_腊月

这个月工作的需求比较少,主要就是做了一个蒙版的需求,但是后面由于各种问题,还是没有上线.5555.不过通过做这个需求发现自己对自定义View这一块的知识还是很匮乏,所以自己也在空闲的时候研究一下,言归正传,还是总结一下这个月学到的知识点.

判断接口返回的string是不是为json

Object json = new JSONTokener(data).nextValue();
if (json instanceof JSONObject){
  //JSONObject
}
else if (json instanceof JSONArray){
//JSONArray
}

解决Android Studio 查看api文档会很慢,一直显示Fetching Documentation....的问题.stackoverflow

http://developer.android.com/reference/

file://$USER_HOME$/android-sdk/docs/reference/

从dimen 获取dp转为px方法, cdsn

这里我总结了一下有四种方法
如果dimen.xml有如下申明

<dimen name="avatar_bg_width">95dp</dimen>
getResources().getDimension(R.dimen.avatar_bg_width));//返回类型为float,带精度
getResources().getDimensionPixelOffset(R.dimen.avatar_bg_width));//返回类型为int,由浮点型转成整型时,原则是忽略小数点部分
getResources().getDimensionPixelSize(R.dimen.avatar_bg_width));//返回类型为int,由浮点型转成整型时,采用四舍五入原则
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,95,getResources().getDisplayMetrics()))//带精度,可以直接传给定的dp

输出:

142.5
142
143
142.5

AndroidManifest 中的host尽量使用小写

性能建议

尽可能的减少onDraw被调用的次数,大多数时候导致onDraw都是因为调用了invalidate().因此请尽量减少调用invaildate()的次数。如果可能的话,尽量调用含有4个参数的invalidate()方法而不是没有参数的invalidate()。没有参数的invalidate会强制重绘整个view。

另外一个非常耗时的操作是请求layout。任何时候执行requestLayout(),会使得Android UI系统去遍历整个View的层级来计算出每一个view的大小。如果找到有冲突的值,它会需要重新计算好几次。另外需要尽量保持View的层级是扁平化的,这样对提高效率很有帮助

自定义ViewGroup onDraw执行的条件

布局中设置背景 android:setbackground或者
初始化的时候调用 setWillNotDraw(false)

Android Emulator下载保存的路径

system image for the emulator:
$android-sdk$/system-images/android-26/google_apis/x86/x86

onMeasure执行次数的问题

当自定义一个ViewGroup 的时候 记录一下发现的几个问题

报空指针但是调用的对象不为空的问题

项目中调用了okhttp的一段代码

HttpUrl.parse(requestUrl.toString()).newBuilder();

当requestUrl的地址不合法的时候,如:wap-gearbest.com..s1.egomsl.com.这里就会报空指针

上一篇 下一篇

猜你喜欢

热点阅读