博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Android群英传》读书笔记
阅读量:7304 次
发布时间:2019-06-30

本文共 1612 字,大约阅读时间需要 5 分钟。

《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———————————————————

你可能感兴趣的文章
Windows Server 2008搭建***服务
查看>>
实验一 路由配置(cisco packet tracer)
查看>>
装机流程
查看>>
练习题7
查看>>
简单的nginx启动脚本
查看>>
我的友情链接
查看>>
React Native集成到Android项目当中
查看>>
cd ls
查看>>
linux学习命令总结⑩①
查看>>
【好程序员笔记分享】C语言之交换变量的值
查看>>
linux 安装和初级优化
查看>>
C#系列-多样化的程序分支[7]
查看>>
Keepalived配置文件详解(以Haproxy作为负载均衡器)
查看>>
megacli创建RAID10过程详解
查看>>
Linux系统引导过程
查看>>
【apache】mod_proxy 和 mod_rewrite实现js跨域
查看>>
林锐博士谈考研
查看>>
Vant Weapp小程序蹲坑之使用checkbox组件
查看>>
重载operator<<运算符时第二个参数最好不要写成指向对象的指针
查看>>
在ubuntu上编译 wpa_supplicant-2.6
查看>>