声明
生命壹号: http://www.cnblogs.com/smyhvae/
系列
第一次使用 Android Studio 时你应该知道的一切配置
第一次使用 Android Studio 时你应该知道的一切配置(二): 新建一个属于自己的工程并安装 Genymotion 模拟器
第一次使用 Android Studio 时你应该知道的一切配置(三):gradle 项目构建
正文
都说了放假不休息, 奏是这么任性!!!
开发环境
物理机版本: Win7 旗舰版(64 位)
Android Studio 版本: 1.1 正式版
一新建工程:
1 新建一个 Project:
打开 Android Studio, 新建一个 Project, 界面如下:
上图中, 设置好工程名和路径之后, 接下来可以一路 next:
二 Android Studio 使用方法;
1 修改项目结构视图:
Project 新建完了以后, 默认的结构如下:
上图可以看到, AS 的目录结构和 Eclipse 中有很大区别, 我们看下面的这张表格就一目了然了:
当然了, 如果想切换成和 Eclipse 中类似的视图, 点击左上角进行切换视图就行了:
切换之后, 视图如下:
上图中, 箭头处的 app 其实是一个 module, 关于 module 的概念, 稍后会有解释哦
2 工具栏的常用功能:
在 AS 的工具栏有几个常用的按钮, 分别是 Gradle 同步 AVD ManagerSDK ManagerDDMS, 如下图所示:
解释如下:
Gradle 同步: 在你项目运行或者更改 Gradle 配置的时候都要点击下这个按钮, 会下载相应的依赖
AVD Manager: 模拟器管理
SDK Manager: 就是管理你的 SDK 版本
DDMS: 即 Dalvik Debug Monitor Service,Dalvik 调试监控服务
3 导入第三方 jar 包:
eclipse 中导入 jar 包是先将 jar 包复制到工程文件中, 然后 add to build path, 但是在 Android studio 中可不是这样的在 Android studio 中导入 jar 包的方法是:(以谷歌的 gjson.jar 为例)
将 gson-2.3.jar 文件拷贝到工程文件的 libs 目录下:
导入之后, 选中 jar 包, 然后点击下图中箭头处的按钮:(synchronize: 同步, 可以理解为刷新)
搞定
4 修改默认 Activity 继承 AppCompatActivity:
在 Android Studio 2.1 中新建 Activity 默认继承 AppCompatActivity, 感觉这点十分不爽 (老版本的 AS 不会出现这种情况) 找了很久, 终于发现在 Android Studio 安装目录下有个模板文件, 修改其中的参数即可
具体操作可以参考下面这篇博文:
Android Studio 修改默认 Activity 继承 AppCompatActivity
三安装 genymotion 模拟器:
1Genymotion 的安装:
Genymotion 无疑是目前最快最好用的模拟器官网下载地址: https://www.genymotion.com/
先注册, 然后下载, 安装 VirtualBox 最简单的方式就是下载包含 VirtualBox 的 Genymotion 包, 如下图红框部分所示:
下载完成后, 开始安装然后运行 Genymotion 软件, 会提示你需要创建虚拟设备, 点击 yes 按钮开始创建虚拟设备:
使用之前注册的账号进行连接:
然后选择其中一个版本的模拟器:
当然了, 如果要在模拟器上运行程序, 还要确保模拟器加载了 Android SDK:
备注: 如果启动模拟器时出现下面的错误:
升级电脑显卡驱动就行了
这样, 我们的模拟器就建好了, 并且可以启动起来接下来要将模拟器和 Android Studio 相关联
2 将模拟器 Genymotion 和 Android Studio 相关联:
Genymotion 官网提示有两种方法(如下图所示), 一种是在线安装, 另一种是离线安装方法已经很清楚了, 我就不截屏演示了哈
插件安装好之后, 紧接着重启软件, 让新加载的插件生效重启软件 Android Studio 后, 选择菜单栏 View--Toolbar, 让工具栏显示出来, 可以看到工具栏多了个 Genymotion Device Manager 的图标:
点击这个图标, 弹出如下界面:
上图中, 加载我们之前安装好的 Genymotion 文件夹即可然后再点击这个图标, 弹出如下界面:
大功告成
紧接着, 在模拟器上运行这个程序:
运行效果如下:
上图中, 可以看到, 我编译的版本是 API 19, 但模拟器的版本是 API 16, 但是程序依然可以运行, 说明 Android Studio 在版本的兼容问题上做的很好但是之前用 IntelliJ IDEA, 就必须要求编译的版本和模拟器 (真机) 的版本要保持一致
四新建一个 module 形式的第三方 library:(引入 module 的概念)
再来看一下这张表:
看完图, 应该知道 module 的概念了吧细心的小伙伴可以发现, application 的 module 的有一个手机图标:
1 新建一个 module 作为 library:(以 StickyScrollViewItems 这个 Library 为例)
注: StickyScrollViewItems 的作用是: 子控件可悬停的 ScrollView(当子控件滚动到页面顶端的时候固定在顶部)
在 AS 中, 我们可以新建一个 module 作为 library 来使用, 操作如下:
上图中, 在当前的 project 中新建一个 module, 然后弹出如下界面:
上图中, 选择 module 的类型为 Android Library, 然后继续:
上图中, 既然这个 module 是一个 libray, 就不需要 Activity 了
上图中箭头处的两个 module: 第一个是 application 的 module, 第二个是 lirary 的 module, 可以看到, 他们俩的 icon 图标长得不一样
2 将 GitHub 上下载好的 StickyScrollViewItems-master 压缩包中的部分文件拷贝到 lirary 的 module 中:
操作如下:
(1)将 StickyScrollViewItems-master\StickyScrollViewItems-master\library\res\values 目录下的 attrs.xml 文件拷贝到 lirary 的 module 中的 values 目录下
(2)将 StickyScrollViewItems-master\StickyScrollViewItems-master\library\src\com\emilsjolander\components\StickyScrollViewItems 目录下的 StickyScrollView.java 文件拷贝到 lirary 的 module 中的 java 目录下
最终效果如下:
总结: 新建一个 module 形式的第三方 library 的通用做法是:
(1)新建一个 library 形式的 module, 删掉这个 module 中 src/main 目录里面的所有文件(包括删掉 javaresAndroidManifest.xml)
(2)复制第三方库的 AndroidMainfest.xmlressrc 文件 (夹) 到库目录的 src/main 目录中
(3)将 src/main 目录下的 src 目录重命名 (Shift+F6) 为 java
(4)删除库 module 中的 build.gradle 文件 (注意不要修改错了地方) 中的 dependencies 和 release 模块
3 将 application 的 module 依赖上 library 的 module:
操作如下:
上图中, 右键选中 app, 选择 Open Module Settings, 弹出如下界面:
按照上图的步骤, 在 Dependencies 标签中, 添加 "Module dependency", 弹出如下界面:
上图中, 将 StickyScrollViewItems 的 module 导入一下就行
依赖成功, 于是, 我们在布局文件中是可以看到它的代码提示的:
下面来测试一下
4 测试 library 这个 module 的可用性:
将 activity_main.xml 修改为如下代码:
- <com.smyhvae.stickyscrollview.StickyScrollView
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fadingEdge="none"
- android:overScrollMode="never"
- android:fillViewport="true"
- xmlns:android="http://schemas.android.com/apk/res/android">
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical">
- <View
- android:layout_width="match_parent"
- android:layout_height="200dp"
- android:background="@color/blue"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:background="@color/red"
- android:tag="sticky"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:background="@color/green"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:background="@color/white"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="300dp"
- android:background="@color/purple"/>
- <View
- android:layout_width="match_parent"
- android:layout_height="100dp"
- android:background="@color/yellow"/>
- </LinearLayout>
- </com.smyhvae.stickyscrollview.StickyScrollView>
上方代码中, 我们引入了 StickyScrollView 这个 module 作为 library, 核心代码是第 23 行, 我们为红色的 View 添加了 android:tag="sticky" 这个标签, 于是它将具有悬停的属性然后直接运行程序就行了
这一段的整个工程文件如下:(大家可以导入到自己的 AS 中运行看一下效果)
链接: http://pan.baidu.com/s/1eQ8epsY
密码: k9i1
五删除某个 module:
上图中, 如果我想删掉 StickyScrollView 这个 module, 该怎么办呢? 办法是: 选中 StickyScrollView 这个 module, 并点击右键, 发现没有 delete 选项, 没有关系, 我们选择上图中红框部分的 "Open module Settings" 选项, 弹出如下界面:
上图中, 点击箭头处的减号, 就可以删掉了同时我们要去掉 app 这个 module 对它的依赖:
然后会发现, StickyScrollView 这个 module 的图标消失了:
上图中, 现在右键它, 就可以 delete 掉了, 而且是从硬盘上直接 delete 掉:
六删除文件的小技巧:(安全删除)
如果我们想删掉某个文件, 可以直接右键, 然后 delete, 但是 Android Studio 有一个更人性化的体验比如我想删掉布局文件时:
上图中, 点击 delete 进行删除, 弹出如下界面:
上图中, 如果将红框部分打钩, 然后点击 OK, 软件则会提示你, 有哪些地方用到了这个文件:
上图显示, 有一个地方用到了这个文件, 点击上图中的 "View usages", 就可以看到详细的情况了:
如果你执意要删除, 单击上图中的箭头位置即可, 怎么样? 用户体验还不错吧?
怎么? 还不满意啊? 那我明天继续战斗, 敬请期待~~~
备注:
本人的第四段中, 通过新建一个 module 作为 library, 将 StickyScrollViewItems 这个 Library 引用进来了整个工程文件在第四段的末尾也给出了下载链接, 其中的 gradle 文件代码如下:(gradle 将在下一篇文章中讲到)
application 的 build.gradle:
- // Top-level build file where you can add configuration options common to all sub-projects/modules.
- buildscript {
- repositories {
- jcenter()
- }
- dependencies {
- classpathcom.android.tools.build: gradle: 1.1.0
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
- }
- allprojects {
- repositories {
- jcenter()
- }
- }
app 的 build.gradle:
- apply plugin: com.android.application
- android {
- compileSdkVersion 19
- buildToolsVersion "21.1.1"
- defaultConfig {
- applicationId "com.smyhvae.helloworld"
- minSdkVersion 14
- targetSdkVersion 19
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile(proguard-android.txt), proguard-rules.pro
- }
- }
- }
- dependencies {
- compile fileTree(dir: libs, include: [*.jar])
- compile project(:stickyscrollview)
- }
library 这个 module 的 build.gradle:
- apply plugin: com.android.library
- android {
- compileSdkVersion 19
- buildToolsVersion "21.1.1"
- defaultConfig {
- minSdkVersion 14
- targetSdkVersion 19
- versionCode 1
- versionName "1.0"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile(proguard-android.txt), proguard-rules.pro
- }
- }
- }
- dependencies {
- compile fileTree(dir: libs, include: [*.jar])
- }
来源: http://www.bubuko.com/infodetail-2495956.html