/**
*Title:总结昨天下午至今天上午的学习成果
*Author:zsg
*Date:2017-8-13
/

一、了解Android

  1、Android架构

  Android大致可分为四层架构:Linux内核层、系统运行库层、应用框架层、应用层。

  Linux内核层:各种底层驱动:如蓝牙驱动、WiFi驱动等。

  系统运行库层:为Android系统提供主要的特性支持。如SQLite提供数据库支持。

   应用框架层:各种API。

  应用层:手机上所有应用程序。

  2、Android开发特色

  a、四大组件:

    活动Activity:  看的见的都放在活动

    服务Service:  退出应用依然可以运行

    广播接收器Broadcast Receiver:   接受发送广播消息,比如电话短信

    内容提供器Content Provider:  程序间数据共享

  b、丰富系统组件

  c、SQLite数据库

  d、强大的多媒体

  e、地理位置定位

  。。。。。。  

二、开发环境配置

  1、jdk安装(这个我就不说了,网址在右侧  ,下一步下一步即可,环境变量请敲度娘

  2、开发工具(我用的Android Studio,链接上篇博文底有,自取)

    Android Studio安装:

    Next By Next!

三、新建一个Android项目

  启动AS,第一次会下载SDK(开发包)等一些东西

  

  启动后,界面大致如上图,左侧是博主已经建好的项目,各条目解释如上

  选择Start ......,创建一个新的Android项目

 

选择应用运行平台

选择Activity活动风格

设置活动相关信息

Finish!!!!!

四、运行第一个Android项目

创建模拟器,我这里已经有一个了,没有我们可以点击左下角创建一个

这里有很多设备供我们选择

点击Next,这里可以选择应用的操作系统,这里选择android 7.0

这里对模拟器的配置进行确认,例如名字、分辨率、横竖屏等,我们保持默认,Finish完成创建。

接下来,可以看到模拟器列表中多了一个模拟器

点击右边的三角按钮启动模拟器

模拟器启动了,我们可以随意作。。。。。。

下面我们在模拟器上运行我们的第一个Android程序,在AS工具栏有如下图标,左边的锤子用来编译项目,

中间的选择运行的项目,右边的三角按钮运行项目,我们点击三角按钮,弹出如下的选择框:

可以看到我们刚才创建的模拟器在线,我们选择点击OK,过一会项目就运行到模拟器上了。

五、项目工程目录解析

将项目模式切换成Project

1、.gradel和.idea

  AS自动生成,不用手动编辑

2、app

  代码、资源放在这个目录,开发也是基于这个目录

3、build

  主要包含编译生成的文件

4、gradle

  包含gradle配置文件

5、.gitignore

  指定排除在版本控制之外的目录或文件

6、build.gradle

  项目全局的gradle构建脚本

7、gradle.properties

  项目全局的gradle配置文件

8、gradlew和gradlew.bat

  命令行界面执行gradle命令,gradlew.bat在Windows系统中使用

9、*.iml

  项目自动生成,不用修改其中任何内容

10、local.properties

  制定本机中的SDK路径

11、settings.gradle

  指定项目中所有引用的模块,通常自动完成

app展开目录结构如下:

1、build

  和外层的build类似,包含编译时自动生成的文件

2、libs

  第三方jar包,此目录下的jar包会被自动添加到构建路径里

3、androidTest

  编写Android Test测试用例

4、java

  存放所有Java代码的地方

5、res

  资源目录

  图片放在drawable目录下

  布局放在layout目录下

  字符串放在values目录下

  没有的目录我们可以自行新建

6、AndroidManifest.xml

  整个项目的配置文件,程序中定义的所有四大组件都要在这个文件里注册

7、test

  用来编写Unit Test测试用例

8、.gitignore

  和外层的.gitignore作用类似

9、app.iml

  项目自动生成,不用关心

10、build.gradle

  app模块的gradle构建脚本

11、proguard-rules.pro

  指定项目代码的混淆规则

六、项目怎么运行起来的

打开AndroidManifest.xml,其中存在如下

 <activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

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

下面打开MainActivity这个活动,代码如下:

 public class MainActivity extends AppCompatActivity {

     @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}

首先,MainActivity继承自AppCompatActivity,这是一种向下兼容的Activity.Activity是Android提供的一个活动基类,所有继承它或它子类的活动才能拥有活动的特性,所以我能就知道AppCompatActivity是Activity的子类了。然后可以看到MainActivity中有一个重写的onCreate()方法,这是一个活动被创建必须要执行的方法。其中有两行代码,第一行代表调用父类的onCreate()方法;第二行调用了setContentView()方法,表示给当前活动引入一个叫activity_main的布局。

Android程序的设计讲究逻辑和视图分离,因此不推荐在活动中直接编写界面,接着我们打开布局文件,代码如下:

 <?xml version="1.0" encoding="utf-8"?> <!--指定文件的版本和编码方式-->
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" <!--这两行可理解为语法文件,有提示功能-->
android:layout_width="match_parent"
android:layout_height="match_parent" <!--活动的宽度、高度 match_parent fill_parent填充父类 warp_content 适应内容-->
tools:context="com.example.zhangshuaige.myapplication.MainActivity"> <!--指定渲染的上下文--> <TextView <!--显示文字的控件-->
android:layout_width="wrap_content"
android:layout_height="wrap_content" <!--宽度高度-->
android:text="Hello World!" <!--显示的文本-->
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
/> </android.support.constraint.ConstraintLayout>

好了,第一个Android程序就到这里了,加油。

以上知识主要来自阅读《第一行代码》(上篇博文中有链接)以及菜鸟教程学习。感谢所有分享知识的人!!

Android学习笔记一之第一个Android程序的更多相关文章

  1. Android:日常学习笔记(2)——分析第一个Android应用程序

    Android:日常学习笔记(2)——分析第一个Android应用程序 Android项目结构 整体目录结构分析 说明: 除了APP目录外,其他目录都是自动生成的.APP目录的下的内容才是我们的工作重 ...

  2. 【转】Pro Android学习笔记(一):Android 平台 2013.6.4

    本系列是阅读<Pro Android4>的读书笔记,也包括网络阅读资料的整理,以及个人心得. 由于智能手机引入AP(应用处理器),Android在某种意义上是个人计算机,具有桌面计算机的完 ...

  3. Android学习笔记之mainfest文件中android属性

    android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. -------------------------------- ...

  4. 【转】Android 学习笔记——利用JNI技术在Android中调用、调试C++代码

    原文网址:http://cherishlc.iteye.com/blog/1756762 在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在And ...

  5. Python学习笔记一:第一个Python程序,变量,字符编码与二进制,用户交互程序

    第一个python程序 Windows:设置环境变量,X:\pthonxxx,xxx是版本号 在命令提示符下 输入python,进入解释器 >>>print(“Hello World ...

  6. 学习笔记--我的第一个Java程序

    我的第一个Java程序 // pubilc 表示公开的 // class 表示定义一个类 // HelloWorld 表示一个类名 public class HelloWorld { // 表示定义一 ...

  7. Android学习笔记(九)一个例子弄清Service与Activity通信

    上一篇博文主要整理了Service的创建.绑定过程,本篇主要整理一下Service与Activity的通信方式.包括在启动一个Service时向它传递数据.怎样改变运行中的Service中得数据和侦听 ...

  8. Android学习笔记(第一篇)编写第一个程序Hello World+Activity

    PS:终于开始正式的搞Android了...无人带的一介菜鸟,我还是自己默默的努力吧... 学习内容: 1.编写第一个Hello World程序..   学习Android,那么就需要有一个编译器来集 ...

  9. Django学习笔记(一):第一个django程序

    1.创建和运行 django-admin startproject xxx python manage.py runserver 2.第一个项目程序 wsgi.py中文名:python服务器网关接口. ...

随机推荐

  1. BZOJ-3105: 新Nim游戏 (nim博弈&线性基)

    pro: 传统的Nim游戏是这样的:有一些火柴堆,每堆都有若干根火柴(不同堆的火柴数量可以不同).两个游戏者轮流操作,每次可以选一个火柴堆拿走若干根火柴.可以只拿一根,也可以拿走整堆火柴,但不能同时从 ...

  2. 1.YAF 的安装

    1.环境   UBUNTU16.04 PHP7.0 2.安装   2.1先安装PHPIZE sudo apt install php7.0-dev 2.2 A;下载源码包  并解压 安装 sudo w ...

  3. JAVA乐观锁、悲观锁实现

    一.名词解释 1.悲观锁:认为每次对数据库的操作(查询.修改)都是不安全的,因此每次操作都会把这条数据锁掉,直到本次操作完毕释放该锁 2.乐观锁:查询数据的时候总是认为是安全的,不会锁数据:等到更新数 ...

  4. a链接中 JS弹出确认对话框方法

    一种: <a href="javascript:if(confirm('确实要删除该内容吗?'))location='http://www.google.com'">弹 ...

  5. Spring mvc后台重定向页面,实际前端不跳转

    1.ajax不支持重定向 ajax是不支持重定向的,因为ajax本身就是局部刷新,不重新加载页面的. 2.若后台出现需要重定向页面,可以设置唯一错误码 前端ajax公共调用后,凡是遇到这一类错误码,则 ...

  6. robotframework之上传功能

    上传功能,分为上传图片以及上传文件 1.上传文件 A)上传文件的html标签为input类型,可以直接输入文本中input文件路径,可以省略点击[上传文件]这一步骤 B)直接输入使用的关键词为:cho ...

  7. uwp应用在debug模式下运行正常,编译为release版本的时候抛出异常

    原因是在代码中使用了dynamic关键字,导致release时.net native优化了代码造成元数据丢失 所以在代码中要尽量不用dynamic.

  8. 找出n之内的完全数, 并输出其因子

    定义: 完全数:所有的真因子(即除了自身以外的约数)的和,恰好等于它本身.例如:第一个完全数是6,它有约数1.2.3.6,除去它本身6外,其余3个数相加,1+2+3=6.第二个完全数是28,它有约数1 ...

  9. docker(基础篇)

    http://naotu.baidu.com/file/f02773930afb2d3d9e71621249099d31 centos7安装  https://yq.aliyun.com/articl ...

  10. SSM学习笔记

    Spring MVC[入门]就这一篇! https://www.jianshu.com/p/91a2d0a1e45a SpringMVC非注解方式和注解方式不能同时使用.注解方式只需要配一句话就行了d ...