这个月工作的需求比较少,主要就是做了一个蒙版的需求,但是后面由于各种问题,还是没有上线.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
- 打开jdk.table.xml,我的是在这个路径
/$USER_HOME$/.AndroidStudio2.3/config/options/jdk.table.xml
- 替换文本
替换所有的
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 的时候 记录一下发现的几个问题
- 在有的模拟器(Emulator Galaxy_nexus_api_21)上会执行3次,在真机上会执行2次
- 如果添加了子类的话,执行次数又会变
报空指针但是调用的对象不为空的问题
项目中调用了okhttp的一段代码
HttpUrl.parse(requestUrl.toString()).newBuilder();
当requestUrl的地址不合法的时候,如:wap-gearbest.com..s1.egomsl.com
.这里就会报空指针
网友评论