美文网首页
月笔记(2017-10)

月笔记(2017-10)

作者: 寒冬_腊月 | 来源:发表于2017-10-28 17:44 被阅读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

    • 打开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.这里就会报空指针

    相关文章

      网友评论

          本文标题:月笔记(2017-10)

          本文链接:https://www.haomeiwen.com/subject/bpyspxtx.html