本站支持尊重有效期内的版权/著作权,所有的资源均来自于互联网网友分享或网盘资源,一旦发现资源涉及侵权,将立即删除。希望所有用户一同监督并反馈问题,如有侵权请联系站长或发送邮件到ebook666@outlook.com,本站将立马改正
12万读者的真实阅读体验,CSDN博客专家的力作,基于新版的Android
循序渐进地讲述开发过程中必备的知识,宗旨是不重复开发一个“轮子”,在给大家讲明原理的同时,介绍一些好的开发框架,这些框架能够让读者很快上手开发完成一个应用。
本书前面部分知识点配有相应视频,帮助读者零基础学通Android开发
作者微信答疑,解决读者学习中的困难
本书深入浅出,详细讲解了Android开发的知识,主要内容包括:Android的体系架构、Android Studio、项目的创建、Android工程目录、调试程序、界面的搭建;常用的控件和属性、提示信息Toast和Snackbar、点击事件3种写法等;Activity之间的跳转、Activity生命周期、Activity启动模式等;数据存储、网络编程;图片的处理;复杂控件的使用;Fragment、广播接收者、Service、动画等;以及Android新特性、Kotlin语言、性能优化、屏幕适配、自定义控件、JNI/NDK开发等高级知识。并通过开发一个真实的项目让读者学以致用。
本书内容通俗易懂,比较适合初学者阅读,也可以作为专业人员的工具书,以及大专院校相关专业师生的学习用书和培训学校的教材。
欢迎您阅读这本书
Android已经在短短几年从无到有成为这个□□□□受欢迎的智能手机操作系统。无论您是为公众开发应用程序,还是为自己开发App,都会发现Android是一个令人兴奋和具有挑战性的平台。您会爱上Android开发!
□重要的是,我衷心希望您能找到它对您开发有用的地方。
IT知识本身也许是枯燥的,本书尽量把它讲得幽默点。
本书结构
本书并不像其他的书那样,把所有的知识点堆到一起。这本书循序渐进地讲述开发过程中必备的知识,虽然可能忽略一些很少用的知识,但大家在实际开发过程中就会发现学的已经够用了。本书宗旨是不重复开发一个“轮子”,在给大家讲明白原理的同时会介绍一些高手开发的框架,这些框架能够让大家很快上手开发完成一个应用。
读者对象
本书内容通俗易懂,比较适合初学者阅读,也可以作为专业人员的工具书。学习本书之前您不需要任何的Android基础,但是需要有一定的Java基础(包括数组、运算符、面向对象思想、线程、IO流等),因为大部分Android开发都是使用Java语言的,而本书很少会介绍Java方面的知识。
阅读本书时,您可以根据自身的情况来决定如何阅读,如果没有Android开发基础,建议不要跳过前面的章节。
因为考虑到新手初学时很难入门,所以本书刚开始的部分内容会附赠开发教学视频,帮助读者尽快入门学习。
微信公众号
为了方便大家看到此书勘误,本书提供一个网址:book.520wcf.com。
IT行业技术日新月异,本书将尽快更新□新的知识点。为了方便大家及时收到本书更新提醒,建议大家关注微信公众账号。微信添加公众号搜索likeDev,或者扫码加入:
为了方便交流,可以加QQ交流群:488929846,添加时请输入备注:爱上Android。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
□□章初识Android1
1.1Android是什么1
1.2Android体系架构1
1.3Android发展史4
第2章选择您的开发工具5
2.1准备软件,认识AndroidStudio5
2.1.1什么是AndroidStudio5
2.1.2为什么使用AndroidStudio6
2.2安装AndroidStudio6
2.2.1安装配置要求6
2.2.2下载地址6
2.2.3安装JDK7
2.2.4安装AndroidStudio7
2.2.5设置JDK和AndroidSDK
目录14
2.3项目的创建16
2.3.1创建项目的步骤16
2.3.2解决错误(没有错误□好)19
2.4AndroidStudio界面预览21
2.5常用设置22
2.5.1设置主题22
2.5.2设置字体和格式22
2.5.3设置文件编码24
2.5.4设置快捷键24
2.5.5其他设置26
2.6常用快捷键26
2.7Android工程目录27
2.7.1工程目录介绍27
2.7.2Gradle使用详解28
2.7.3app/build.gradle28
2.8SDK目录介绍30
2.9调试程序31
2.9.1创建模拟器31
2.9.2连接真实手机33
2.9.3Genymotion模拟器34
2.10程序启动分析34
2.11日志和注释36
2.11.1注释37
2.11.2日志37
2.11.3设置AndroidStudio日志
显示颜色38
2.11.4实际开发中控制日志39
2.11.5Logger的使用41
总结42
第3章界面的搭建43
3.1眼见皆View43
3.2布局的搭建方式43
3.3常用的控件和属性44
3.3.1TextView44
3.3.2Button45
3.3.3EditText46
3.3.4ImageView47
3.3.5ProgressBar49
3.4布局的介绍50
3.4.1LinearLayout(线性布局)50
3.4.2RelativeLayout(相对布局)52
3.4.3FrameLayout(帧布局)55
3.4.4GridLayout(网格布局)56
3.4.5CoordinatorLayout58
3.4.6ConstraintLayout(约束
布局)61
3.5提示信息Toast和Snackbar61
3.5.1Toast使用详解61
3.5.2修改Toast位置63
3.5.3自定义Toast布局63
3.5.4避免内存泄露65
3.5.5Snackbar65
3.6点击事件三种写法68
3.6.1通过匿名内部类或内部类
实现68
3.6.2让类实现接口69
3.6.3在布局文件中注册事件70
3.7使用Lambda表达式代替匿名
内部类70
3.7.1什么是lambda呢70
3.7.2使用Lambda表达式71
3.8AlertDialog提示对话框73
3.8.1一般对话框75
3.8.2MaterialDesign风格的
对话框76
3.8.3列表对话框78
3.8.4单选按钮对话框79
3.8.5多选按钮对话框79
3.8.6自定义AlertDialog80
3.9ProgressDialog81
总结83
第4章Activity介绍84
4.1Activity之间的跳转84
4.1.1显示意图84
4.1.2隐式意图86
4.1.3隐式意图的常见操作88
4.1.4IntentFilter匹配规则89
4.2Activity之间传递数据92
4.2.1通过Intent传递数据92
4.2.2静态工厂设计模式传递
数据93
4.2.3返回数据给之前的Activity93
4.3Android6.0权限的管理95
4.3.1Android6.0新的权限机制96
4.3.2申请权限96
4.3.3第三方库RxPermissions100
4.4Activity生命周期101
4.4.1生命周期的方法101
4.4.2Activity销毁时保存数据102
4.4.3锁定横竖屏103
4.4.4开发时注意事项104
4.5Activity任务栈104
4.6Activity启动模式105
4.6.1standard105
4.6.2singleTop106
4.6.3singleTask106
4.6.4singleInstance107
4.6.5统一管理Activity108
4.7Toolbar和NavigationDrawer109
4.7.1AppBar的简介109
4.7.2创建菜单111
4.7.3Toolbar112
4.7.4Toolbar遇上Navigation
Drawer114
4.8主题样式设置118
总结120
第5章数据存储121
5.1SharedPreference121
5.2MD5加密123
5.3文件存储数据124
5.3.1保存到手机内存(Internal
Storage)124
5.3.2SD卡存储(External
Storage)127
5.4SQLite存储132
5.4.1创建数据库132
5.4.2升级数据库135
5.4.3数据库增删改查(CURD)137
5.4.4SQLite数据库的事务操作144
5.5常见的数据库框架146
总结146
第6章网络编程148
6.1HTTP协议148
6.1.1URL简介148
6.1.2HTTP简介149
6.1.3GET和POST对比151
6.2HttpURLConnection151
6.2.1为什么废弃HttpClient151
6.2.2使用HttpURLConnection
联网152
6.3多线程编程154
6.3.1线程的同步和异步154
6.3.2AsycTask158
6.3.3RxJava161
6.4网络请求实例164
6.5JSON解析168
6.5.1使用Android原生方式解析
JSON169
6.5.2Gson的使用170
6.5.3插件GsonFormat快速实现
JavaBean174
6.5.4完成请求实例176
6.6网络请求框架——Retrofit179
6.6.1使用Retrofit179
6.6.2常用的注解181
6.6.3完成请求案例181
6.6.4RxJava和Retrofit结合183
6.7WebView184
6.7.1WebView配置186
6.7.2WebViewClient方法187
6.7.3设置WebChromeClient189
6.7.4WebView常用的方法190
6.7.5WebView模板代码191
总结196
第7章图片的处理197
7.1Bitmap和Drawable197
7.2大图的加载199
7.3图片加水印202
7.4图片特效,Matrix205
7.4.1缩放205
7.4.2倒影、镜面207
7.4.3旋转208
7.4.4位移208
7.5图片颜色处理——打造自己的美图
秀秀209
7.5.1颜色过滤器
ColorMatrixColorFilter209
7.5.2实现图片美化功能210
7.6案例——随手涂鸦214
7.7加载网络图片217
7.7.1网络图片的缓存策略217
7.7.2图片加载库Picasso的使用218
总结219
第8章复杂控件的使用220
8.1ListView220
8.1.1初识ListView221
8.1.2定制ListView条目的界面222
8.1.3优化ListView225
8.1.4ListView的点击事件226
8.1.5ListView常用的属性228
8.2GridView229
8.3RecyclerView231
8.3.1初识RecyclerView231
8.3.2使用RecyclerView232
8.3.3不同的布局排列方式234
8.3.4RecyclerView添加点击
事件236
8.3.5RecyclerView添加删除
数据237
8.3.6下拉刷新
SwipeRefreshLayout237
8.4CardView239
8.5ViewPager241
8.6BottomNavigationView(底部
导航)243
8.7TabLayout246
8.7.1TabLayout使用246
8.7.2TabLayout自定义条目
样式249
总结250
第9章探索Fragment251
9.1使用Fragment252
9.1.1Fragment的生命周期252
9.1.2创建Fragment252
9.1.3向Activity添加Fragment254
9.1.4管理片段256
9.1.5Fragment的向下兼容257
9.2FragmentTabHost实现底部标签257
9.3ViewPager和Fragment结合259
总结273
□□0章广播接收者274
10.1广播简介274
10.2实现一个BroadcastReceiver275
10.3发送自定义广播279
10.4桌面快捷方式283
总结285
□□1章Service介绍286
11.1服务的基本用法286
11.1.1创建服务286
11.1.2启动和停止服务287
11.1.3绑定服务289
11.1.4服务的生命周期292
11.2IntentService292
11.3Service和BroadCastReceiver结合
使用的案例(兼容Android7.0)294
11.3.1Android7.0错误原因297
11.3.2使用FileProvider298
总结300
□□2章动画301
12.1补间动画(TweenAnimation)301
12.2.1AlphaAnimation(透明度
动画)302
12.2.2ScaleAnimation(缩放
动画)304
12.2.3TranslateAnimation(平移
动画)305
12.2.4RotateAnimation(旋转
动画)306
12.2逐帧动画(FrameAnimation)308
12.3属性动画310
总结313
□□3章新特性314
13.1Android7.0分屏开发314
13.1.1如何分屏呢315
13.1.2多窗口生命周期315
13.1.3针对多窗口进行配置316
13.1.4多窗口模式中运行应用
注意事项316
13.1.5在多窗口模式中启动新
Activity317
13.1.6支持拖放318
13.2Android7.0快速设定318
13.3约束布局ConstraintLayout321
13.3.1ConstraintLayout简介321
13.3.2添加约束布局322
13.3.3使用约束布局322
13.3.4添加约束323
13.3.5使用自动连接和约束推断325
13.3.6快速对齐Align326
13.4使用Kotlin语言开发Android326
总结330
□□4章性能优化331
14.1性能检测331
14.1.1检测内存泄露331
14.1.2LeakCanary334
14.1.3追踪内存分配335
14.1.4查询方法执行的时间335
14.2过度绘制(OverDraw)336
14.2.1过度绘制概念336
14.2.2追踪过度绘制336
14.2.3去掉不合理背景337
14.2.4不合理的XML布局对
绘制的影响338
14.3避免ANR338
14.3.1ANR分析339
14.3.2ANR解决方式341
总结341
□□5章屏幕适配342
15.1Android屏幕适配出现的原因342
15.2相关重要概念344
15.2.1屏幕尺寸344
15.2.2屏幕分辨率344
15.2.3屏幕像素密度344
15.2.4屏幕尺寸、分辨率、像素
密度三者关系344
15.2.5dip345
15.2.6sp345
15.3尺寸适配解决方案346
15.3.1“布局”适配346
15.3.2尺寸(size)限定符347
15.3.3□小宽度(Smallest-width)
限定符348
15.3.4使用布局别名349
15.3.5屏幕方向(Orientation)
限定符350
15.3.6“布局组件”匹配352
15.3.7Layout_weight详解352
15.3.8“图片资源”匹配355
15.3.9.9的制作355
15.3.10“用户界面流程”匹配357
15.4屏幕密度适配359
15.4.1“布局控件”适配359
15.4.2百分比布局360
15.4.3约束布局362
总结362
□□6章自定义控件363
16.1自定义控件简介363
16.2View的生命周期364
16.2.1构造函数365
16.2.2onAttachedToWindow369
16.2.3onMeasure370
16.2.4onLayout372
16.2.5onDraw372
16.2.6View更新373
16.2.7动画374
总结374
□□7章JNI/NDK开发375
17.1NDK配置(□新的CMake
方式)375
17.1.1下载376
17.1.2创建项目376
17.1.3运行项目378
17.1.4手动添加native方法379
总结380
□□8章开发一个真实的项目381
18.1项目需求分析381
18.2创建项目382
18.3界面实现383
18.3.1启动界面383
18.3.2引导页面385
18.3.3主界面388
18.3.4列表界面390
18.4请求网络395
18.5新闻列表和详情400
18.6完成整个项目409
总结412
毫无疑问,你肯定急于开始学习Android应用程序开发。毕竟,编程对程序员来说吸引力也是很大的。然而,在开始实际编程前,需要先了解Android的系统。
1.1Android是什么
Android,中文名为安卓,直接翻译是机器人的意思,它是Google公司推出的一款开源免费的智能操作系统,不仅限于手机,现在很多终端都在使用Android操作系统,如手表、电视、汽车、平板电脑、微波炉等,如图1-1和图1-2所示。一般而言,还是以手机开发为主,本书也是介绍如何进行手机软件开发。
▲图1-1Android系统的微波炉
▲图1-2Android智能电视
由于Android系统是免费的,所以推广得很快。目前Android手机市场占有率已经超过80%。
1.2Android体系架构
为了更好地理解Android系统是如何工作的,接下来解剖一下Android系统,看看其内部是如何构建的,如图1-3所示。
▲图1-3Android系统架构
Android大致可以分为4层架构、5块区域。图1-3从下到上依次为:
(1)Linux内核层;
(2)系统运行库层;
(3)应用框架层;
(4)应用层。
1.Linux内核层
如图1-4所示,Android系统是基于Linux2.6内核的,这一层为Android的各种硬件提供了驱动程序,如显示驱动、照相机驱动、声音驱动、电池管理等。当手机开机的时候,这一层肯定先运行。
▲图1-4Linux内核层
2.系统运行库层
如图1-5所示,这一层通过一些C或者C++库为Android系统提供了主要的特性支持。如Webkit提供了浏览器支持(保证手机能够正常使用浏览器),SQLite库提供了数据库的支持(可以用来存储一些数据),OpenGLES库提供了3D绘图的支持等。
这一层还有Android运行时库,它主要提供了一些核心库,能够允许开发者使用Java语言编写Android应用。另外,Android运行时库中还包含了Dalvik虚拟机(Android5.0系统以后替换成了ART虚拟机),因为Java语言的特性决定它只能通过虚拟机去运行,这个有点像我们在电脑上玩小霸王的游戏需要装模拟器一样。
▲图1-5系统运行库层
无论是Dalvik虚拟机还是ART虚拟机,都是专门为移动设备定制的,它针对手机内存、CPU性能有限等情况,ART虚拟机安装程序时间稍微长一点,但是运行程序快一点。Google工程师□终决定用ART虚拟机(这点毋容置疑,没人愿意天天装程序)。
不管是Dalvik虚拟机还是ART虚拟机,都要比Java语言官方本身的JVM虚拟机要好用。当然□主要的原因是版权问题,虽然Java语言本身是开源免费的,但是JVM虚拟机不是开源免费的,所以不能直接用JVM虚拟机。
3.应用框架层
如图1-6所示,这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过这些API构建自己的应用程序。这层的使用频率要比上面介绍的两层使用频率高。
▲图1-6应用框架层
####4.应用层如图1-7所示,所有安装到手机上的应用都属于这一层,例如系统自带的联系人、短信等程序,或者是自己下载的一些应用、游戏,肯定也会包括自己写的程序。
▲图1-7应用层
应用层和应用框架层大部分都是采用Java代码编写的,Linux内核层和系统运行库层大部分采用C或者C++编写。
计算机语言核心就是0和1,理论上用一个电闸都能编程,闭合就是1,打开就是0,一开一闭程序就运行了,估计干这行的肯定瞧不上做C开发的。编程语言不分好坏,只是功能划分不一样。千万不要和资深程序员争论哪门编程语言好,他们眼中只有0或者1,基本上他能说的让你高山仰止。
1.3Android发展史
Android从2008年发布1.0至今已经发布了20多个版本了,目前□新版本是Android8,每一个系统版本都对应一个开发的API版本号,如Android5.1对应API版本号21。每一个Android版本还都有一个代号,包括甜甜圈、姜饼、三明治、果冻豆、棒棒糖等。
如图1-8所示,表中□右面一栏就是当前版本的市场份额,可以发现Android4.4是当前□流行的版本,Android5.0以上的会越来越多,而Android4.1以下的手机基本上没有了,Android7.0还不到百分之一。所以本书重点讲解Android5.0~7.1的知识,兼容到Android4.1。
数据来源Android官网
▲图1-8Android各个版本市场占有率
好了,Android基本信息就介绍到这,接下进入真正的Android开发之旅。
……
于连林,CSDN博客专家,从事Android开发和教育多年,做过很多个项目,包括办公类,O2O等类型,曾在培训机构从事Android教育,有上千课时讲课经验,收到过许多好评。