Android学习笔记一之第一个Android程序

时间:2021-02-27 23:37:52
/**
*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(开发包)等一些东西

  Android学习笔记一之第一个Android程序

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

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

 Android学习笔记一之第一个Android程序

选择应用运行平台

Android学习笔记一之第一个Android程序

选择Activity活动风格

Android学习笔记一之第一个Android程序

设置活动相关信息

Android学习笔记一之第一个Android程序

Finish!!!!!

四、运行第一个Android项目

Android学习笔记一之第一个Android程序

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

Android学习笔记一之第一个Android程序

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

Android学习笔记一之第一个Android程序

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

Android学习笔记一之第一个Android程序

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

Android学习笔记一之第一个Android程序

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

Android学习笔记一之第一个Android程序

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

Android学习笔记一之第一个Android程序

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

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

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

Android学习笔记一之第一个Android程序

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

Android学习笔记一之第一个Android程序

五、项目工程目录解析

将项目模式切换成Project

Android学习笔记一之第一个Android程序

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展开目录结构如下:

Android学习笔记一之第一个Android程序

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&colon;日常学习笔记&lpar;2&rpar;——分析第一个Android应用程序

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

  2. 【转】Pro Android学习笔记(一):Android 平台 2013&period;6&period;4

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

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

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

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

    原文网址: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学习笔记&lpar;第一篇&rpar;编写第一个程序Hello World&plus;Activity

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

  9. Django学习笔记&lpar;一&rpar;:第一个django程序

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

随机推荐

  1. Dell Remote Access Controller 添加和配置 DRAC&sol;MC 用户

    iDRAC设置 单击“Configuration”(配置)选项卡并选择“Users”(用户). 单击“Username”(用户名)列下的 [Available](可用)添加新用户,或单击“Userna ...

  2. Dijkstra算法and Floyd算法 HDU 1874 畅通工程续

    Dijkstra算法描述起来比较容易:它是求单源最短路径的,也就是求某一个点到其他各个点的最短路径,大体思想和prim算法差不多,有个数组dis,用来保存源点到其它各个点的距离,刚开始很好办,只需要把 ...

  3. WPF异常&OpenCurlyDoubleQuote;调用线程无法访问此对象&comma;因为另一个线程拥有该对象 ”

    WPF中在对界面进行操作的时候,可能会遇到"调用线程无法访问此对象,因为另一个线程拥有该对象"异常,这是因为WPF中只有UI线程才能操作UI元素,非UI线程要访问UI时就会报异常了 ...

  4. Hadoop学习之HBase

    1. HBase有哪些基本的特征? 2. HBase相对于关系数据库能解决的问题是什么? 3. HBase的数据模型是什么?如何表述?有哪些操作形式? 4. HBase的模式Schema设计的一些概念 ...

  5. hdu1040

    #include<stdio.h>#include<stdlib.h>int a[100];int cmp(const void *a,const void *b){ retu ...

  6. 理论铺垫:阻塞IO、非阻塞IO、IO多路复用&sol;事件驱动IO&lpar;单线程高并发原理&rpar;、异步IO

    完全来自:http://www.cnblogs.com/alex3714/articles/5876749.html 同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同 ...

  7. Vue 学习&lpar;1&rpar;

    <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta cha ...

  8. Ubuntu---grep

    摘要:我们已经学过正则表达式了,所以现在开始学习 grep 也是水到渠成的事情. 简介:grep 是 Linux 中最常用的“文本处理工具”之一,grep 与 sed.awk 合称为 Linux 中的 ...

  9. ReportNG测试报告的定制修改(二)

    上一篇文章修改了一些基本的ReportNG信息,链接:https://www.cnblogs.com/mrjade/p/9912073.html,本文将继续带大家进行修改,重点是添加饼图 1.修改测试 ...

  10. chkconfig关闭必须的5个服务或者取出第一列

    chkconfig 查找出第一列,开头不包含0的 chkconfig|egrep -o "^[^0]+"|egrep -v "sshd|network|crond|sys ...