1.如何查看Android studio的环境搭建是否成功

首先在Android studio中的sdk manager查看sdk存放位置,如何打开,同时按shirt+ctrl+鼠标右键,如下图:

然后点击“在此处打开power shell窗口”,便得到下图:

输入cmd,进入该文件夹的命令提示符,再输入adb shell,如上图显示不报错即安装成功。以上为环境搭建成功检测。

2.新建项目与运行

点击file→new→New Protect,如下图,然后点击Basic Activity,一直点击next,

新建项目后,在运行前需要配置模拟机供其运行项目(一般配置一次模拟机可以运行所有项目),否则没有载体,配置模拟机步骤如下:

点击右上角的AVD manager按钮然后点击下图的左下角处Create Virtual,

然后一直点击next,最后模拟机创建成功。模拟机创建成功之后便是运行。

最基本的运行操作有两种,一为run→Run app;二为直接点击右上角绿色三角形按钮

便会出现模拟机,显示内容(如下图)

运行完毕。

3.修改项目内容

由上图可知,这为一个简单的app,仅有text view。下面就来讲解如何修改text view内容。首先点击res→fragment_first.xml,如下图:

然后在右边视角便可以查看该内容,接着修改text view显示有两种方法,右边视图如下:

在右边有三个选项,code对应代码,design对应图形(即显示的结果),split包含以上两者。

方法一:点击code,找到代码中的textview栏,然后找到Android:text=“里面即为显示在模拟机的textview内容。”

方法二:直接修改textview内容

二:文件夹及代码详解

如下图从Android模式更改成Procjct模式

现在来解析外层目录每一个文件夹以及每一个文件:

1..gradle文件与.idea文件

这两个文件夹放置的都是Android studio自动生成的文件。

2.gradle文件夹

Gradle是独立于Android studio运行的,这个文件夹里包含了gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,会根据本地的缓存情况决定是否需要联网下载。Android studio默认没有启用gradle wrapper的方式,如果需要打开,可以点击Android studio导航栏→File→Settings→Build,Execution,Deployment→Gradle,进行配置更改。Gradle是一种构建脚本,用Groovy语言实现,一种类似于java的语言,Gradle可以自动化构建、测试、发布、部署以及更多的软件包或者其他类型的项目,如生成的静态网站、生成的文档或其他任何东西。

3..gitignore文件

这个文件是用来将指定的文件或目录排除在版本之外的

4.build。gradle和settings.gradle文件

build.gradle是项目全局的 构建对象,对应Project对象,而settings.gradle用于指定项目中引入的模块,对应Setting对象。一个AS工程构建的整个过程如下:构建开始时首先会创建一个Setting对象,根据settings.gradle的内容来配置这个Setting对象,通过这个Setting对象来加载Project,include多少个Moudle就会创建多少个Project,根据build.gradle内容配置Project对象。build.gradle一般不需要修改,settings.gradle主要用于加载配置,里面有个”app”,如果改了模块名字,则必须在settings.gradle中声明。

5.gradle.properties

这个是全局的gradle配置文件,在这里配置的属性将会影响到项目中所有的graddle编译脚本。

6.gradlew和gradlew.bat

这两个文件是用来命令行界面中执行graddle命令的,其中gradlew是在Linux或mac系统的,gradlew.bet是window系统中使用的。

7.local.properties

这个文件用于本机中的Android SDK路径,通常内容都是自动生成的,不需要修改,当本机中的SDK位置发生了变化,就将这个文件的路径改成性的位置即可。

三.app文件

1.build文件

系统生成的文件目录,最后生成的apk文件(apk-debug.apk)就在该文件的outputs文件里,里面会有相关文件的大小占比,如下:

2.lib文件

第三方jar包的存放地址,还有so包,如果项目中使用了第三方jar包,需放在这个目录里,放在这个目录的jar包都会被自动添加到构建路径里去。

3..gitignore

这个文件用于将APP板块内的的制定的文件或目录排除在版本之外,作用与外层的.gitignmore相似

4.build.gradle

代码如下图:

第一行的id应用了一个插件,一般有两种值可选:com.android.application表示这是一个应用程序模块,com.android.library表示和是一个库模块。应用程序模块和库模块的最大区别在于,一个可以直接运行,一个只能作为代码库依附于别的应用程序模块来运行。

