《Android群英传》读书笔记

《Android群英传》作者:徐宜生
本身感觉自己在动画这一块,缺的东西太多,在知乎上看到大家都推荐这一本书。
所以在kindle上看了样章,觉得非常值得入手,而且不仅仅是动画,是一本难得的进阶好书。


第一章 Android体系与系统构架

  • Context,对于context这里有两张图

图一 Context的结构图示
Context的结构图示

图二 Context作用域
Context作用域

所以说有一道面试题Context数量 = Activity数量+Service数量+1即Application


第二章 Android开发工具新接触

  • Android Studio 已经非常熟悉
  • ADB命令则属于虽然很重要,但是不常用

第三章 Android控件构架与自定义控件详解(重点)

  • 控件结构
    控件结构

这张表中我们可以知道,一个activity的view结构大概什么样

另外 : 控件主要就是 ViewGroup 和 View
当然在view和viewgroup控件树顶部是一个ViewParent同意调度分配交互管理事件


  • View的测量
    MeasureSpec这个类
    那么测量还有三种不同的模式

    1.EXACTLY这个就是控件已经指定了大小,直接拿到就OK

    2.AT_MOST取最大值模式,我觉得是时候把代码写一遍了

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(measureWidth(widthMeasureSpec)
                ,measureHeight(heightMeasureSpec));
    }

    private int measureHeight(int heightMeasureSpec) {
        int result = 0;
        //判断测量的模式
        int method = MeasureSpec.getMode(heightMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        //EXACTLY模式的话,
        if(method == MeasureSpec.EXACTLY){
            result = height; //直接使用即可
        }else{
            //那么这里给控件设置一个最大值,应为下面要使用到
            result = 300;
            if(method == MeasureSpec.AT_MOST){
                //如果测量的尺寸比设置的最大值还要大,则使用最大值
                //如果测量的尺寸比设置的最大值小,则使用该值即可
                result = Math.min(result,height);
            }
        }
        return result;
    }

所以,为什么会有这种奇怪的测量模式?
那是因为,你在很多时候会使用warp_content
也就是说,如果你自定义控件需要支持warp_content,那就必须重写onMeasure

  • View的绘制

———————————————————这里是书签 p38———————————————————

实际上,我依然在看这本书.为啥不写笔记了?

主要是,难度上来了,需要理解,更需要练习才能掌握..
所以,等我看第二遍的时候再总结

———————————————————这里是书签 p173———————————————————

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/109900

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。