⑴ 求 Google android开发入门指南.pdf 第2版中文版 盖索林写的 真的很急
还好吧v干活
⑵ 请问安浪Android开发秘籍里代码用的什么字体
windows 系统和CAD的字体是怎么编写成的?(注意:不是下载别人做好的字体包放到FONS文件夹)我想设置自己签名的字体,怎样编写?求高手详细讲解
这是别人是字体,我想知道怎样编写成的
2013-11-25 21:42提问者采纳
首先自己把所有的字写一遍 总之好麻烦 我这是复制别人的希望可以帮到你
打造你自己的字体 Ⅰ
你是个才华横溢的设计师,一个技艺精湛的书法大师,并已学习了所有关于Serif(衬线)、side-bearings(侧架/预留空间),kerning(字距调整)的知识。现在你打算制作一款属于你自己的字体了(什么!你还不知道什么是衬线、侧架和字距调整?好吧,在你着手制作字体之前,务必先把 iLT 上面所有的文章都读过一遍!如果你真的希望成功,你应该竭尽所能掌握尽可能多的相关知识。如果你不是什么天才的设计师或书法大师,那也不必担心,你一样能创造出漂亮的字体——条件是小小的努力,大量的知识,还加上一点点灵感。)
秘密武器:字体编辑软件
前面所说的出色的设计、漂亮的书法作品以及深厚的字体知识等等,这些东西仍然无法让你做出字体,你还需要把你的作品转换为一种计算机能够理解的格式,所以你的手头还需要配备一款优秀的字体编辑软件。这些软件的功能和价格各异,运行的平台也不同。下面是一些大牌角色:
字体编辑软件
FontLab Studio 这是我用来制作字体的软件。在某种程度上已经成为了行业标准,所以也价格不菲,要卖649美刀。提供30天的免费试用版本,你可以在购买前先试用一下。PC和Mac平台的版本都有。FontLab Studio是我频繁使用的软件,我可以向你担保它的优秀,同时其用户社区也颇有人气。
FontForge 基本上,FontLab能做的,FontForge都可以完成,并且它还是免费和开源的。也因为开源,在Windows下安装FontForge并不是一件简单的事(你必须先安装Cygwin)。同时,它的文档也不象FontLab那样完备。最近在Typophile 论坛有一个关于FontForge的有趣话题,你可以去看看,以决定是否投身于开源的怀抱。FontForge可用于PC、Mac和linux。如果你是个Linux用户,FontForge可能是你唯一的选择。
那些在钞票中打滚的人可以考虑一下DTL FontMaster,具备FontLab的全部功能,甚至还要多,但相当的昂贵。FontMaster由几套不同的模块组成,我觉得很酷,但是也挺吓人的。适用PC和Mac平台。
FontCreator 是另外一个选择,价格比FontLab更平易近人。但只能处理TrueType 和 OpenType格式的字体——不能处理Type 1字体,并且只有Windows版本。
TypeTool 同样来自FontLab的一款入门级产品,和FontCreator是同一个等级。按官方的说法:TypeTool是为那些“偶尔需要创造或修改字体的学生、字体设计爱好者和专业创意人士” 所设计的。PC和Mac。
Fontographer 字体编辑软件曾经的真正王者,因厂商停止开发,被封印多年之后几乎绝迹,直到被FontLab收购了源代码之后,才于近期发布了Mac上的升级版本。由于它最后的更新版本上显示的日期已经是上世纪90年代末了,所以我真心的希望Fontlab能对这个新版本做一个令人耳目一新的重写。它的价格只有FontLab Studio的一半,不过没有试用。PC和Mac平台都可以运行,但最新的版本目前只有Mac用户可以享用。
所有这些软件的运作流程都一样,只是在具体细节、界面以及选项和能力上有所区别。所以你在购买之前要做一些研究——下载并试用一些演示版本,听听用户的评价和争论,然后决定哪个字体编辑软件最适合你。听说有些人的做法是,从TypeTool起步,先判断自己是否真的喜欢字体设计,然后当TypeTool的限制真的成为一个障碍的时候,他们才最后升级到FontLab Studio。
当你有了一款优秀的字体编辑软件之后,你可以有三种不同的基本流程来创建一种字体。
方法1:在纸上绘制
需要的工具:
一支好用的钢笔
白纸
尺子(可选)
Scanner 扫描仪
Adobe Photoshop(或其他类似的图像编辑软件)
ScanFont 字体扫描软件
字体编辑软件
你有艺术天分吗?写得一手的好字?好,拿一支好用的钢笔,一打白纸,开始写你的字母。(别忽视笔的选择。如果你希望你的字体笔画粗重饱满,试试Sharpied(三角帆)的马克笔。如果你想写钢笔书法,那就亮出你的书法钢笔套装。希望笔画纤细而微妙,那就挑一支尖细的精确钢笔来写。)字写大一些,以便于获得更多的细节。所有字母的高度尽可能一致(可能需要你先用铅笔在纸上打好格线)。好的字体是一套完整的字符集,所以别漏掉了什么——比如说标点符号,波浪线,重音符号,圆括号和方括号以及数字。你可能还想包括一些罕见的字符,比如古英语和古欧洲语系中出现的一些字母。在你落笔之前,可以先在字体编辑软件中创建一个新字体,看看一个字体的标准字母表中包含哪些字符。其中有些字符可能是你从未听说过的,但专业的排印人员可能会希望在你的字体中看到它们。
把你的漂亮作品扫描进Photoshop,然后把图片转为位图格式(不包含灰度的黑白模式)。
差不多了。在FontLab的字体扫描软件ScanFont中打开你的位图。这个很棒的小软件(Mac版本的FontLab Studio中免费附送一套ScanFont——幸运的Mac用户!)允许你导入位图图片,然后转换成字体中的字符。(字体编辑软件只对轮廓进行操作,如Illustrator中所用的基本的矢量线条。扫描仪和Photoshop之类的软件只处理位图。ScanFont则是沟通这两种媒体格式的一座桥梁。)扫描完成后,你可以在ScanFont中保存你的字体,或是从ScanFont拷贝单个字符到FontLab Studio中去,开始你漫长而充满艰辛与乐趣的字体编修工作,直至完美。
方法2:用绘图板绘制
需要的工具:
Wacom Tablet Wacom绘图板
Adobe Illustrator
字体编辑软件
如果你有一块Wacom的绘图板,就可以省却上面的不少步骤,因为你可以在矢量绘图软件中直接绘制你的字体,FontLab Studio支持从Adobe Illustrator中直接复制粘贴矢量数据。
方法3:直接在字体编辑软件中绘制
需要的工具:
鼠标
字体编辑软件
铁手,以及神一般的耐性
我曾经制作了两款字体,完全在FontLab Studio中完成,靠的就是我的鼠标,一只坚定的铁手,以及数量可观的Undo命令。这种方法是绝对可行的,相比在软件之外绘制然后导入的方式,这种方式能够生成更精确的字体。如你所预计的,字体编辑软件中包含着大量的工具相互协作以完成一系列的工作:这些工具可以生成完美的直线和曲线,并有向导辅助你以极高的精度来对齐任何东西。
打造你自己的字体 Ⅱ
MyFonts.com上销售的字体总数已经超过55,000个。现有字体的巨大数量表明了一个事实:我们在设计一个字体时,要面临着近乎无限的选择。有些选择是很基本的,比如说:衬线还是无衬线(当然两者下面都有着大量的子类);手写体还是精确的印刷级字体;宽体还是窄体;粗体还是细体。但除了这些明显的选择之外,还有一些你可能从未听说过的术语:
封闭的、半封闭的还是开放的4?
三笔还是两笔的Y?
有下伸部还是位于基线的J?
双层还是单层架构的g?
双层还是单层架构的a?
交叉的、连接的、还是圆角的W?
你可以多对照一些你喜欢的字体,来理解上面的这些细节区别,或者更多的,比如说——三笔的Y 对你来说更传统一些吗?你的新字体中准备采用这种结构吗?一个有下伸部的J 更适合你的字体吗,或是你决定不让它超出基线?
你可能还有更多需要斟酌的事项:
你的e 中水平横杠的高度
你的*(星号)应该有几瓣?(译注:我对照了一下,4、5、6瓣的都有)
你的# 号的倾角
你的y 和q 有没有尾巴?
如果一开始就陷入这些细节中无法动弹,那你永远无法开始实际的字体设计。但在你动手设计之前,的确应该对它们有所考虑。在字体设计软件之外多花的一点时间,可能会让你在正式设计时避免花费大量的时间来反复的修改或是返工重做字符。
Vertical Metrics 垂直量度
还有一系列需要你把握的决定,比如说垂直量度——决定你字符各种高度的一系列尺寸。下面为你准备了相关的术语:
上沿线,定义小写字母的顶部位置(通常为小写b 的最高点)
大写高度,定义大写字母的高度(通常取大写H 的高度)
x 高度,大部分小写字母的高度,如v 。
基线,字符所“坐”位置的假想线。
下沿线,定义小写字母的底部位置(通常取小写p 的底部)
在开始设计字体之前你必须解决好以下这些与垂直量度有关的问题:
你最高的小写字母的上沿是否会高于大写字母高度?(许多字体都会超过,但并非全部。)
你的x高度应该有多高?(仅仅是把“标准的”x高度提高或者降低一些,就足以产生有趣的效果。)
下沿线应该定义多低?
在为你的字体决定垂直量度时,还有一些基本原则需要考虑。
底部为曲线的字符往往会稍稍低于基线。同样的,顶部为曲线的字符也经常会稍稍的超出标准的x高度或大写高度。
之所以有这些基本原则,是因为这些有曲线的字符如果不稍微的高于或低于那些方形的字符,它们看起来就要稍微小一些。我的意思是,法律并没有规定你一定要遵循这条规则。如果你的字体采用绝对相同的基线和高度时效果更好,那你就这样做。但假如是由于你自己都不清楚是否这样做更好,就给它们定义相同的高度,这实在不是什么好主意。
Horizontal Metrics 水平量度
为字体定义水平量度需要花费你大量的时间。主要的水平量度—kerning/字距调整(下面会详述)—需要你许多个小时的艰难而细致的工作才能完成。(我想你之前一定读过了 Johno关于kerning的文章 了吧?没有?! 你实在应该读的。去吧,我会在这里等你。)不过在我们讨论字距调整之前,我们应该先来想想sidebearing(预留空间,或者更简洁的翻译:“侧架”)。
正确的设置侧架(sidebearing,以下同),能让之后的字距调整更简单,节省你为优化水平量度所花费的大量宝贵时间。
侧架是字符左右预留的空间。上图中,字母U的左右定义了相同的侧架。这是常见的情形,但不是必须的。有时候,侧架可以是一侧是正的而另一侧是负的——这意味着,侧架有可能位于字符之内。
注意 j 的左侧架(LSB),已经是位于字符实际边界之内了——相当于削去了部分的字符。为什么要这样做?好,我们来看看j和其他字母相遇时候的情形。
内部的侧架告诉计算机在渲染j的时候要比标准间距更靠近左边相邻的字符。如果左右的侧架定义成一样的,那么j 和左边邻居之间的空间就变得大而呆板。
字距调整一样能解决这个问题,但如果 j 总是(或经常)要靠近左边相邻的字符,那么定义一个负的侧架能让你减少你字距调整的工作,并且,对于那些不使用字距调整的用户(很不幸,大部分字处理软件中,字距调整选项默认是关闭的),能得到更好的字母间距。
Kerning 字距调整
读完 Johno关于kerning的文章 ,你已经能跟上这些基础课程了吧?下面是关于kerning的一些细节,你作为一个字体设计师应该知道的。
良好的侧架设置就好比拥有一个主教练,他对于比赛有一个很好的总体计划,可以让你的字体在用户不使用字距调整的大多数情况下,也可以得到比较像样的结果。但是在某些具体的场合,为了获得完美的结果,你还必须有一个优秀的进攻协调员在场上组织具体的进攻——那就是字距调整。
在完成侧架设置之后,我喜欢把字体中的字符对打印出来,检查哪些地方出了问题,需要进行字距调整的辅助。实际上,我写了一个脚本来将这些字符对生成一个Open Office 文档,你可以在这里下载这份文档 。然后你就可以在 Open Office 中打开这份文档,选择所有文本,变为你自己的字体之后,打印出来检查。
发现那些有问题的字符对之后,你就得弄脏双手亲自对它们进行修理了。这里是我一个字体的范例,显示了设置了侧架而还未进行字距调整的V-e 配对。注意两个字符中的空隙是多么巨大。
然后是字距调整之后:
我们要做的是让字母自然的从一个流向下一个。我常常会想,字距调整就仿佛是让我的字符们彼此偎依在一起。
在做字距调整的时候要注意的几个问题:
如果你发觉对每一对字符你都要做字距调整,那么很可能是你的侧架设置出了问题。好的侧架设置通常意味着有一部分的字符对已经设置完成,不再需要单独的字距调整。
会有人告诉你,你只需对最常用的字符对做字距调整。比如对于q,你只需要做qu 以及qa 的字距调整,而qz 则不必要—在实际印刷中谁会用到qz 啊?可是我就是一个例外,我坚持为全部的字符对做字距调整,不管那些组合是多么的不可理喻。那些纯粹主义者可能又要晕倒或是吓到呼吸困难了。但我为什么要限制我字体的用户,让他们只有在使用标准字符对的时候才拥有漂亮的字距调整?如果有人想打印qz,那就应当让他们打印出一个漂亮的qz 。
大部分的字体编辑软件都有一个自动字距调整的功能。这是一个好的开端,但明智的做法是,在自动调整之后你还应该亲自进行逐个的检查和调整。没有什么算法能超过人的眼睛。
Scratching the Surface 划破皮肤
到这里为止,我们才刚刚划破皮肤。如果不及时处置的话,就可能会引发“字体狂热症”。我的确希望如此。即便是在从事字体设计这么多年之后,每一次打开FontLab Studio 在其中奋战,都依然会让我学到一点新的东西。
打造你自己的字体 Ⅲ
永远都在寻觅字体设计的灵感。夏天过后,我买了一套便宜的书法钢笔,说服自己,它会让我的鸡爬字产生脱胎换骨的变化。在浪费了一个星期和几打白纸之后,我还是没得到什么有趣的或是有稍微艺术气息的东西。最后,在一天晚上,疲倦而失望的我,在用完了黑色墨水之后,插入了一支红色的笔芯,然后写下了下面这一套字母表——之后它变成了我的 Joules字族 。我想,如果我在这个案例研究中把它如何变成字体的过程写出来,大家也许会感兴趣。
下面是那天晚上我写下的好多张草图之一:
特写:
超级特写:我迫不及待想使用的一个大写A。
从草图到字体
从草图创建Joules字体的过程,一如我之前的 两篇文章中所写的,我将草图扫描输入,下面是扫描稿在Photoshop里面转为黑白位图模式之后的样子。
注意原稿位图中包含的粗糙杂点:
通常,我会把这些位图处理干净之后才导入Fontlab,但这次例外。下面是第一个步骤,将位图导入ScanFont:
在ScanFont中的一个特写:
我把这个新字符复制到FontLab中的正确位置。为了给你体验一下在FontLab中是如何进行调整的,下面放大显示了导入进来的粗糙的A。我选择了一个有问题的部分。
然后开始删去那些令人不快的节点:
在FontLab中调节字符的时候,我们必须在两种诱惑中做一个平衡:一方面要使得轮廓尽量的平滑,另一方面,又应该尽可能的留下一些粗糙的节点,以保留字体的趣味。我发觉,对书法字体而言,不应该平滑掉所有的粗糙节点,在某种程度上,那等于剥夺了它们书法的感觉。
救人危难的字符合成
FontLab的一个便捷之处,是它可以自动的合成字符。本例中我先创建了一个A,然后又建了一个“重音符”:
然后我双击这个“A-重音符”的小格…
…FontLab就创建了一个合成字符:
这时候,如果你编辑这个A或者那个重音符,变化会立即的自动更新到那个合成的“A重音符”上。
侧架
我前面几篇关于字体设计的文章中也提到了,设置合适的侧架是一个重要的步骤。(一个原因是,恰当的侧架会让字距调整变得简单!)先为字符做粗调,我粗略设置了一个很小的、正的侧架。在初始编辑时,这个y的侧架显示如下:
这样设置会有什么问题,在初始字距设置中看a和y的配对就能看出来了。
其实我可以保留这个y的侧架不变,然后在字距配对调整中,调节y靠近a,然后依此类推,在每一个字距配对中都调节y靠近其他的字符。但很明显,为这个y的左侧设置一个负的侧架的做法要更简单,也更明智:
下面就是改进后的留白设置在默认字距调整情况下的样子:
Kerning 字距调整
天,为这个字体设置字距花了我几个小时的时间!其中的烦人细节…我还是放过你好了。但这里还有另外一个字距调整的实例。在调整前是这样的:
调节后:
Ligatures 连字
我在Joules中创建了相当数量的连字,使用者在排版时可以手动选择应用它们。
下面举一个实例说说我是如何创建这些连字的。首先,我们先来看看这个z和a原始的连排效果。
其实我可以在字距配对的时候让它们以一种时髦的方式漂亮的重叠在一起,但更负责的做法还是做一个z-a的连字。第一步,创建一个空白字符,然后把z和a复制进来:
第二步,切开它们的轮廓,让它们能在合适的位置结合:
第三步,删除多余的部分:
第四步,移动字符让它们靠近:
第五步,连接节点:
智能连字
Joules的第一个版本中并没有包含智能连字:这种技术是我最近才学会的。(这意味着 TrueType字体的末日 ,因为智能连字技术必须在 OpenType 字体 中才能实现。)其中的细节我就不唠叨了,但可以告诉你的是,需要在Fontlab中打开一个特殊的OpenType面板,并且通常还要写一些脚本,这样才能在一些能够识别连字的软件中激活你所创建的连字。大体上看起来是这个样子:
完成
这就是经过了无数次修整和字距调整之后的最终结果
⑶ 有关 Android 开发的书籍有哪些
有好多啊以前在远标老师推荐我十本Android开发畅销书籍:
1. 《Android基础教程》本书是一部关于 android开发的基础教程,采用由浅入深、循序渐进的方式讨论android。书中还结合数独游戏等实例更加形象生动地讲解了 android开发的基本流程,且每章最后都有一个 “快速阅读指南 ”,更加方便了读者的阅读。. 本书内容完整丰富,具有较强的通用性,读者都能通过本书快速学习 android开发,提高相关技能。
2. 《Android应用开发揭秘》(累计印刷6次,内容已更新至Android 2.2,版权输出至台湾)这是一本参考手册,内容的完整性和系统性几乎无可挑剔,可作为广大Android开发者的案头必备书;这是一部权威指南,基础知识部分翔实而丰富,高级知识部分深入且饱含最佳实践,能从本质上提升开发者对Android的理解和开发水平。尤为值得一提的是,Android 2.0中新增了大量激动人心的新特性,不仅支持多点触摸设备、软键盘,而且还支持多账户在线管理、蓝牙……作为国内第一本基于Android 2.0的着作,本书可谓极具前瞻性,第一时间将这些新特性完美地呈现给了广大读者。
3. 《Google Android SDK开发范例大全》(09年度畅销榜NO.10)(台湾天珑书局09年超级畅销书)本书以android手机应用程序开发为主题,通过130多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计功力提供了很大的帮助。. 全书共分10章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、使用android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及整合android与aoogle强大的网络服务等内容,随书光盘中包括了所有范例的程序代码。
4. 《Google Android SDK开发范例大全(第2版)》 本书在上一版的基础上,以android手机应用程序开发(采用android sdk 2.1)为主题,通过160多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计功力提供了很大的帮助。全书共分10章,主要以范例集的方式来讲述android的知识点,详细介绍了开发android的人机交互界面、android常用的开发控件、使用android手机收发短信等通信服务、开发android手机的自动服务功能和娱乐多媒体功能以及整合android与aoogle强大的网络服务等内容。随书光盘中包括了所有范例的程序代码。本书讲述由浅入深,由android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合android的初学者和android的进阶程序开发者阅读参考。
5. 《Android/OPhone开发完全讲义》(此书版权已经输出到台湾)推荐这本书有两个原因:一是移动开发的广阔前景,使得越来越多的企业、开发者投入其中。相比iPhone而言,Android平台的开放性以及国内市场的广阔性,使得它更有代表性;二是作者李宁,他写作的理论性和实践性兼备,以及对技术的孜孜追求,使得这本书在Android开发的实战方面很具代表性。也希望读者朋友和我一样能从这本书中获益。
6. 《Android系统原理及开发要点详解》 本书全面介绍开放的移动电话平台android系统,包括android系统中的linux驱动、本地框架、java框架和java应用4个层次。本书内容以知识性内容为纲,重点关注开发要点,各个部分内容注重相互照应,按照清晰的思路向读者介绍整个android系统的原理和开发方法。本书按照android系统的框架和各个子系统的主线,重点介绍开发android应用程序和构建硬件抽象层。其内容涵盖了android应用程序开发和android系统移植构建手机系统两大方面。本书既适合从事android各个层次开发的工程师阅读,也适合通用嵌入式linux系统的学习者使用。
7. 《深入浅出Google Android》(示例生动丰富,理论和实践完美结合)本书是国内最早的android开发团队的集体智慧结晶,真正完全基于android最新的sdk 1.5,内容详实,示例生动丰富,包含大量示例代码,可操作性强。它不仅涵盖了android平台从基础概念到高级应用的所有主题,而且深入浅出地介绍了几种常见的android项目,具有很强的参考价值。特别是在本书的第10、11章重点介绍了android sdk 1.5引入的最为重要的三个特性,即桌面部件、实时文件夹、虚拟键盘与输入法应用的开发方法。.. 通过本书,读者可以迅速掌握android平台来构建应用程序,成为android开发高手,跻身新技术的弄潮儿。
8. 《Google Android开发入门与实战》(09年度畅销榜TOP50)(附赠400分钟高清教学视频,涵盖5大商业案例完整源代码)本书内容上涵盖了用android开发的大部分场景,从android基础介绍、环境搭建、sdk介绍、market使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上,讲解了5个android平台下的完整综合实例及源代码分析,分别是rss阅读器、基于google map的个人gps、豆瓣网(web 2.0)客户端、在线音乐播放器、手机信息查看助手。本书注重对实际动手能力的指导,在遵循技术研发知识体系的严密性同时,在容易产生错误、不易理解的环节配以了翔实的开发情景截图,并将重要的知识点和开发技巧以“小实验”、“小提醒”、“小知识”、“注意”等的活泼形式呈现给读者。在程序实例的讲解方面,主要将实例安插在android开发的精髓知识章节,这为初学者学习与实践结合提供了很好的指导。. 本书配套有400多分钟的全程开发视频光盘,指导读者快速、无障碍地学通android实战开发技术。
9. 《精通Android游戏开发》(将本地PC游戏轻松移植到Android的秘技) 本书讨论如何将pc 上的3d 游戏移植到android 平台。作者从必备的技能和软件工具入手,逐步介绍如何从头构建纯java 游戏,如何混合使用opengl 3d 图形和jni,并以真实的pc游戏wolfenstein 3d和doom为例,介绍如何融合java 的优雅设计和c 的强大功能,使混合游戏达到最佳性能。本书适合熟悉android 平台的开发人员阅读。
10. 《人人都玩开心网:Ext JS+Android+SSH整合开发Web与移动SNS》 本书的主旨为,以开心网为例实现web版和android版的sns应用。本书分为四篇,前三篇主要实现了web版的开心网系统。其中重点介绍了ext js技术,包括ext js的核心组件、对话框、表单组件、布局、数据校验、表格、菜单、树组件等技术。本书的最后一篇实现了android版的开心网,并介绍了与android版开心网相关的技术,包括button、textview、edittext、imageview、gridview等android组件。本书适于以下几类人群:了解传统的web应用程序的开发,希望使用ext js开发web程序的开发人员;了解基本的ext js程序的开发方法,想增加实践经验的开发人员;对ext js感兴趣,想进一步提高ext js开发技能的读者;对android感兴趣,想从事android开发的读者;想开发基于android客户端的c/s程序,但对开发流程不了解的读者。
⑷ 求《android应用案例开发大全第二版》PDF和源码
Google Android SDK开发范例大全,源代码已经增加附件。
⑸ 关于Android开发的一些书籍
Android编程入门教程andbook
andbook是我看到的最简单但最好的Android程序开发入门书籍,内容仅有60多页,图文并茂,如果你从来没有接触过Android开发,也完全可以通过阅读此书了解程序开发过程,甚至对APK程序的基本原理和Android UI界面开发有个清晰的认识,相信你花上几个小时读过后,一定会跃跃欲试加入Android开发行列,心动吧,那就行动吧。。。
Android应用开发详解
Android应用开发详解是一本Android应用开发书籍,既适合Android初学者,也适合具备了一定Android开发经验但需要开发案例的高级读者。 该书分为三个部分,共18章,由浅入深地详细介绍了Android的每个开发细节。 该书基础翔实,实例丰富,案例真实。从基础到案例覆盖了Android应用开发的三大领域:基础应用、网络应用和游戏应用。读者所需要学习的,正是该书描述的。
深入浅出Android–Google手持设备应用程序设计
入门书籍,作者写的很不错,可以在阅读SDK的同时阅读这本书,中间的一些使用介绍的非常清楚,最重要的是中文版的
Google Android应用框架原理与程式设计36技
最早介绍Android的中文书籍,台湾人写的繁体版的,看得有些影响,不过还是值得耐心阅读的
Android A Programmer’s Guide
多个专家写的介绍Android的书籍,内容写的很不错,Ask the Expert部分针对一些问题作了详细的说明
Android Essentials
对Android介绍的比较全面,从安装到开发,应该有新版本了。
Google Android SDK开发范例大全(第2版)
以Android手机应用程序开发(采用AndroidSDK2.1)为主题,通过160多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计功力提供了很大的帮助。
Google Android开发入门与实战
内容上覆盖了用Android开发的大部分场景,从Android基础介绍、环境搭建、SDK介绍、Market使用,到应用剖析、组件介绍、实例演示等方面。从技术实现上,讲解了5个Android平台下的完整综合实例及源代码分析,分别是RSS阅读器、基于Google Map的个人GPS、豆瓣网(Web 2.0)客户端、在线音乐播放器、手机信息助手,为初学者学习与实践结合提供了很好的指导。
Android平台开发之旅
涵盖了Android平台1.5到2.2版本的主要功能特性,立足实际的开发案例,介绍了Android手机平台开发的基础概念、实用技术和应用模式。主要内容包括:平台基础、开发环境搭建、程序框架、高级界面和底层界面设计、文件系统管理、网络通信、无线通信、多媒体编程、个人信息管理、电话系统、数据库应用、XML应用和地图应用。开发实例多达120例。
如何成为Android高手
成为一名真正的Android 高手必须掌握和遵循的一些准则:
1,学会懒惰
2,精通Android 体系架构、MVC、常见的设计模式、控制反转(IoC)
3,编写可重用、可扩展、可维护、灵活性高的代码
4,高效的编写高效的代码
5,学会至少一门服务器端开发技术
Android开发指南中文版之应用程序框架
Android SDK1.5版的英文开发资料Android Development Guide中应用程序框架部分的翻译PDF文件。
⑹ Android底层开发技术实战详解 第2版 怎么样
Android底层开发技术实战详解 第2版不建议买
Android系统移植和驱动开发强些
⑺ 有哪些android开发技巧
1、android:clipToPadding
意思是控件的绘制区域是否在padding里面。默认为true。如果你设置了此属性值为false,就能实现一个在布局上事半功陪的效果。先看一个效果图。
上图中的ListView顶部默认有一个间距,向上滑动后,间距消失,如下图所示。
如果使用margin或padding,都不能实现这个效果。加一个headerView又显得大材小用,而且过于麻烦。此处的clipToPadding配合paddingTop效果就刚刚好。
同样,还有另外一个属性也很神奇:android:clipChildren,具体请参考:【Android】神奇的android:clipChildren属性
2、match_parent和wrap_content
按理说这两个属性一目了然,一个是填充布局空间适应父控件,一个是适应自身内容大小。但如果在列表如ListView中,用错了问题就大了。ListView中的getView方法需要计算列表条目,那就必然需要确定ListView的高度,onMesure才能做测量。如果指定了wrap_content,就等于告诉系统,如果我有一万个条目,你都帮我计算显示出来,然后系统按照你的要求就new了一万个对象出来。那你不悲剧了?先看一个图。
假设现在ListView有8条数据,match_parent需要new出7个对象,而wrap_content则需要8个。这里涉及到View的重用,就不多探讨了。所以这两个属性的设置将决定getView的调用次数。
由此再延伸出另外一个问题:getView被多次调用。
什么叫多次调用?比如position=0它可能调用了几次。看似很诡异吧。GridView和ListView都有可能出现,说不定这个祸首就是wrap_content。说到底是View的布局出现了问题。如果嵌套的View过于复杂,解决方案可以是通过代码测量列表所需要的高度,或者在getView中使用一个小技巧:parent.getChildCount == position
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (parent.getChildCount() == position) {
// does things here
}
return convertView;
}
3、IllegalArgumentException: pointerIndex out of range
出现这个Bug的场景还是很无语的。一开始我用ViewPager + PhotoView(一个开源控件)显示图片,在多点触控放大缩小时就出现了这个问题。一开始我怀疑是PhotoView的bug,找了半天无果。要命的是不知如何try,老是crash。后来才知道是android遗留下来的bug,源码里没对pointer index做检查。改源码重新编译不太可能吧。明知有exception,又不能从根本上解决,如果不让它crash,那就只能try-catch了。解决办法是:自定义一个ViewPager并继承ViewPager。请看以下代码:
/**
* 自定义封装android.support.v4.view.ViewPager,重写onInterceptTouchEvent事件,捕获系统级别异常
*/
public class CustomViewPager extends ViewPager {
public CustomViewPager(Context context) {
this(context, null);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
return super.onInterceptTouchEvent(ev);
} catch (IllegalArgumentException e) {
LogUtil.e(e);
} catch ( e) {
LogUtil.e(e);
}
return false;
}
}
把用到ViewPager的布局文件,替换成CustomViewPager就OK了。
4、ListView中item点击事件无响应
listView的Item点击事件突然无响应,问题一般是在listView中加入了button、checkbox等控件后出现的。这个问题是聚焦冲突造成的。在android里面,点击屏幕之后,点击事件会根据你的布局来进行分配的,当你的listView里面增加了button之后,点击事件第一优先分配给你listView里面的button。所以你的点击Item就失效了,这个时候你就要根据你的需求,是给你的item的最外层layout设置点击事件,还是给你的某个布局元素添加点击事件了。
解决办法:在ListView的根控件中设置(若根控件是LinearLayout, 则在LinearLayout中加入以下属性设置)descendantFocusability属性。
android:descendantFocusability="blocksDescendants"
官方文档也是这样说明。
5、getSupportFragmentManager()和getChildFragmentManager()
有一个需求,Fragment需要嵌套3个Fragment。基本上可以想到用ViewPager实现。开始代码是这样写的:
mViewPager.setAdapter(new CustomizeFragmentPagerAdapter(getActivity().getSupportFragmentManager(), subFragmentList));
导致的问题是嵌套的Fragment有时会莫名其妙不显示。开始根本不知道问题出现在哪,当你不知道问题的原因时,去解决这个问题显然比较麻烦。经过一次又一次的寻寻觅觅,终于在stackoverflow上看到了同样的提问。说是用getChildFragmentManager()就可以了。真是这么神奇!
mViewPager.setAdapter(new CustomizeFragmentPagerAdapter(getChildFragmentManager, subFragmentList));
让我们看一下这两个有什么区别。首先是getSupportFragmentManager(或者getFragmentManager)的说明:
Return the FragmentManager for interacting with fragments associated with this fragment's activity.
然后是getChildFragmentManager:
Return a private FragmentManager for placing and managing Fragments inside of this Fragment.
Basically, the difference is that Fragment's now have their own internal FragmentManager that can handle Fragments. The child FragmentManager is the one that handles Fragments contained within only the Fragment that it was added to. The other FragmentManager is contained within the entire Activity.
已经说得比较明白了。
6、ScrollView嵌套ListView
这样的设计是不是很奇怪?两个同样会滚动的View居然放到了一起,而且还是嵌套的关系。曾经有一个这样的需求:界面一共有4个区域部分,分别是公司基本信息(logo、名称、法人、地址)、公司简介、公司荣誉、公司口碑列表。每部分内容都需要根据内容自适应高度,不能写死。鄙人首先想到的也是外部用一个ScrollView包围起来。然后把这4部分分别用4个自定义控件封装起来。基本信息和公司简介比较简单,荣誉需要用到RecyclerView和TextView的组合,RecyclerView(当然,用GridView也可以,3列多行的显示)存放荣誉图片,TextView显示荣誉名称。最后一部分口碑列表当然是ListView了。这时候,问题就出来了。需要解决ListView放到ScrollView中的滑动问题和RecyclerView的显示问题(如果RecyclerView的高度没法计算,你是看不到内容的)。
当然,网上已经有类似的提问和解决方案了。
给一个网址:
四种方案解决ScrollView嵌套ListView问题
ListView的情况还比较好解决,优雅的做法无非写一个类继承ListView,然后重写onMeasure方法。
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
ListView可以重写onMeasure解决,RecyclerView重写这个方法是行不通的。
说到底其实计算高度嘛。有两种方式,一种是动态计算RecycleView,然后设置setLayoutParams;另外一种跟ListView的解决方式类似,定义一个类继承LinearLayoutManager或GridLayoutManager(注意:可不是继承RecyclerView),重写onMeasure方法(此方法比较麻烦,此处不表,下次写一篇文章再作介绍)。
动态计算高度如下:
int heightPx = DensityUtil.dip2px(getActivity(), (imageHeight + imageRowHeight) * lines);
MarginLayoutParams mParams = new MarginLayoutParams(LayoutParams.MATCH_PARENT, heightPx);
mParams.setMargins(0, 0, 0, 0);
LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(mParams);
honorImageRecyclerView.setLayoutParams(lParams);
思路是这样的:服务端返回荣誉图片后,由于是3列显示的方式,只需要计算需要显示几行,然后给定行间距和图片的高度,再设置setLayoutParams就行了。
int lines = (int) Math.ceil(totalImages / 3d);
至此,这个奇怪的需求得到了解决。
可是在滑动的时候,感觉出现卡顿的现象。聪明的你肯定想到是滑动冲突了。应该是ScrollView的滑动干扰到了ListView的滑动。怎么办呢?能不能禁掉ScrollView的滑动?
网络一下,你肯定能搜索到答案的。先上代码:
/**
* @author Leo
*
* Created in 2015-9-12
* 拦截ScrollView滑动事件
*/
public class CustomScrollView extends ScrollView {
private int downY;
private int touchSlop;
public CustomScrollView(Context context) {
this(context, null);
}
public CustomScrollView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
touchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
int action = e.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downY = (int) e.getRawY();
break;
case MotionEvent.ACTION_MOVE:
int moveY = (int) e.getRawY();
if (Math.abs(moveY - downY) > touchSlop) {
return true;
}
}
return super.onInterceptTouchEvent(e);
}
}
只要理解了getScaledTouchSlop()这个方法就好办了。这个方法的注释是:Distance in pixels a touch can wander before we think the user is scrolling。说这是一个距离,表示滑动的时候,手的移动要大于这个距离才开始移动控件,如果小于此距离就不触发移动。
看似很完美了。
但是还有另外一个问题:我每次加载这个界面花的时间太长了,每次由其它界面启动这个界面时,都要卡上1~2秒,而且因手机性能时间不等。并不是由于网络请求,取数据由子线程做,跟UI线程毫无关系。这样的体验自己看了都很不爽。
几天过去了,还是那样。马上要给老板演示了。这样的体验要被骂十次呀。
难道跟ScrollView的嵌套有关?
好吧,那我重构代码。不用ScrollView了。直接用一个ListView,然后add一个headerView存放其它内容。因为控件封装得还算好,没改多少布局就OK了,一运行,流畅顺滑,一切迎刃而解!
本来就是这么简单的问题,为什么非得用ScrollView嵌套呢?
stackoverflow早就告诉你了,不要这样嵌套!不要这样嵌套!不要这样嵌套!重要的事情说三遍。
ListView inside ScrollView is not scrolling on Android
当然,从android 5.0 Lollipop开始提供了一种新的API支持嵌入滑动,此时,让像这样的需求也能很好实现。
此处给一个网址,大家有兴趣自行了解,此处不再讨论。
Android NestedScrolling 实战
7、EmojiconTextView的setText(null)
这是开源表情库com.rockerhieu.emojicon中的TextView加强版。相信很多人用到过这个开源工具包。TextView用setText(null)完全没问题。但EmojiconTextView setText(null)后就悲剧了,直接crash,显示的是null pointer。开始我怀疑时这个view没初始化,但并不是。那就调试一下呗。
@Override
public void setText(CharSequence text, BufferType type) {
SpannableStringBuilder builder = new SpannableStringBuilder(text);
EmojiconHandler.addEmojis(getContext(), builder, mEmojiconSize);
super.setText(builder, type);
}
EmojiconTextView中的setText看来没什么问题。点SpannableStringBuilder进去看看,源码原来是这样的:
/**
* Create a new SpannableStringBuilder containing a of the
* specified text, including its spans if any.
*/
public SpannableStringBuilder(CharSequence text) {
this(text, 0, text.length());
}
好吧。问题已经找到了,text.length(),不空指针才怪。
text = text == null ? "" : text;
SpannableStringBuilder builder = new SpannableStringBuilder(text);
加一行判断就行了。
先想到这么多,以后再补充。
⑻ 《第一行代码:Android(第2版)Android》epub下载在线阅读,求百度网盘云资源
《第一行代码:Android(第2版)》(郭霖)电子书网盘下载免费在线阅读
链接:https://pan..com/s/1avd0IkGburAbRxMJwPXLcQ
书名:第一行代码:Android(第2版)
作者:郭霖
豆瓣评分:8.6
出版社:人民邮电出版社
出版年份:2016-12-1
页数:570
内容简介:
本书被广大Android 开发者誉为“Android 学习第一书”。全书系统全面、循序渐进地介绍了Android软件开发的必备知识、经验和技巧。
第2版基于Android 7.0 对第1 版进行了全面更新,将所有知识点都在最新的Android 系统上进行重新适配,使用 全新的Android Studio 开发工具代替之前的Eclipse,并添加了对Material Design、运行时权限、Gradle、RecyclerView、百分比布局、OkHttp、Lambda 表达式等全新知识点的详细讲解。
本书内容通俗易懂,由浅入深,既是Android 初学者的入门必备,也是Android 开发者的进阶首选。
作者简介:
郭霖
Android软件开发工程师。从事Android开发工作6年,有着丰富的项目实战经验,负责及参与开发过多款移动应用与游戏,对Android系统架构及应用层开发有着深入的理解。
2013年3月开始,在CSDN上发表Android技术相关博文,很快获得了大量网友的好评。目前博客访问量已超过500万次,评论超过10000条。荣获CSDN认证专家,并被连续评选为CSDN 2013、2014、2015年度博客之星。
⑼ android开发权威指南 第2版 pdf
我有“Android_开发从入门到精通_IBM.pdf”
android经典开发案例60个(源码类).rar
(第二部分:智能机Android平台操作入门).ppt
视频等
⑽ 求android开发权威指南第二版源码
这个就是了 上传 不容易 多给个 财富值吧,兄弟!