往下看是一个大的android闭包,在这个闭包中我们可以配置项目构建的各种属性。Compilesdk是指项目的编译版本,下图为各个sdk对应版本

android闭包里面还有很多小包:

defaultConfig可以更细的进行配置,applicationId用于指定项目的包名,在创建时我们已经指定过包名了,如果需要修改,就是在这里修改的。Minsdk用于指定项目最低兼容的Android版本,这里的21由上图可知为Android5.0.。targetsdk指定的值表示你在该目标版本上已经做过充分的测试,系统将会为你的应用程序启用一些最新的功能和特性。比如说Android 6.0 系统中引入了运行时权限这个功能,如果你将targetSdkVersion 指定成23或者更高,那么系统就会为你的程序启用运行时权限功能,而如果你将targetSdkVersion指定成22,那么就说明你的程序最高只在 Android 5.1系统上做过充分的测试,Android6.0系统中引人的新功能自然就不会启用了。剩下的两个属性都比较简单,versionCode 用于指定项目的版本号,versionName 用于指定项目的版本名,这两个属性在生成安装文件的时候非常重要,我们在后面都会学到。

buildTypes 闭包中用于指定生成安装文件的相关配置,通常只会有两个子闭包,一个是debug,一个是release。debug闭包用于指定生成测试版安装文件的配置,release闭包用于指定生成正式版安装文件的配置。另外, debug 闭包是可以忽略不写的,因此我们看到上面的代码中就只有一个release闭包。下面来看一下release闭包中的具体内容吧,minifyEnabled用于指定是否对项目的代码进行混淆,true表示混淆,false 表示不混淆。proguardFiles 用于指定混淆时使用的规则文件,这里指定了两个文件,第一个proguard-android.txt 是在 Android SDK 目录下的,里面是所有项目通用的混淆规则,第二个 proguard-rules.pro 是在当前项目的根目录下的,里面可以编写当前项目特有的混淆规则。

5.proguard-rules.pro

这个问价可能用于指定项目代码的混淆规则,当代码开发完成后打包安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解者难于阅读。

6.src目录

Src目录包含着三个文件夹:Androidtest, main ,test

先来分析一下Android test和test包,这都是一个测试包,androidTest是整合测试,可以运行在设备或虚拟设备上,需要编译打包为APK在设备上运行,可以实时查看细节

test 是单元测试,运行在本地开发机上,可以脱离Android运行环境,速度快。

再讲一下main包:

里面包含着Java和res和AndroidMainfest.xml。

来说一下AndroidMainfest.xml:

这段代码表示对 HelloWorldActivity这个活动进行注册,没有在AndroidManifest.xml里注册的活动是不能使用的。其中intent-filter里的两行代码非常重要,<action android:name="android.intent.action.MAIN”/>和<category android:name="android.intent.category LAUNCHER"/>表示 HelloWorldActivity是这个项目的主活动,在手机上点击应用图标,首先启动的就是这个活动。

AndroidManifext描述了package中暴露的组件像activity,serveice等,他们各自的实现类,各种能被处理的数据和启动位置。此外还能声明程序中的contentproviers,intentreceivers,还能指定permissions和instrumentation等等。

xmlns:android:定义android的命名空间。

package:指定本应用内java主程序的包名,这里就是com.example.jared.hello了。

application:声明了每一个应用程序的组件及其属性。

android:icon:显而易见表示APP的图标了。

android:label:许可列表。

android:supportsRtl:启用各种RTLAPI来用RTL布局显示应用,这个是android4.2的新特性。     android:theme:android的主题。

activity:android:name表示当前的activity的名字,因为工程为MainActivity,所以这个名字就为这个,之后有新的activity的话,也需要添加才可以使用。

intent-filter:包含了action和 category两种。

action:只有android:name属性,常见的是android.intent.action.MAIN,表示此activity是作为应用程序的入口。

category:android:name属性,常见的是android.intent.category.LAUNCHER,决定应用程序是否显示在程序列表里。

再说一下java

由上图可知,有两个fragment,分别是first和second。那么fragment有什么用呢?

