说起Android,我其实在内心是有些微微的向往的。毕竟手机app普及程度很高,犹记大三期间,有次老师在群里招人去和他暑假一起开发Android App,可惜当时我心有余而力不足(沉迷游戏导致学习成绩不行),这就成了我一大遗憾。之后一系列机缘巧合走上了Java程序员之路,依稀记得有人说过Android也是以Java为基础的。实习以及毕业以后,接触的都是web方面的知识。直至这次boss让我开发一个Android App Demo,才算是圆了我的梦。
Android认识:
Android开发其实与web项目还是有些区别的。Android开发中你会发现他每一个页面布局对应一个layout,对这个页面的操作也有一个对应的activity(或者fragment),activity中写到就是各种逻辑操作之类的,和java.class文件差不多。
刚开始进行Android开发你需要对整个项目结构有所了解。
AndroidManifest.xml:是配置程序运行有必要的组件,权限以及一些相关信息。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
//主activity
<action android:name="android.intent.action.MAIN" />
//配置了才会在系统中显示
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//配置高德地图key信息
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="6a29902b8b6ecadefba2e641b13d8d26"/>
<service android:name="com.amap.api.location.APSService"/>
</application>
<!-- 地图包、搜索包需要的基础权限-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
buld.gradle又分为App和project;我们主要用到的是build.gradle(app)这一个,在其中添加依赖
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
关于gradle详见我另一篇blog:https://mp.csdn.net/postedit/83381877
local.properties文件:就如起名,是存放本地文件的地址,如sdk在本机地址。
setting.gradle文件:就是告诉你这个项目中有哪些module。
gradle.properties文件:专门用来配置全局键值对数据的。可用于存放敏感数据。
将它从git版本控制中排除,这样gradle.properties文件只能保留在本地,从而不用担心keystore文件等敏感信息泄漏。
具体使用方法:https://www.jianshu.com/p/9fcfd385027b
gradle-wrapper.properties文件:
gradle wrapper存放在每个项目中的,这样如果有开发者下载项目,然后想要执行构建任务,用wrapper方式,gradle wrapper会自动检测本地是否有指定版本的gradle,如果没有它会自动从网络上下载gradle。
其实就相当于对原生gradle命令包装了一层,相比于传统的maven,这种wrapper模式显得更智能灵活,其实它的实现就是多了一些判断,使得环境配置更加自动化,而不是直接抛出没有某某命令的硬生生的提示。当然我相信maven也可以增加一个maven wrapper。
详见:https://blog.csdn.net/u010221709/article/details/81267029
在这里还要说下res文件夹
res/drawable:一般用来存放图片等资源。ps:在project中查看有时候会发现分为drawable,drawable-hdpi,drawable-v24等不同文件夹,这是因为android studio自动根据图片像素来给你划分存放目录。
res/layout:存放不同的布局文件,类似html,jsp页面。
res/values:在布局中定义控件名字,颜色等属性一般推荐在此目录下建立xml定义,然后在layout中引用。
emmmm,接下来我们就需要对layout的四种布局进行学习了,最常用的其实还是lintlayout和RelativeLayout。
然后在学习android四大组件:Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。
篇幅有限,下次再说吧。