作家
登录

Android面试17个知识点总结宝典

作者: 来源: 2017-12-11 09:06:58 阅读 我要评论

  • 如不雅事宜大年夜上往下传递过程一一向没有被停止,且最底层子View 没有花费事宜,事宜会反神往上传递,这时父View(ViewGroup)可以进行花费,如不雅照样没有被花费的话,最后会到Activity 的onTouchEvent()函数。
  • 如不雅View 没有对ACTION_DOWN 进行花费,之后的其他事宜不会传递过来。
  • OnTouchListener 优先于onTouchEvent()对事宜进行花费。
  •  分析办法

    自定义View的分类

    1. 对现有的View的子类进行扩大,例如复写onDraw办法、扩大新功能等。
    2. 自定义组合控件,把常用一些控件组合起来以便利应用。
    3. 直接持续View实现View的完全定制,须要完成View的测量以及绘制。
    4. 自定义ViewGroup,须要复写onLayout完成子View地位切实其实定等工作。

    View的测量-onMeasure

    10、Android中数据常见存储方法

    1. 文件(包含XML、SharePreference等)
    2. 数据库
    3. Content Provider
    4. 保存在收集

    View的测量最终是在onMeasure办法中经由过程setMeasuredDimension把代表宽高两个MeasureSpec设置给View,是以须要控制MeasureSpec。MeasureSpec包含大年夜小信息以及模式信息。

    MeasureSpec的三种模式:

    1. EXACTLY模式:精确模式,对应于用户指定为match_parent或者具体大年夜小的时刻(实际上指定为match_parent本质上是指定大年夜小为父容器的大年夜小)
    2. AT_MOST模式:对应于用户指定为wrap_content,此时控件尺寸只要不跨越父控件许可的最大年夜尺寸即可。
    3. UNSPECIFIED模式:不指定大年夜小的测量模式,这种模式比较罕用

    下面给出模板代码:

    1. public class MeasureUtils { 
    2.         /** 
    3.          * 用于View的测量 
    4.          * 
    5.          * @param measureSpec 
    6.          * @param defaultSize 
    7.          * @return 
    8.          */ 
    9.         public static int measureView(int measureSpec, int defaultSize) { 
    10.      
    11.             int measureSize; 
    12.      
    13.             //获取用户指定的大年夜小以及模式 
    14.             int mode = View.MeasureSpec.getMode(measureSpec); 
    15.             int size = View.MeasureSpec.getSize(measureSpec); 
    16.      
    17.             //根据模式去返回大年夜小 
    18.             if (mode == View.MeasureSpec.EXACTLY) { 
    19.                 //精确模式(指定大年夜小以及match_parent)直接返回指定的大年夜小 
    20.                 measureSize = size
    21.             } else { 
    22.                 //UNSPECIFIED模式、AT_MOST模式(wrap_content)的话须要供给默认的大年夜小 
    23.                 measureSize = defaultSize; 
    24.                 if (mode == View.MeasureSpec.AT_MOST) { 
    25.                     //AT_MOST(wrap_content)模式下,须要取测量值与默认值的最小值 

        推荐阅读

        Github年度报告盘点:TensorFlow无疑是最大赢家!

      开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 以前十年,Github所有开辟者共享2500万公共仓库的代码,用户遍布200多个国度,应用人数达到了2400万,有6700万Repo,新增了10亿提>>>详细阅读


      本文标题:Android面试17个知识点总结宝典

      地址:http://www.17bianji.com/lsqh/39609.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)