Fragment是Android 3.0 (Honeycomb)被引入的。主要目的是为了给大屏幕(如平板电脑)上更加动态和灵活的UI设计提供支持。由于平板电脑的屏幕比手机的屏幕大很多,因此可用于组合和交换的UI组件的空间更大,利用Fragment实现此类设计的时,就无需管理对视图层次结构的复杂更改。通过将 Activity 布局分成片段,您可以在运行时修改 Activity 的外观,并在由 Activity 管理的返回栈中保留这些更改。如果仅仅只有Activity布局,那是不够的,不仅在手机上有一套布局,同时在平板上还需要设计一套布局,那样维护起来也麻烦,代码上也有一定的冗余,对于APP包的大小也有一定的压力。Fragment的优势是布局在不同设备上的适配。

使用Fragment还有这么几个方面优势:

代码复用。特别适用于模块化的开发,因为一个Fragment可以被多个Activity嵌套,有个共同的业务模块就可以复用了,是模块化UI的良好组件。

Activity用来管理Fragment。Fragment的生命周期是寄托到Activity中,Fragment可以被Attach添加和Detach释放。

可控性。Fragment可以像普通对象那样自由的创建和控制,传递参数更加容易和方便,也不用处理系统相关的事情,显示方式、替换、不管是整体还是部分,都可以做到相应的更改。

Fragments是view controllers,它们包含可测试的,解耦的业务逻辑块,由于Fragments是构建在views之上的,而views很容易实现动画效果,因此Fragments在屏幕切换时具有更好的控制。、

这个是函数重写

再来说一下mainActivity:

由这段代码可以看出,首先Mainactivity继承了AppCompatActivity。

然后再看下onCreate方法,这个是android的一个设计模式ioc,android的架构基本上就是用了这个模式。用户看不到onCreate之前干了什么,只要完成这个函数,并且在里面调用需要调用的东西即可。super.onCreate方法是调用父类的onCreate方法,然后setContentView方法就是为当前的activity引入了一个activity_main的布局。

在此附上查阅资料但与新版代码不一样的解析:

代码如下

package jay.com.example.firstapp;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

}

最后再来讲一下res文件夹:

drawable:存储一些xml文件,-*dpi表示存储分辨率的图片,用于适配不同的屏幕。

主要记录这些背景的参数

Fillcolor是填充颜色

Pathdate是路径数据

Strokewidth是笔划宽度

Strokecolor是笔划颜色

Drawable-v24为前景目录

Width是宽度

height是高度

viewportwidth是窗口宽度

viewportheight是窗口高度

startX/Y,endX/Y是窗口的定位,x、y的开始结束坐标

type是类型(linear是线性布局)

offset是偏移量

filltype是填充类型

剩下的和上面的一样

以下是对该文件里面的一些后缀的解释(分辨率)

-mdpi:320x480

-hdpi:480x800、480x854

-xhdpi:至少960x720

-xxhdpi:1280x720

layout:存储布局文件

mipmap:存储原声图片资源

values:存储app引用的一些值

- colors.xml:  存储了一些color的样式

- dimens.xml:存储了一些公用的dp值

- strings.xml: 存储了引用的string值

- styles.xml:   存储了app需要用到的一些样式

还有上图几个文件夹

Nav_graph.xml为碎片导航布局文件

Colors.xml为色彩编辑文件

Dimens.xml为尺寸编辑文件

Strings.xml为字符文件

Themes.xml为作主题文件

然后land、night、w600dp、w1240dp中的每个xml文件中的dp值斗鱼values目录里面的不一样

然后我们再来详细说一下layout里面的文件:

Fragment first和second类似:

RelativeLayout:相对布局。

xmlns:android定义:android命名空间。

xmlns:tools:tools命名空间,用来预览一些布局属性的添加喝删除后的效果。

android:layout_width:指定了控件的宽度,可选择match_parent,fill_parent,wrap_content,其中match_parent和fill_parent的意思相同,官方更加推荐使用match_parent。match_parent表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小。wrap_content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前控件的大小。

android:layout_height:同上。

Tools:context为工具背景

TextView:android的控件。

android:text:textview显示的内容,这里就是hello world了。

layout constraint Bottom toTop Of:这个为布局约束从下到上

layout constraint End toEnd Of:这个为布局约束端到端

layout_constraintStart_toStartOf:这个为布局约束从开始到开始

layout_constraintTop_toTopOf:这个为布局约束从点到点

<button>为按钮的意思,即为app运行是中间的按钮

解析同上

然后是activity­_main.xml:

大致与上面xml文件类似:

