㈠ java的自学过程中怎么能有个清晰的学习路线
Java是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于Java,对C++等其他程序设计语言也一样管用。有编程高手认为,Java也好C也好没什么分别,拿来就用。为什么他们能达到如此境界?我想是因为编程语言之间有共通之处,领会了编程的精髓,自然能够做到一通百通。如何学习程序设计理所当然也有许多共通的地方。
学习路线图可以看看动力节点的,比较清晰,专业性也比较强。下面说说java具体如何学习。
1.1 培养兴趣
兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话,你会活的很累,也太对不起自己了。多关心一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但人要是没有了梦想,你觉得有味道吗?可能像许多深圳本地农民一样,打打麻将,喝喝功夫茶,拜拜财神爷;每个月就有几万十几万甚至更多的进帐,凭空多出个"食利阶层"。你认为,这样有味道吗?有空多到一些程序员论坛转转,你会发现,他们其实很乐观幽默,时不时会冒出智慧的火花。
1.2 慎选程序设计语言
男怕入错行,女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事,它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落。
如果你对硬件比较感兴趣,你可以学习C语言/汇编语言,进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉,你可以在C/C++等之上多花时间,以期进入电信软件开发领域。如果你对操作系统比较熟悉,你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。
如果你想介入到应用范围最广泛的应用软件开发(包括电子商务电子政务系统)的话,你可以选择J2EE或.NET,甚至LAMP组合。每个领域要求的背景知识不一样。做应用软件需要对数据库等很熟悉。总之,你需要根据自己的特点来选择合适你的编程语言。
1.3 要脚踏实地,快餐式的学习不可取
欲速则不达,浮躁是现代人最普遍的心态,能怪谁?也许是贫穷落后了这么多年的缘故。现在的软件公司、客户、政府、学校、培训机构等等到处弥漫着浮躁之气。就拿我比较熟悉的大连大工IT职业培训来说吧,居然打广告宣称"20多年的计算机职业教育,辽宁省十佳学校",殊不知中国计算机发展才几年,软件发展才几年,居然去报名的学生不少,简直是藐视天下程序员。培训出来的“程序员”大多不知道OO,OP为何物?社会环境如是,我们不能改变,只能改变自己,闹市中的安宁,弥足珍贵。许多初学者C++/Java没开始学,立马使用VC/JBuilder,会使用VC/JBuilder开发一个Hello World程序,就忙不迭的向世界宣告,"我会软件开发了",简历上也大言不惭地写上"精通VC/Java"。结果到软件公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧起《C++编程思想》《Java编程思想》仔细钻研,早知如此何必当初呀。
"你现在讲究简单方便,你以后的路就长了",好象也是佛经中的劝戒。
1.4 多实践,快实践
彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。
从前,四川边境有两个和尚,一个贫穷,一个有钱。一天,穷和尚对富和尚说:"我打算去南海朝圣,你看怎么样?"富和尚说:"这里离南海有几千里远,你靠什么去呢?"穷和尚说:"我只要一个水钵,一个饭碗就够了。"富和尚为难地说:"几年前我就打算买条船去南海,可至今没去成,你还是别去吧!" 一年以后,富和尚还在为租赁船只筹钱,穷和尚却已经从南海朝圣回来了。
这个故事可解读为:任何事情,一旦考虑好了,就要马上上路,不要等到准备周全之后,再去干事情。假如事情准备考虑周全了再上路的话,别人恐怕捷足先登了。软件开发是一门工程学科,注重的就是实践,"君子动口不动手"对软件开发人员来讲根本就是错误的,他们提倡"动手至上",但别害怕,他们大多温文尔雅,没有暴力倾向,虽然有时候蓬头垢面的一副"比尔盖茨"样。有前辈高人认为,学习编程的秘诀是:编程、编程、再编程,笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要等到你完全理解了才动手敲代码,而是应该在看书的同时敲代码,程序运行的各种情况可以让你更快更牢固的掌握知识点。
1.5 多参考程序代码
程序代码是软件开发最重要的成果之一,其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什么要以悲剧结尾?据说是因为写《仙剑奇侠传》的程序员失恋而安排了这样的结局,他把自己的感觉融入到游戏中,却让众多的仙剑迷扼腕叹息。
多多参考代码例子,对Java而言有参考文献[4.3],有API类的源代码(JDK安装目录下的src.zip文件),也可以研究一些开源的软件或框架。
1.6 加强英文阅读能力
对学习编程来说,不要求英语, 但不能一点不会,。最起码像Java API文档(参考文献[4.4])这些东西还是要能看懂的,连猜带懵都可以;旁边再开启一个"金山词霸"。看多了就会越来越熟练。在学Java的同时学习英文,一箭双雕多好。另外好多软件需要到英文网站下载,你要能够找到它们,这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理层,进而可以成为剥削程序员的"周扒皮"。
1.7 万不得已才请教别人
笔者在Martix与Java论坛的在线辅导系统中解决学生问题时发现,大部分的问题学生稍做思考就可以解决。请教别人之前,你应该先回答如下几个问题。
你是否在google中搜索了问题的解决办法?
你是否查看了Java API文档?
你是否查找过相关书籍?
你是否写代码测试过?
如果回答都是"是"的话,而且还没有找到解决办法,再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。
1.8 多读好书
书中自有颜如玉。比尔盖茨是一个饱读群书的人。虽然没有读完大学,但九岁的时候比尔盖茨就已经读完了所有的网络全书,所以他精通天文、历史、地理等等各类学科,可以说比尔?茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富。
笔者在给学生上课的时候经常会给他们推荐书籍,到后来学生实在忍无可忍开始抱怨,"天呐,这么多书到什么时候才能看完了","学软件开发,感觉上了贼船"。这时候,我的回答一般是,"别着急,什么时候带你们去看看我的书房,到现在每月花在技术书籍上的钱400元,这在软件开发人员之中还只能够算是中等的",学生当场晕倒。(注:这一部分学生是刚学软件开发的)
1.9 使用合适的工具
工欲善其事必先利其器。软件开发包含各种各样的活动,需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等等,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了,无招胜有招,手中无剑心中有剑这样的境界几乎不可企及。
2.软件开发学习路线
两千多年的儒家思想孔孟之道,中庸的思想透入骨髓,既不冒进也不保守并非中庸之道,而是找寻学习软件开发的正确路线与规律。
从软件开发人员的生涯规划来讲,我们可以大致分为三个阶段,软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵,不想当架构设计师或项目管理师的程序员也不是好的程序员。我们应该努力往上走。让我们先整理一下开发应用软件需要学习的主要技术。
A.基础理论知识,如操作系统、编译原理、数据结构与算法、计算机原理等,它们并非不重要。如不想成为计算机科学家的话,可以采取"用到的时候再来学"的原则。
B.一门编程语言,现在基本上都是面向对象的语言,Java/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。
C.一种方法学或者说思想,现在基本都是面向对象思想(OOA/OOD/设计模式)。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。
D.一种关系型数据库,ORACLE/SqlServer/DB2/MySQL等等
E.一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。
F.一种UML建模工具,用ROSE/VISIO/钢笔进行建模。
G.一种软件过程,RUP/XP/CMM等等,通过软件过程来组织软件开发的众多活动,使开发流程专业化规范化。当然还有其他的一些软件工程知识。
H.项目管理、体系结构、框架知识。
正确的路线应该是:B→C→E→F→G→H。
还需要补充几点:
1).对于A与C要补充的是,我们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现,更新速度令人眼花燎乱雾里看花;但万变不离其宗,编程理论与编程思想的变化却很慢。掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一,在上面需要多投入时间,给你的回报也会让你惊喜。
2).对于数据库来说是独立学习的,这个时机就由你来决定吧。
3).编程语言作为学习软件开发的主线,而其余的作为辅线。
4).软件工程师着重于B、C、E、D;软件设计师着重于B、C、E、D、F;架构设计师着重于C、F、H。
3.如何学习Java?
3.1 Java学习路线
3.1.1 基础语法及Java原理
基础语法和Java原理是地基,地基不牢靠,犹如沙地上建摩天大厦,是相当危险的。学习Java也是如此,必须要有扎实的基础,你才能在J2EE、J2ME领域游刃有余。参加SCJP(SUN公司认证的Java程序员)考试不失为一个好方法,原因之一是为了对得起你交的1200大洋考试费,你会更努力学习,原因之二是SCJP考试能够让你把基础打得很牢靠,它要求你跟JDK一样熟悉Java基础知识;但是你千万不要认为考过了SCJP就有多了不起,就能够获得软件公司的青睐,就能够获取高薪,这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去,但离实际开发还有很长的一段路要走。
3.1.2 OO思想的领悟
掌握了基础语法和Java程序运行原理后,我们就可以用Java语言实现面向对象的思想了。面向对象,是一种方法学;是独立于语言之外的编程思想;是CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候,你会感到特别的熟悉亲切,学起来像喝凉水这么简单。
使用面向对象的思想进行开发的基本过程是:
●调查收集需求。
●建立用例模型。
●从用例模型中识别分析类及类与类之间的静态动态关系,从而建立分析模型。
●细化分析模型到设计模型。
●用具体的技术去实现。
●测试、部署、总结。
3.1.3 基本API的学习
进行软件开发的时候,并不是什么功能都需要我们去实现,也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现成的类、组件、框架来搭建我们的应用,如SUN公司编写好了众多类实现一些底层功能,以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些类中究竟提供了哪些方法给我们使用?方法的参数个数及类型是?类的构造器需不需要参数?总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写的类该如何使用吧。他们只能提供文档给我们查看,Java DOC文档(参考文献4.4)就是这样的文档,它可以说是程序员与程序员交流的文档。
基本API指的是实现了一些底层功能的类,通用性较强的API,如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查Java DOC文档(参考文献4.4),二是使用JBuilder/Eclipse等IDE的代码提示功能。
3.1.4 特定API的学习
Java介入的领域很广泛,不同的领域有不同的API,没有人熟悉所有的API,对一般人而言只是熟悉工作中要用到的API。如果你做界面开发,那么你需要学习Swing/AWT/SWT等API;如果你进行网络游戏开发,你需要深入了解网络API/多媒体API/2D3D等;如果你做WEB开发,就需要熟悉Servlet等API啦。总之,需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。
3.1.5 开发工具的用法
在学习基础语法与基本的面向对象概念时,从锻炼语言熟练程度的角度考虑,我们推荐使用的工具是Editplus/JCreator+JDK,这时候不要急于上手JBuilder/Eclipse等集成开发环境,以免过于关注IDE的强大功能而分散对Java技术本身的注意力。过了这一阶段你就可以开始熟悉IDE了。
程序员日常工作包括很多活动,编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等,几乎每一项活动都有专门的工具,如果独立使用这些工具的话,你将会很痛苦,你需要在堆满工具的任务栏上不断的切换,效率很低下,也很容易出错。在JBuilder、Eclipse等IDE中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。
从开发效率的角度考虑,使用IDE是必经之路,也是从一个学生到一个职业程序员转变的里程碑。
Java开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种;而Eclipse、JBuilder占有的市场份额是最大的。JBuilder在近几年来一直是Java集成开发环境中的霸主,它是由备受程序员尊敬的Borland公司开发,在硝烟弥漫的Java IDE大战中,以其快速的版本更新击败IBM的Visual Age for Java等而成就一番伟业。IBM在Visual Age for Java上已经无利可图之下,干脆将之贡献给开源社区,成为Eclipse的前身,真所谓"柳暗花明又一村"。浴火重生的Eclipse以其开放式的插件扩展机制、免费开源获得广大程序员(包括几乎所有的骨灰级程序员)的青睐,极具发展潜力。
3.1.6 学习软件工程
对小型项目而言,你可能认为软件工程没太大的必要。随着项目的复杂性越来越高,软件工程的必要性才会体现出来。参见"软件开发学习路线"小节。
3.2学习要点
确立的学习路线之后,我们还需要总结一下Java的学习要点,这些要点在前文多多少少提到过,只是笔者觉得这些地方特别要注意才对它们进行汇总,
㈡ Java学习路线
java的学习内容很多,涵盖较多方面,这里大致分为几个阶段提供给你参考。
一、预科学习:
HTML5:HTML5标签入门、HTML5表格、表单
CSS3:CSS3选择器和简单属性、CSS3定位和布局、CSS3复杂选择器和高级属性
数据库:mysql数据库安装和数据操作、约束和简单查询、复杂查询、数据库设计、oracle的安装与数据操作、oracle与mysql的对比学习
二、JavaSE
Java语言基础、程序逻辑:环境配置和第一个语言程序-HelloWorld 变量运算符 条件和循环 方法和数组
Java面向对象:面向对象入门 面向对象应用_管理系统类 Java常用类、String相关、算法相关 面向对象深入(重载、this、static )继承(重写、super、初始化顺序) 多态(抽象类和接口、final、克隆和比较接口 设计模式、对象和类的生命周期)
API:异常、日志 集合 集合工具类和泛型 IO JDBC基础线程 网络编程 反射 NIO Junit
Java面向对象思想:设计模式 面向对象原则
Java底层理论:集合底层 性能监控工具 反编 JUC
三、Java web
web基础:TOMCAT/WEB程序结构/HTTP协议 Servlet基础入门、servlet作用域(cookie、session、ServletContext)、 Cookie和Session 、Servlet的交互/JSP原理及运用、 JavaBean/EL/JSTL/MVC思想 、JSP+Servlet+JDBC综合练习、Session购物车案例/验证码/防止表单重复提交、监听器过滤器
第三方工具包:连接池、事务、分页、文件上传下载、Dom4j/Log4j/Log back
JavaScript和jQuery框架技术:JS入门和DOM基础 、DOM模型深入 、jQ基础、 jQ操作DOM
MVC动态Web开发技术:自定义MVC框架、DAO框架、前端框架(layUI)
Web开发高级运用:tomcat server服务器配置 、nginx使用、 jetty配置
网络编程:网络原理、HTTP协议基础、Linux操作系统、云服务搭建
四、SSM框架
Spring框架、SpringMVC框架、MyBatis框架:mybatis入门、 配置文件详解和动态sql的使用、 mybatis管理关系映射和延迟加载、 查询缓存和逆向工程 、Spring入门和集成、myBatis SpringMVC入门 、SSM集成、 Spring配置详解 、Spring AOP、 Spring事务配置 、SpringMVC高级功能 、SpringMVC原理
五、前沿技术
高可用、高并发、高扩展:Spring Boot 、缓存 、分布式 、全文索引、 服务中间件、 myCat、 云服务 、人脸识别 、语言识别 、JVM底层+优化
希望能够帮到你!!!
㈢ 麻烦给完整编程
print('\n'.join(input('请输入多种水果名称:').strip().split()))
㈣ 如何调整屏幕密度
1、确定手机的显示density和分辨率
desity翻译成中文的意思是密度,在安卓系统中,desity是一个重要的显示参数。如果density设置不当,如低分辨率用了高density,会使得字体和其他一些UI显示得特别小,甚至影响App兼容。要确定手机的density很简单,使用RE文件管理器,开启system目录下的build.prop,找到“ro.sif.lcd_density=”的参数,后面的数字就是当前的density。
软件名称: RE文件管理器(RootExplorer)
软件版本: 3.3.2
软件大小: 2.38MB
软件授权: 免费
适用平台: android
下载地址: 一键下载 | 普通下载
找到build.prop文件,点击编辑
这一行就是目前的系统density,需要做修改
确定屏幕分辨率就更简单了,自行查询厂商官方数据即可。
2、根据分辨率修改density
前面说到,如果density不对,会造成很多问题,所以修改分辨率前,我们把density变更到对应的数值。以笔者的设备为例。笔者的设备默认分辨率是1080p(1920x1080),density为480。如果要把分辨率修改到720p(1280x720),那么就按照下面的方法计算出需要修改的density数值。
需要修改成的density数值=480/(1080/720)=320
1080p的横向、纵向分辨率是720p的1.5倍,所以density需要除以1.5。如果你是2K分辨率(2560x1440),想要修改成为1080p,那么同理,计算公式如下:
需要修改的density数值=原density数值/(1440/1080)
使用RE文件管理器,编辑build.prop。将“ro.sif.lcd_density=”的参数改写成为需要修改的数值,保存。
3、修改显示分辨率
修改density后,就可以接着修改显示分辨率了,这一步需要用到电脑,下面以Windows PC为例。首先需要安装安卓adb开发包,下载后,按照压缩包里的说明安装。
软件名称: adb工具包
软件版本: 1.0.32
软件大小: 608KB
软件授权: 免费
适用平台: Win2000 WinXP Win2003 Vista Win8 Win7
㈤ 安卓开发的入门书籍大家推荐几本
1、《GoogleAndroidSDK开发范例大全》
《GoogleAndroidSDK开发范例大全》是2010年人民邮电出版社出版的图书。全书共分10章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、使用Android手机收发短信等通信服务。
2、《Android软件安全权威指南》
本书主要介绍Android平台上的软件安全技术。从平台搭建和语言基础开始,循序渐进地讲解了Android平台上的软件攻防技术。本书共12章,系统地讲解了与Android软件安全相关的环境搭建、文件格式、静态分析、动态调试、Hook与注入、软件保护技术、软件壳等多个主题。
3、《Android开发精要》
《Android开发精要》是2012年机械工业出版社出版的图书,作者是范怀宇。该书讲述的是如何才能写出贴近Android设计理念、能够更加高效和可靠运行的Android应用,通过Android的源代码去了解其底层实现细节是最重要的方法之一。
4、《Android应用性能优化》
《Android应用性能优化》是2012年人民邮电出版社出版的图书,作者是[法] Hervé Guihot。本书主要介绍如何快速高效地优化应用,让应用变得稳定高效。
5、《Android应用UI设计模式》
《Android应用UI设计模式》面向Android 4.0+操作系统,是市面上第一本深入解析Android界面设计的佳作。《Android应用UI设计模式》从适用于移动设备和平板的通用模式以及Android UI设计指南出发。
参考资料来源:
网络—《GoogleAndroidSDK开发范例大全》
网络—《Android软件安全权威指南》
网络—《Android开发精要》
网络—《Android应用性能优化》
网络—《Android应用UI设计模式》
㈥ 《Android编程权威指南(第3版)》pdf下载在线阅读,求百度网盘云资源
《Android编程权威指南(第3版)》(比尔·菲利普斯 (Bill Phillips))电子书网盘下载免费在线阅读
资源链接:
链接:https://pan..com/s/1fRrWFkv2DMXxDxO2X_C7-A 密码:a9fu
书名:Android编程权威指南(第3版)
作者:比尔·菲利普斯 (Bill Phillips)
译者:王明发
豆瓣评分:8.6
出版社:人民邮电出版社
出版年份:2017-6
页数:576
内容简介:
Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的Android 编程权威指南。全书共36 章,详细介绍了8 个Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。
第3 版较之前版本增加了对数据绑定等新工具的介绍,同时新增了针对单元测试、辅助功能和MVVM 架构等主题的章节。如果你熟悉Java 语言,或者了解面向对象编程,那就立刻开始Android 编程之旅吧!
作者简介:
作者简介:
Bill Phillips
Big Nerd Ranch资深讲师。他与人合作开发了广受好评的Android训练营培训课程,并为之编写教材(包括本书的第1版和第2版)。Bill一直坚持撰写博客、阅读各类文学作品、作曲奏乐以及着书。
Chris Stewart
Big Nerd Ranch的Android团队主管、Android训练营资深讲师。他致力于不断取得进步和精进技能。工作之余,Chris喜欢远足和旅行。
Kristin Marsicano
Big Nerd Ranch资深讲师、Android开发者。她喜欢分享知识,对学习、软件开发以及二者的交集充满热情。在授课和开发应用之余,Kristin会为家人烹调美食、练习瑜伽或学习新知识。
译者简介:
王明发
毕业于华东理工大学。软件开发及项目管理者,拥有近十年的软件开发及项目管理经验;除了翻译本书前两版之外,另译有《写给大家看的项目管理书(第3版)》。
㈦ 《Android编程权威指南》这本书翻译的怎么样
原书名:Androidprogramming:thebignerdranchguide原出版社:BigNerdRanchGuides作者:(美)BillPhillipsBrianHardy译者:王明发丛书名:图灵程序设计丛书出版社:人民邮电出版社ISBN:9787115346438上架时间:2014-3-18出版日期:2014年4月开本:16开页码:523版次:1-1所属分类:计算机>软件与程序设计>移动开发>Android编辑推荐Amazon榜首畅销书全面覆盖Android开发知识点全真示例、循循善诱、轻松上手内容简介书籍计算机书籍BigNerdRanch是美国一家专业的移动开发技术培训机构,《Android编程权威指南》主要以训练营的5天教学课程为基础,融合了两位作者多年的心得体会,是一本完全面向实战的Android编程权威指南。全书共37章,详细介绍了GeoQuiz、HelloMoon、DragAndDraw等8个Android应用。这些应用的难易程度不一,最复杂的CriminalIntent应用占用了13章的篇幅。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得最前沿的开发经验。如果你熟悉Java语言,或者了解对面向对象编程,那就立刻开始Android编程之旅吧!作译者BillPhillipsBigNerdRanch资深Android讲师、高级软件工程师。他与BrianHardy合作,为BigNerdRanch开发了广受好评的5天Android训练营培训课程。Bill擅长透彻地理解事物的本质,并帮助其他人做到这一点。闲暇时间,Bill喜欢阅读和弹钢琴。BrianHardyBigNerdRanch首席软件工程师、资深讲师。BigNerdRanch的Android、iOS和Ruby培训课程均由Brian设计开发。闲暇时间,Brian喜欢骑自行车和听音乐。目录《Android编程权威指南》第1章Android应用初体验11.1应用基础21.2创建Android项目21.3Eclipse工作区导航51.4用户界面设计61.4.1视图层级结构91.4.2组件属性101.4.3创建字符串资源111.4.4预览界面布局121.5从布局XML到视图对象131.6组件的实际应用151.6.1类包组织导入161.6.2引用组件161.6.3设置监听器171.7使用模拟器运行应用211.8Android编译过程22第2章Android与MVC设计模式262.1创建新类262.2Android与MVC设计模式30↓全部内容译者序2007年,苹果公司发布了革命性的iPhone,自此开启了智能手机的新时代。随后,2008年,谷歌公司和开放手机联盟共同开发并推出了Android智能手机。时至今日,移动智能设备不仅深刻影响了智能手机行业,也改变了整个科技产业以及人们生活的方方面面,在全球掀起巨大的移动浪潮。迎着这股浪潮,国际巨头、创业公司、独立开发者各展身手,奋力搏击,抢登浪潮之巅。苹果一度成了全球市值最高的公司,三星则是卖出了数亿部Android手机。2013年,网络以19亿美元的价格收购了91无线。2014年开春,Facebook更是以190亿美元的天价收购了开发WhatsApp应用仅有50名员工的公司,直接把这股移动浪潮推到了巅峰。豪不夸张地说,所有这一切都离不开移动软件的开发。目前主流的开发平台是苹果的iOS系统和谷歌的Android系统。凭借精美绝伦的UI、流畅顺滑的交互体验,iOS开发在早期抢占了先机。但如今,谷歌在Android系统UI设计及优化方面的前进步伐已赶超苹果在创新方面的进步。越来越多的软件人开始投身Android应用开发阵营。对于业余爱好者来说,Android还是iOS,喜欢谁就选谁。而对于专业开发人员,果粉也好,Android迷也罢,从职业发展及商业利益角度来说,掌握双平台开发是必须的。作为荣获2012Jolt生产力大奖的iOS编程教程的姊妹篇,BigNerdRanch公司再接再厉,推出了这本《Android编程权威指南》。英文版甫一上架立即赢得了Amazon读者的广泛赞誉。本书基于BigNerdRanch公司的Bootcamp教程编写而成。BigNerdRanch创于2001年,是美国一家知名IT培训公司,每年为微软、谷歌、Faceboook等行业巨头培养众多专业人才。而BootCamp在英文中原意为美国海军陆战队新兵训练营,应用于IT培训行业中,意指通过全真IT项目实战,培训出像美国海军陆战队员那样优秀的IT人才。本书适合有一定Java编程经验(至少熟悉Java)并对Android开发感兴趣的读者阅读。本书最大的特点是,从Android应用的基本概念及组成开始介绍直至完成一个复杂实用的谷歌地图应用,作者巧妙地把Android开发所需的庞杂知识、行业实践、编程规范等融入本书,并以一种润物无声的导学方式引领读者轻松完成全书的开发学习。第26章在讲解后台任务和线程时,作者寓教于乐,还精心安排了在鞋店工作的闪电侠案例,既能帮助读者形象地理解复杂抽象概念,又让人印象深刻,难以忘却。类似这样的案例、幽默全书俯拾皆是,还是等读者自己去发掘吧。另外,几乎每章都配有深入学习及难度逐步升级的挑战练习版块。深入学习意在让读者进一步掌握本章关键知识点并指明学习更高级主题的方向;挑战练习能够让读者立即获得练手的机会,通过练习巩固运用所学知识。学完本书,在实际开发中,读者自然而然就会知道该做什么,如何去做以及为什么这样做。最后,感谢图灵各位编辑老师的辛勤工作,尤其感谢李静老师的细心指导,本书及本人都获益良多。更要感谢的是我的clover和千寻,没有他们的宽容、理解与支持,本书译稿不可能完成。虽然我已尽力传达原作本意并保证译稿的较高质量,但有时拼写错误、因版本升级而导致某些内容不再适用,甚至是囿于个人水平而犯错的情况再所难免。如果你发现了问题或有好的建议,请批评指正并不吝电邮提交至[email protected]或反馈至图灵社区。2014年2月28日于上海
㈧ 第一行代码和android编程权威指南哪个好
这里我们给Crime实体类添加两个变量,java.util.Date类型的mDate和布尔类型的mSolved
用于表示陋习记录的时间和是否更改陋习。
public class Crime {
private UUID mUid;
private String mTitle = "";
private Date mDate;
private Boolean Solved = false;
/**省略get set方法*/
同时在布局中也添加一个Button和CheckBox
android:id="@+id/crime_date"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:textSize="20sp"
android:text="@string/submit"
android:background="@drawable/submit"
/>
android:id="@+id/isSolved"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/isSolved"
/>
这边我门再给Button进行背景设置,在res/drawable下面创建submit.xml的安装文件
有关android:state
android 标签描述
android:state_pressed
是否按下,如一个按钮触摸或者点击
android:state_focused是否取得焦点,比如用户选择了一个文本框
android:state_hovered 光标是否悬停
android:state_selected它与focus state并不完全一样,如一个list view
被选中的时候,它里面的各个子组件可能通过方向键,被选中了。
android:state_checkable组件是否能被check。如:RadioButton是可以被check的
android:state_checked被checked了,如:一个RadioButton可以被check了
android:state_enabled能够接受触摸或者点击事件
android:state_activated被激活
android:state_window_focused应用程序是否在前台,当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了
如果有多个item,那么程序将自动从上到下进行匹配,最先匹配的将得到应用
效果如下:点击Button按钮后会显示颜色的变化。但是如果将,屏幕旋转,效果将变化为button横跨整个屏幕,我们希望Button和CheckBox是各占整行的50%
为此我们再添加一个landscape(横向)布局
在res目录下右键,选择Android XML File写入名字,要与原来纵向布局的名字一样。选择纵向的
这样以后你会看到在res 目录下多出一个layout-land目录,表示在横向情况下用该布局文件。修改横向布局,在原来checkBox和Button位置替换为一下代码
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
android:id="@+id/crime_date"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_weight="1"
android:textSize="20sp"
android:text="@string/submit"
android:background="@drawable/submit"
/>
android:id="@+id/isSolved"
android:layout_weight="1"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/isSolved"
/>
书上有个图能够很好的表示android:layout_weight属性。android:layout_weight属性与android:layout:width属性相关(LinearLayout纵向条件下与android:layout:height相关)
如果Button和CheckBox的android:layout_width属性都为wrap_content,则空间分配如下,含有额外的空间(extra
space)然后给Button和CheckBox添加android:layout_weight="1"属性,则会将额外空间按1:1的比例分配给Button和CheckBox如果android:layout_weight比例是2:1(Button 2,CheckBox 1)那么额外空间会按2;1进行分配那么,如果想让Button和CheckBox总的空间分配各占一般怎么办呢?
可以在初始将android:layout_width="0dp",即在一开始不设置宽度,通过android:layout_weight进行空间分配。这样我们完全控制了CrimeFragment在Portrait(纵向)和Landscape(横向)情况下的布局情况。纵向图在上面可以找到
㈨ 安卓开发需要学习什么
学习分三个阶段:
1,Android基础阶段:平台架构特性(JAVA/C) Market/应用程序组件 环境搭建与部署/打包与发布 AVD/DDMS/AAPT 调试与测试 相关资源访问/资源制作 Activity/Service/Broadcast Receiver/Content Provider/原理(生命周期)及深层实现
2,Android进阶初级:组件Widget/ 菜单Menu/ 布局Layout 详解 Xml解析(Pull/Dom/Sax)/JNI 解析SQL数据库原理,。
SQLite /SharedPreferences/File详解 多媒体Audio/Video/Camera 详解
3,Android进阶高级:蓝牙/WIFI SMS/MMS 应用实现 深层次解析GPS原理。
实现LocationManager/LocationProvider 进行定位/跟踪/查找/趋近警告以及Geocoder正逆向编解码等技术细节 2D图形库(Graphics/View)详解 SDCARD/传感器/手势 应用实现
(9)android编程权威指南代码扩展阅读:
知识体系
1、Unix/Linux平台技术:基本命令,Linux下的开发环境
2、企业级数据库技术:SQL语言、SQL语句调优、Oracle数据库技术
3、Java 语言核心技术:Java语言基础、Java面向对象编程、JDK核心API、Java集合框架、Java网络编 程、JavaI/O编程、Java多线程编程、Java异常机制、Java安全、JDBC、XML
4、软件工程和设计模式:软件工程概述、配置管理及SVN、UML、基本设计模式
5、Android应用开发基础:Android开发平台、Eclipse+ADT开发环境、AVD及传感模拟器调试、Android核心组件、Android常用组件、Android高级组件、文件及网络访问、SQLite数据库编程、后台服务编程
6、互联网核心技术: HTML、CSS、JavaScript、JQuery、Ajax应用
7、Android高级应用开发:音频视频摄像头、互联网应用、GPS和位置服务、Google Map、2D3D绘制、传感器开发、游戏开发、电话及SMS服务、网络BluetoothWi-Fi等。
8、Android系统级开发:移植、驱动、NDK(C方向)。
9、JavaEE核心技术:Servlet核心技术、JSP核心技术、Struts、Spring、Hibernate框架。
㈩ Android编程权威指南的目录
第1章Android应用初体验11.1 应用基础21.2 创建Android项目21.3 Eclipse工作区导航51.4 用户界面设计61.4.1 视图层级结构91.4.2 组件属性101.4.3 创建字符串资源111.4.4 预览界面布局121.5 从布局XML到视图对象131.6 组件的实际应用151.6.1 类包组织导入161.6.2 引用组件161.6.3 设置监听器171.7 使用模拟器运行应用211.8 Android编译过程22第2章Android与MVC设计模式262.1 创建新类262.2 Android与MVC设计模式302.3 更新视图层312.4 更新控制层332.5 在设备上运行应用372.5.1 连接设备372.5.2 配置设备用于应用开发382.6 添加图标资源382.6.1 向项目中添加资源392.6.2 在XML文件中引用资源402.7 关于挑战练习412.8 挑战练习一:为TextView添加监听器412.9 挑战练习二:添加后退按钮422.10 挑战练习三:从按钮到图标按钮42第3章Activity的生命周期453.1 日志跟踪理解Activity生命周期463.1.1 输出日志信息463.1.2 使用 LogCat483.2 设备旋转与Activity生命周期523.3 设备旋转前保存数据563.4 再探Activity生命周期573.5 深入学习:测试onSaveInstanceState-(Bundle)方法593.6 深入学习:日志记录的级别与方法60第4章Android应用的调试624.1 DDMS应用调试透视图634.2 异常与栈跟踪644.2.1 诊断应用异常654.2.2 记录栈跟踪日志664.2.3 设置断点684.2.4 使用异常断点714.3 文件浏览器724.4 Android特有的调试工具734.4.1 使用Android Lint734.4.2 R类的问题74第5章第二个activity755.1 创建第二个activity765.1.1 创建新布局775.1.2 创建新的activity子类805.1.3 在manifest配置文件中声明activity815.1.4 为QuizActivity添加cheat按钮825.2 启动activity835.3 activity间的数据传递855.3.1 使用intent extra865.3.2 从子activity获取返回结果885.4 activity的使用与管理925.5 挑战练习95第6章Android SDK版本与兼容966.1 Android SDK版本966.2 Android编程与兼容性问题976.2.1 全新的系统版本——Honeycomb976.2.2 SDK最低版本996.2.3 SDK目标版本996.2.4 SDK编译版本996.2.5 安全添加新版本API中的代码1006.3 使用Android开发者文档1036.4 挑战练习:报告编译版本105第7章UI fragment与fragment 管理器1067.1 UI设计的灵活性需求1077.2 fragment的引入1077.3 着手开发CriminalIntent1087.3.1 创建新项目1107.3.2 fragment与支持库1127.3.3 创建Crime类1137.4 托管UI fragment1157.4.1 fragment的生命周期1157.4.2 托管的两种方式1167.4.3 定义容器视图1167.5 创建UI fragment1177.5.1 定义CrimeFragment的布局1187.5.2 创建CrimeFragment类1197.6 添加UI fragment到FragmentManager1227.6.1 fragment事务1237.6.2 FragmentManager与fragment生命周期1257.7 activity使用fragment的理由1277.8 深入学习:Honeycomb、ICS、Jelly Bean以及更高版本系统上的应用开发127第8章使用布局与组件创建用户界面1288.1 升级Crime类1288.2 更新布局1298.3 生成并使用组件1318.4 深入探讨XML布局属性1328.4.1 样式、主题及主题属性1328.4.2 dp、sp以及屏幕像素密度1338.4.3 Android开发设计原则1348.4.4 布局参数1358.4.5 边距与内边距1358.5 使用图形布局工具1368.5.1 添加新组件1388.5.2 属性视图中编辑组件属性1388.5.3 在框架视图中重新组织组件1398.5.4 更新子组件的布局参数1408.5.5android:layout_weight属性的工作原理1418.5.6 图形布局工具使用总结1428.5.7 组件ID与多种布局1428.6 挑战练习:日期格式化143第9章使用ListFragment显示列表1449.1 更新CriminalIntent应用的模型层1459.2 创建ListFragment1479.3 使用抽象activity托管fragment1499.3.1 通用的fragment托管布局1499.3.2 抽象activity类1509.4 ListFragment、ListView及ArrayAdapter1549.4.1 创建ArrayAdapter<T>类实例1579.4.2 响应列表项的点击事件1599.5 定制列表项1609.5.1 创建列表项布局1609.5.2 创建adapter子类162第10章使用fragment argument16510.1 从fragment中启动activity16510.1.1 附加extra信息16610.1.2 获取extra信息16710.1.3 使用Crime数据更新CrimeFragment视图16710.1.4 直接获取extra信息方式的缺点16910.2 fragment argument16910.2.1 附加argument给fragment16910.2.2 获取argument17010.3 重新加载显示列表项17110.4 通过fragment获取返回结果172第11章使用ViewPager17411.1 创建CrimePagerActivity17511.1.1 以代码的方式定义并产生布局17611.1.2 ViewPager与Pager-Adapter17711.1.3 整合配置并使用CrimePagerActivity17811.1.4 FragmentStatePager-Adapter与Fragment-PagerAdapter18011.2 深入学习:ViewPager的工作原理182第12章对话框18412.1 创建DialogFragment18612.1.1 显示DialogFragment18712.1.2 设置对话框的显示内容18812.2 fragment间的数据传递19012.2.1 传递数据给DatePicker-Fragment19112.2.2 返回数据给CrimeFragment19312.3 挑战练习:更多对话框198第13章使用MediaPlayer播放音频19913.1 添加资源20013.2 定义HelloMoonFragment布局文件20213.3 创建HelloMoonFragment20313.4 使用布局fragment20413.5 音频播放20513.6 挑战练习:暂停音频播放20813.7 深入学习:播放视频20813.8 挑战练习:在HelloMoon应用中播放视频208第14章fragment的保留20914.1 保留fragment实例20914.2 设备旋转与保留的fragment21014.3 保留的fragment:一切都完美了吗21214.4 设备旋转处理与onSaveInstance-State(Bundle)方法21214.5 深入学习:fragment引入前的设备旋转问题214第15章应用本地化21515.1 本地化资源21515.2 配置修饰符21615.2.1 可用资源优先级排定21715.2.2 多重配置修饰符21815.2.3 寻找最匹配的资源21915.3 更多资源使用原则及控制22015.3.1 资源命名22015.3.2 资源目录结构22015.4 测试备选资源221第16章操作栏22316.1 选项菜单22316.1.1 在XML文件中定义选项菜单22516.1.2 创建选项菜单22716.1.3 响应菜单项选择23016.2 实现层级式导航23216.2.1 启用应用图标的导航功能23216.2.2 响应向上按钮23316.3 可选菜单项23616.3.1 创建可选菜单XML文件23616.3.2 切换菜单项标题23716.3.3 “还有个问题”23816.4 挑战练习:用于列表的空视图239第17章存储与加载本地文件24117.1 CriminalIntent应用的数据存取24117.1.1 保存crime数据到JSON文件24217.1.2 从文件中读取crime数据24617.2 挑战练习:使用外部存储24817.3 深入学习:Android文件系统与Java I/O248第18章上下文菜单与上下文操作模式25018.1 定义上下文菜单资源25118.2 实施浮动上下文菜单25118.2.1 创建上下文菜单25118.2.2 为上下文菜单登记视图25218.2.3 响应菜单项选择25318.3 实施上下文操作模式25418.3.1 实现列表视图的多选操作25518.3.2 列表视图中的操作模式回调方法25618.3.3 改变已激活视图的显示背景25818.3.4 实现其他视图的上下文操作模式25918.4 兼容性问题:回退还是复制26018.5 挑战练习:在CrimeFragment视图中删除crime记录26118.6 深入学习:ActionBarSherlock26118.7 挑战练习:使用ActionBarSherlock26318.7.1 CriminalIntent应用中ABS的基本整合26418.7.2 ABS的深度整合26418.7.3 ABS的完全整合265第19章相机I:取景器26619.1 创建Fragment布局26719.2 创建CrimeCameraFragment26919.3 创建CrimeCameraActivity26919.4 使用相机API27119.4.1 打开并释放相机27119.4.2 SurfaceView、Surface-Holder与Surface27219.4.3 确定预览界面大小27619.4.4 启动CrimeCamera-Activity27719.5 深入学习:以命令行的方式运行activity281第20章相机 II:拍摄并处理照片28320.1 拍摄照片28320.1.1 实现相机回调方法28520.1.2 设置图片尺寸大小28820.2 返回数据给CrimeFragment28820.2.1 以接收返回值的方式启动CrimeCameraActivity28920.2.2 在CrimeCameraFragment中设置返回值29020.2.3 在CrimeFragment中获取照片文件名29020.3 更新模型层29120.3.1 新增Photo类29220.3.2 为Crime添加photo属性29320.3.3 设置photo属性29320.4 更新CrimeFragment的视图29420.4.1 添加ImageView组件29520.4.2 图像处理29620.5 在DialogFragment中显示大图片30020.6 挑战练习:Crime照片的显示方向30320.7 挑战练习:删除照片30320.8 深入学习:Android代码的废弃处理303第21章隐式intent30521.1 添加按钮组件30621.2 添加嫌疑人信息至模型层30721.3 使用格式化字符串30821.4 使用隐式intent30921.4.1 典型隐式intent的组成31021.4.2 发送陋习报告31121.4.3 获取联系人信息31321.4.4 检查可以响应的activity31621.5 挑战练习:又一个隐式intent317第22章Master-Detail用户界面31822.1 增加布局灵活性31922.1.1 修改SingleFragment-Activity32022.1.2 创建包含两个fragment容器的布局32022.1.3 使用别名资源32222.2 Activity:fragment的托管者32322.3 深入学习:设备屏幕尺寸的确定331第23章深入学习intent和任务33323.1 创建NerdLauncher项目33323.2 解析隐式intent33423.3 在运行时创建显式intent33723.4 任务与后退栈33823.5 使用NerdLauncher应用作为设备主屏幕34123.6 挑战练习:应用图标与任务重排34123.7 进程与任务341第24章样式与include标签的使用34324.1 创建RemoteControl项目34424.1.1 编码实现RemoteControl-Activity34424.1.2 创建RemoteControl-Fragment34524.2 使用样式消除重复代码34824.3 完善布局定义35024.4 深入学习:使用include与merge标签35324.5 挑战练习:样式的继承354第25章XML Drawable与9-Patches35525.1 XML drawable35625.2 state list drawable35825.3 layer list与inset drawable36025.4 使用9-patch图像362第26章HTTP与后台任务36826.1 创建PhotoGallery应用36926.2 网络连接基本37226.3 使用AsyncTask在后台线程上运行代码37326.4 线程与主线程37526.5 获取Flickr XML数据37726.6 从AsyncTask回到主线程38226.7 深入学习:再探AsyncTask38526.8 挑战练习:分页386第27章Looper、Handler与HandlerThread38727.1 设置GridView以显示图片38727.2 批量下载缩略图39027.3 与主线程通信39027.4 创建并启动后台线程39127.5 Message与message Handler39327.5.1 消息的剖析39327.5.2 Handler的剖析39327.5.3 使用handler39527.5.4 传递handler39727.6 深入学习:AsyncTask与Thread40127.7 挑战练习:预加载以及缓存401第28章搜索40228.1 搜索Flickr网站40228.2 搜索对话框40428.2.1 创建搜索界面40428.2.2 可搜索的activity40628.2.3 物理搜索键40828.2.4 搜索的工作原理40928.2.5 启动模式与新的intent8.2.6 使用shared preferences实现轻量级数据存储41228.3 在Android 3.0以后版本的设备上使用SearchView41428.4 挑战练习416第29章后台服务41729.1 创建IntentService41729.2 服务的作用41929.3 查找最新返回结果42129.4 使用AlarmManager延迟运行服务42229.4.1 PendingIntent42429.4.2 使用PendingIntent管理定时器42429.5 控制定时器42529.6 通知信息42829.7 深入学习:服务细节内容42929.7.1 服务的能与不能43029.7.2 服务的生命周期43029.7.3 non-sticky服务43029.7.4 sticky服务43129.7.5 绑定服务431第30章broadcast Intent43330.1 随设备重启而重启的定时器43330.1.1 配置文件中的broadcast receiver43430.1.2 如何使用receiver43530.2 过滤前台通知消息43630.2.1 发送broadcast intent43730.2.2 动态broadcast receiver43730.2.3 使用私有权限44030.2.4 使用ordered broadcast接收结果44230.3 receiver与长时运行任务446第31章网页浏览44731.1 最后一段Flickr数据44731.2 简单方式:使用隐式intent44831.3 较难方式:使用WebView44931.3.1 使用WebChromeClient优化WebView的显示45331.3.2 处理WebView的设备旋转问题45531.4 深入学习:注入JavaScript对象456第32章定制视图与触摸事件45732.1 创建DragAndDraw项目45732.1.1 创建DragAndDraw-Activity45832.1.2 创建DragAndDraw-Fragment45932.2 创建定制视图46032.3 处理触摸事件46232.4 onDraw(...)方法内的图形绘制46532.5 挑战练习:设备旋转问题467第33章跟踪设备的地理位置46833.1 启动RunTracker项目46833.1.1 创建RunActivity46933.1.2 创建RunFragment47033.2 地理位置与LocationManager47233.3 接收定位数据更新broadcast47433.4 使用定位数据刷新UI显示47533.5 快速定位:最近一次地理位置47933.6 在物理和虚拟设备上测试地理位置定位480第34章使用SQLite本地数据库48234.1 在数据库中存储旅程和地理位置信息48234.2 查询数据库中的旅程列表48834.3 使用CursorAdapter显示旅程列表49034.4 创建新旅程49334.5 管理现有旅程49434.6 挑战练习:识别当前跟踪的旅程500第35章使用Loader加载异步数据50135.1 Loader与LoaderManager50135.2 在RunTracker应用中使用Loader50235.3 加载旅程列表50335.4 加载单个旅程50635.5 加载旅程的最近一次地理位置509第36章使用地图51136.1 添加Maps API给RunTracker应用51136.1.1 使用物理设备测试地图51136.1.2 安装使用Google Play services SDK51136.1.3 获取Google Maps API key51236.1.4 更新RunTracker应用的manifest配置文件51236.2 在地图上显示用户的地理位置51336.3 显示旅程路线51636.4 为旅程添加开始和结束地图标注52036.5 挑战练习:实时数据更新521第37章编后语52237.1 终极挑战52237.2 关于我们52337.3 致谢523