Property Animation框架详解(一)

作者: ztelur
联系方式:segmentfaultcsdn简书

本文转载请注明原作者、文章来源,链接,版权归原文作者所有。

 前段时间阅读了一篇关于Android动画学习的文章《如何学习 Android Animation?》,深感Android动画种类繁复,类型多遍,虽然自己实现过很多动画效果,但是对Android动画的整体领悟还有所欠缺,所以决定最近好好研究一下Android动画的相关内容。
 我首先决定好好看一下Android属性动画的相关源码,因为平时属性动画用的最多而且涉及的知识点也很多。于是写下这个系列的总结笔记吧,预计一共两篇文章。
 为了节约你的时间,本文主要内容如下:

Read More
Share

SICP 习题2.6之丘奇数

 最近一直在阅读《SICP》,然后下午做其中的习题2.6,对其题意很不理解,于是搜索了相关资料,不禁如题设所说感到如雷灌顶,特此记录下来,以供大家阅读和交流

####题目
 如果觉得将序对表示最为过程还不足以令人如雷灌顶,那么请考虑,在一个可以对程序做各类操作的语言中,我们完全可以没有数(至少在只考虑非整数的情况下),可以将0和加一操作实现为:

(define zero (lambda (f) (lambda (x) x)))
(define (add-1 n)

Read More
Share

Android Scroll详解(三):Android 绘制过程详解

作者: ztelur
联系方式:segmentfaultcsdngithub

本文转载请注明原作者、文章来源,链接,版权归原文作者所有。

 本篇为Android Scroll系列文章的最后一篇,主要讲解Android视图绘制机制,由于本系列文章内容都是视图滚动相关的,所以,本篇从视图内容滚动的视角来梳理视图绘制过程。
 如果没有看过本系列之前文章或者不太了解相关的知识,请大家阅读一下一下的文章:

Read More
Share

Android视图架构详解

作者: ztelur
联系方式:segmentfaultcsdngithub

本文仅供个人学习,不用于任何形式商业目的,转载请注明原作者、文章来源,链接,版权归原文作者所有。

 最近一直在研究View的绘制相关的机制,发现需要补充一下Android View Architecture的相关知识,所以就特地研究了一下这方面的代码,写成本篇文章
 为了节约你的时间,本篇文章内容大致如下:

Read More
Share

Android Scroll详解(二):OverScroller实战

作者: ztelur
联系方式:segmentfaultcsdngithub

本文仅供个人学习,不用于任何形式商业目的,转载请注明原作者、文章来源,链接,版权归原文作者所有。

 本文是android滚动相关的系列文章的第二篇,主要总结一下使用手势相关的代码逻辑。主要是单点拖动,多点拖动,fling和OveScroll的实现。每个手势都会有代码片段。
 对android滚动相关的知识还不太了解的同学可以先阅读一下文章:

Read More
Share

《异类-不一样成功的启示录》读后感

 前几天清明节,放假三天,可惜三天再下雨,真是清明时节雨纷纷啊。下雨就不能出去游玩,于是呆在屋里,一口气把《异类:不一样成功的启示录》这本书看完了。
 本书的作者是格拉德威尔,他的著作及文章常涉及到出乎意料的社会科学研究领域,尤其是在社会学、心理学、社会心理学方面,对学术工作的应用层面做出了广泛而深入的探索。他是牙买加人,在书中,他也提到了自己的家族崛起的故事。
 在《异类》中,他将取得非凡成就的人叫做“异类”,取同类中非凡的含义,然后他开始探究“异类”之所以成功的原因。在普通大众看来,“异类”的成功主要是依靠自身的努力奋斗,其外在因数只不过为之提供了比较有利的条件。但是在这本书中,作者详细解释并描述了各种外界条件对“异类”形成的影响,比如出生年代,家庭背景,机缘巧合等。

分组效应

 书中首先提出了选拔机制对运动员成功的影响。作者发现加拿大的冰球运动员的生日大都在一年的前三个月,并且生日在前半年和后半年的比例很是悬殊。结合加拿大冰球选拔制度,作者得出了“分组效应”对运动员成功的影响。加拿大冰球是每个年龄段分一次组,有高手组,也有普通组。如果你在一年的开始出生,在年幼时,由于你比其他人多发育几个月时间,你就有更大的几率被选入高手组;在高手组内,你会受到更严格的训练,所以你会提示得更快;然后每一年你都会累计这样的优势,然后最终产生了巨大的区别。作者又举出了教育领域中类似的例子,出身在前半年的学生的成绩比出生在后半年的学生要好一些,因为他们多发育一段时间,在很小时,会显出一定的小优势,然后因为分组效应,逐渐凸显出来,最终称为“异类”。

一万小时

 紧接着,作者提出了作为领域专家,你必须积累一万小时练习时间的理论。作者在文中举了很多例子:Sun公司创始人比尔乔伊在密西根大学计算机中心累计了一万小时,小提琴演奏者练习时间的差距,甲壳虫乐队在汉堡的没日没夜的演出累计了一万小时。这些例子,都是为了说明,要成为某一领域的专家,你必须付出的努力和花费的时间。这也就是一般大众眼里的,“异类”的非凡努力。
 但是作者又紧接着提出了对比尔乔伊成功产生巨大影响的环境因素。密西根大学是当时位数不多的具有分时功能计算机的大学,这对练习编程很重要;学校规定学生每月的上机时长,但是碰巧有一个制度漏洞,比尔发现了,从而可以不受时间限制的使用电脑;并且计算机中心是24小时开发的。这些环境因素在那个都是打孔计算机的年代可不多见。

天才之忧

 那么智商是否是决定“异类”的重要原因呢?作者在接下来的文章中讲述了两个智商超高的天才的故事:克里斯托弗兰根和奥本海默。兰根智商达到195,远超爱因斯坦的150,但是他却对人类还无贡献(这个智商的人,过得如何已经无法评价他的人生啦,有上天的馈赠,就应该对人类进行馈赠),作者描述了他从小到老年的故事,分析了他在每一个重要关口受到的不利影响,最终,兰根在一个农场里平静的生活,独自研究着自己感兴趣的事务,没有发表过任何科研文章和成果。接着,作者又讲述了奥本海默的故事。对,就是制造原子弹的那个奥本海默。奥本海默在年轻时,也在很多重要关口受到了很多阻碍。比如,他在英国念书时,企图杀死导师,并且人们认为他和共产党有联系。但是他好像每次都能化险为夷,顺利度过难关,最终留名青史。
 作者还提到了一批特殊的人群,“特曼人”,他们是斯坦福心理学专家刘易斯特曼精心挑选出来的智商高于常人的一组小学生,特曼对其中每个人进行长期观察,发现他们长大之后的成就,经济情况大为不同。
 作者由上述三个例子提出了影响“异形”出现的另一个因素:家庭因素。

协同培养 and 自然成长

 作者紧接着描述了兰根童年时的遭遇,和其童年生活对他在生活困难关口时作出决定的影响,作为对照,作者又描述了奥本海默所遇到的困难关口,每次奥本海默都从困难关口中顺利脱线,甚至在他试图杀死导师的案件中,他只被判处了缓刑。作者对比了二者的行为,进而退出家庭因素对二者的影响。
 作者比较了中产家庭和低收入家庭对小孩教育的区别,一个叫做“协同培养”,一个是”自然成长“。二者没有好坏之分,实际上,他们各有利弊。但是文中令我颇为感触的是:”权利“意识的形成。

Read More
Share

Android Scroll详解(一):基础知识

 在前边的文章中,我们已经对Android触摸事件处理有了大致的了解,并且详细探讨了MotionEvent的相关用法。对之前文章中的知识还不是很了解的同学,请阅读《Android MotionEvent详解》
 今天,我们就来探讨一下Android中界面滚动效果的相关机制,本篇文章主要讲解一下滚动相关的知识点,之后的文章会涉及实际的代码和原理。希望大家阅读完这篇文章之后,能够了解或者掌握一下知识:

  • Android 视图的组成部分
  • mScrollXmScrollY对视图显示的影响
  • scrollToscrollBy的使用
Read More
Share

Android MotionEvent详解

 在前边几篇博文中(《图解Android事件传递之ViewGroup篇》《图解Android事件传递之View篇》),我们已经了解了android触摸事件传递机制,接着我们再来研究一下与触摸事件传递相关的几个比较重要的类,比如MotionEvent。我们今天就来详细说明一下这个类的各方面用法。

事件坐标的含义

 我们都知道,每个触摸事件都代表用户在屏幕上的一个动作,而每个动作必定有其发生的位置。在MotionEvent中就有一系列与标触摸事件发生位置相关的函数:

  • getX()getY():由这两个函数获得的x,y值是相对的坐标值,相对于消费这个事件的视图的左上点的坐标。
  • getRawX()getRawY():有这两个函数获得的x,y值是绝对坐标,是相对于屏幕的。
     在之前的文章中,我们曾经分析过事件如何通过层层分发,最终到达消费它的视图手中。其中ViewGroupdispatchTransformedTouchEvent函数有如下一段代码:

Read More
Share

[译]使用注解处理器生成代码-3 生成源代码

 本博文原文地址摸我
 本篇博文是关于使用注解处理器生成java代码系列的第三篇也是最后一篇文章。在第一篇(在这里)中,我们介绍了注解和其一般用法。在第二篇(在这里)中,我们介绍了注解处理器,如何构造并且使用它。 在本篇博文中,我们将想你展示如何使用注解处理器来生成源代码。

简介

 生成源代码很简单。生成正确的源代码却很难。优雅高效的去生成正确的代码是很麻烦的任务。
 幸运的是,Model-Driver Engineering(1)为我们提供了基于已经证明有效的过程和工具的成熟的方法理论。

MDE 的 Model 和 Meta-model

 在讨论如何使用注解处理器生成源代码之前,有几个相关的概念我们要实现讲明,那就是modelsmeta-model
 MDE的理论基础之一为抽象的构造(construction of abstractions)。我们将软件系统在不同的层次和细节上使用不同的方法进行建模。当软件在一个抽象层次上被建模完成之后,我们就开始对下一个抽象层次进行建模,知道建立一个完备的,可部署的产品。
 在这种理论环境下,一个model 就是我们用来在某一抽象层级上表示软件系统的抽象。
 meta-model就是我们用来写model的规则,你可以理解为model的纲要或者语法。

使用注解处理器生成源代码

 由上述描述可见,注解是定义model和meta-model的好方法,注解类型(Annotation Type)充当meta-model的角色,标注在一段代码上的注解来提供model。
 我们可以使用这个model来生成配置文件或者从现有代码中生成新代码。比如,通过注解bean来生成远程代理或者数据访问对象。
 这个方法的核心就是使用注解处理器。注解处理器可以读取在源代码中发现的注解,并且对注解做任何想做的事情-比如,打开文件,写文件,等等。

Filter

 我们在第二篇博文中曾经说过,每个处理器都可以通过处理环境(processing environment)对象获得一些有用的工具,Filter就是其中之一。
javax.annotation.processing.Filer接口定义了一些关于创建源文件,类文件和一般资源的方法。通过使用Filter我们可以使用正确的文件目录,并且确保不会丢失文件系统中的生成的文件或者资源。
 下面这个例子可以显示如何在注解处理器中生成代码。生成的类名就是被注解的类名加上BeanInfo的后缀:

Read More
Share

2016年,计划目录

 建立一个计划目录,记录一下16年的计划和实现情况,进行不定时的更新。

计划清单

英语学习

ESL_Pod [暂停]

《English as a second language podcast presents – Introduction to the United States》总共100课。还没有开始,从3月5日开始

扇贝 
  • 单词 :在背英语单词书,5518词,完成进度8.10%  计划每天50词,并且阅读两篇文章

Read More
Share