RelativeLayout:相对布局。

xmlns:android定义:android命名空间。

xmlns:tools:tools命名空间,用来预览一些布局属性的添加喝删除后的效果。

android:layout_width:指定了控件的宽度,可选择match_parent,fill_parent,wrap_content,其中match_parent和fill_parent的意思相同,官方更加推荐使用match_parent。match_parent表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小。wrap_content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前控件的大小。

android:layout_height:同上。

android:paddingLeft,android:paddingRight,android:paddingTop,android:paddingBottom:站在父view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。此外还有margin,它是站在自己的角度描述问题,规定自己喝其他的view之间的距离,如果同一级只有一个view,那么它的效果基本上就和padding一样了。

Content.main.xml基本部分也和上面三个xml文件一样,就不一一具体说明了

多了几个部分

app:navGraph:为导航图部分

defaultNavHost:为你默认的导航主机

layout_behavior:为布局行为

以上内容为Android studio的解析

Android studio入门详解相关推荐

  1. Android Studio 插件开发详解一:入门练手

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  2. Android Studio 插件开发详解四:填坑

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  3. Android Studio 插件开发详解三:翻译插件实战

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  4. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  5. Android Studio 版本号详解

    Android Studio 版本号详解 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/69951965 本文出自[赵彦军的博客] ...

  6. 视频教程-Android Studio 开发详解-Android

    Android Studio 开发详解 1999年开始从事开发工作,具备十余年的开发.管理和培训经验. 在无线通信.Android.iOS.HTML5.游戏开发.JavaME.JavaEE.Linux ...

  7. Android Studio 安装详解及安装过程中出现的问题解决方案

    Android Studio 安装详解及安装过程中出现的问题解决方案 一,Android Studio安装包下载, 首先到官网下载,就是去Android Studio中文社区官网下载你的平台需要的安装 ...

  8. android组件模板,提高效率必备神器 ---- Android Studio模板详解

    原标题:提高效率必备神器 ---- Android Studio模板详解 Android Studio模板大家应该很熟悉,你新建一个project或者module的时候,AS会帮你提供几个选项供你选择 ...

  9. Android Studio 分析器详解

    Android  Profiler分为三大模块: cpu.内存 .网络.基本的使用在上一篇文章有讲到.这里详细说一下. 一. CPU分析器CPU Profiler CPU分析器可帮助您实时检查应用程序 ...

最新文章

  1. (转)linux上nginx源码编译安装
  2. python学习实例(5)
  3. android source镜像源_【转载】Celadon快速上路指南Part2:编译Celadon镜像
  4. VUE中 ref $refs 使用详解,扩展到$parent 、$children 的使用
  5. 《构建之法》第十三章学习总结
  6. 我身边的计算机网,电脑在我身边作文700字
  7. 使用result配置结果视图
  8. Java基础-设计模式之-代理模式Proxy
  9. vs2010字符集问题
  10. Android 加密
  11. linux多级菜单脚本教程,Linux下使用readline库编程实现多级CLI菜单
  12. Php生成图片的大小单位是cm,php生成图片缩略图代码类
  13. 如何打开电脑并打开浏览器
  14. python创建快捷方式_python创建桌面快捷方式的代码详解
  15. 数据库-mysql的配置
  16. 2 pygraphviz在windows10 64位下的安装问题(反斜杠的血案)
  17. 谷歌不想再赚吆喝 联手传媒公司豪赌YouTube
  18. 高音质游戏无线蓝牙耳机推荐,低延迟吃鸡王者兼容无压力
  19. 公安情报研判系统开发,情指勤一体化平台建设方案
  20. 一种简单的封装VP8/VP9视频的容器:IVF格式

热门文章

  1. 公交行业CPU卡总结(发卡,消费,充值)
  2. CaysnPrinter - Windows平台开发包打印示例程序及接口说明文档 - 20170531
  3. 架构:多源异构数据。
  4. Linux安装Jenkins(Java11最新版)
  5. MVC与MTV的理解与区别
  6. 西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开
  7. vue在日历表上面创建事件_如何在R中创建颜色编码的日历
  8. 技术干货|昇思MindSpore NLP模型迁移之Bert模型—文本匹配任务(二):训练和评估
  9. 基于OpenCV的车牌识别的设计与实现
  10. 【python3】python实现多线程(简单操作)