前言
我就是想简单的来此记录一下。
此文章比较适合于具有一定Java基础、移动端开发基础或前端基础人士。或者说是我拥有iOS开发的基础,学习Android开发。
初学Android开发3个月,记录一下学习体会,或者说是分享一下拥有Java基础(移动端开发基础)如何快速掌握Android开发,个人觉得可以首先了解的知识。了解这些我个人认为就可以结合网络各种资料缓慢的进行Android开发了,当然前提是你拥有Java基础或者移动端开发基础以及编程的头脑。
这里先简单粗略描述,后续慢慢细化,毕竟本人不擅于写文章。
我认为掌握好Android开发,需要了解并熟悉这么几点:语法、调试、UI、网络、数据、线程、其他Android特有的功能开发(Service,广播等)、熟悉并了解一些常用的开源框架或jar包运用于项目。
这是我学习过程的目录结构:
第一章:Android快速入门
Android开发环境的搭建相关、Android项目结构的了解、Android Studio的调试及模拟器等
第二章:四大应用组件之Activity
Activity相关相关API、生命周期、布局等
第三章:用户界面(上)
UI的理解、常用UI组件的使用(Button、TextView、EditView、ImageView、ListView...)
第四章:用户界面(下)
常用UI布局的使用(LinearLayout、RelativeLayout、FrameLayout、Fragment...)
第五章:数据存储(上)
sq数据存取、手机内部及外部文件存取、数据模型DAO...
第六章:数据存储(中)
SQLite数据库存储
第七章:数据存储(下)
远程服务器存储、网络请求、下载安装APK、网络请求开源框架Volley、xUtils...
第八章:消息机制与异步任务
Handler、异步的理解、JSON数据解析、JSON与Model、Gson开源框架、动态数据列表、图片缓存...
第九章:事件机制
MotionEvent、KeyEvent、自定义View、View的生命周期...
第一十章:四大应用组件之Service
Service理解及生命周期、AIDL...
第一十一章:四大应用组件之BroadcastReceiver
相关API、发送接收广播、电话监听...
第一十二章:四大应用组件之ContentProvider
第一十三章:动画
缩放、旋转、平移、透明、复合动画...
第一十四章:图像处理
图片的读取和保存、Shape的使用、_Selector+Drawable、_Selector+Shape、_9Patch图片、横竖屏...
第一十五章:碎片
Fragment的相关使用...
准备工作
如果你还未安装Android Studio见Android Studio安装,如果还不会创建Android工程见创建第一个Android工程
开始开发
一.程序入口
首先第一点我们开发程序或者说是在看一个陌生的项目的时候,一般要找的就是程序的入口在哪?或者说我们关心的首先运行的代码在哪?就好像iOS开发我们首先找的就是AppDelegate类在哪。Android程序的入口在哪呢?,见下图:功能清单文件,很显然我们看到了熟悉的application标签,其属性icon、label顾名思义,其中还有多个activity组件(后面提及)属性name:指向MainActivity、FirstActivity类等,重点我们看蓝色框只要该activity组件设置了此配置,则程序可见的第一个界面将从MainActivity开启,即我们关心的程序入口。
既然说到AndroidManifest.xml功能清单文件,那就一并说下设置获取程序相关权限,如网络请求、位置、SD卡、拍照、相册等权限,我们第一次安装某一个APP的时候总会有各种权限提示,其实就是在此设置的,如果不设置程序使用该功能时将crash。如网络请求权限的设置:
<uses-permission android:name="android.permission.INTERNET"/>
二.Android四大应用组件
Activity、Service、BoardCast Receiver、Content Provider。个人认为常规APP基本就用到Activity及Service额外还有一个常用的Intent,如果要深入研究可以各种资料搜索,这里简单说下Activity。
Activity从字面上的意思理解是活动行动的意思,在Android中Activity指与用户交互的界面,从你打开一个Android应用所见到的第一个页面,就是一个Activity,Activity作为一个可见的界面,给用户以良好的体验很重要,所以布局的漂亮与否决定一个应用用户体验。比如下图MainActivity界面启动FirstActivity界面,而界面的布局加载通过setContentView()来指定,如MainActivity的布局文件为activity_main.xml
我们需要了解Activity的生命周期,以便在这一过程中做各种操作。
三.UI及布局
UI是非常重要的一部分,项目绝大多数代码都与之有关。iOS开发、前端开发、各种与界面打过交道的对于UI及布局的掌握将水到渠成,几乎各种都是顾名思义的命名,不同平台偶有不同,如Android和前端的Button,iOS则为UIButton,Android的TextView,iOS则为UILabel等等。如果想直观的查看Android的控件,找到任意一个布局文件打开即可,如图所示,直接拖拽控件至右侧界面即可,如果想了解某个控件的用法,请查看Android源码或文档(找到Android SDK目录下的docs,点击docs下的index.html浏览器打开,如果没有网络搜索),也可各种资料搜索。
这里特变的说下Android的布局方式,如下图红框部分,主要常用的有:FrameLayout、LinearLayout、RelativeLayout、fragment,掌握这4个布局方式足以满足几乎所有需求。通过使用就布局的灵活机动性个人认为比iOS好点,如隐藏一个控件Android可以View.GONE紧邻控件会自动填补空白iOS则还要代码修改约束等等,有一点Android做的是非常好,就是输入框和键盘的位置自适应移动,iOS则麻烦的多。
四.网络及数据
UI及布局都写好了,为了让界面活起来,就需要网络及数据了。Android网络请求如果要了解深一点可以搜索HttpURLConnection加以学习。当然此篇文章目的非如此,我们直接使用github上开源的xUtils3等网络请求框架,非常直观快速的进行网络请求,同时xUtils3上还有许多的工具类如常用的获取手机屏幕宽高、字符串操作、缓存、图片等,非常好用。如何导入或打开其他项目、jar包等见本文下面的第六点。
网络图片的加载框架就非常多了,推荐两个:picasso、glide。
接下来就是json和model的相互转换,首先我们需要一个框架gson(或者搜索gson.jar)和一个插件GsonFormat,也可以直接点击Android Studio菜单File-Plugins搜索GsonFormat安装。gson一行代码便可以将网络请求到的json转换为对应的model,而GsonFormat可以为model快速的生成对应的属性及set、get方法。
五.项目打包apk
点击Build选择Generate Signed APK...
如果之前没有为该项目创建Key store,则Create new,相关填写信息一目了然,最最最重要的是,一定要保存、备份、记住密码等,否则当你过了很久或者下一个人接手打包发现找不到Key store时那就悲剧了,只能重新创建,最蛋疼的是用户安装更新无法覆盖原来的APP!
六.导入或打开其他项目、jar包等
Android开源项目及库整理总结 非常多!
Android Studio导入github上下载下来的一些项目出现一些问题:导入就在下载Gradle或者直接更本就导不进。
导入完整的Github项目,工程相关用于配置整个项目的编译环境和依赖,项目相关就是你的代码和配置文件啦。我们先来看工程相关,他包含下图几个文件夹:
由于现在Gradle还不是太成熟,所以版本更新会比较快,如果当初项目作者使用的是其他版本的Gradle,而你没有,AS就好默认去下载最匹配的Gradle,可偏偏在国内,这个下载奇慢无比,而且Gradle的文件也挺大有50+MB,所以,我们需要修改下配置先:
第一:打开gradle文件夹warpper文件夹,打开gradle-wrapper.properties修改distributionUrl=xxx的连接为你现有成功运行的项目的一样。个版本gradle下载地址http://services.gradle.org/distributions/
第二:点击上图app文件夹,修改项目相关的build.gradle。主要是确保下图红框部分的版本号在AS中已下载,否则AS会花大量时间下载,可修改为你的AS中已下载好的版本号
如果是导入module(工程存在多个module项目,如开源框架xUtils3或其他可以直接运行的app导入后文件夹有手机图标标志)则直接进行第二步修改项目相关的build.gradle。
如果是导入jar包直接导入即可。
待续...