01_Android基础知识
1. 介绍Android
1.1 Android 相关基础知识
Android是什么?
-
Android是一种基于Linux的开源的操作系统
-
主要使用于智能设备,如智能手机、平板电脑和智能电视等
-
由Google公司领头开发并推广,2008年推出第一个版本。
-
此系统最初由”安卓之父”Andy Rubin(安迪-鲁宾)开发(2003年)
Android能做什么?
手机、平板、智能手表、智能电视、智能家居、谷歌眼镜…
Android和IOS操作系统区别?
No | 比较 | IOS(Iphone手机) | Android(Android手机) |
---|---|---|---|
1 | 开发平台 | Apple Mac OS | 不局限于操作系统 |
2 | 开发工具 | Xcode | Eclipse / Android Studio |
3 | 开发语言 | Objective – C` | Java |
4 | 兼容性 | 封闭操作系统,由Apple制定,兼容性高 | 开源操作系统,Google规定出硬件标准,由不同的厂商进行手机的研发,由于厂商众多,所以兼容性低 |
5 | UI交互界面 | 主要依靠触屏完成 | 主要依靠触屏和按键 |
6 | 显示风格 | 统一的视觉规范和分辨率 | 视觉规范由厂商决定,各具特色,但也有部分质量不高 |
1.2 Android系统架构
整体结构图
区别DVM和JVM
-
首要差别
-
Dalvik:基于寄存器,编译和运行都会更快些
-
JVM:基于栈,编译和运行都会更慢些
-
-
字节码的区别
-
Dalvik:执行
.dex
的字节码,是对.class
文件进行压缩后产生的,文件变小
-
-
运行环境的区别
-
Dalvik:一个应用启动都运行在一个单独的虚拟机运行在一个单独的进程中
-
JVM:只能运行一个实例,也就是多有应用都运行在同一个JVM中
-
下载必要资源
说明:
-
android-sdk-windows
android软件开发包,作用相当于JDK=jre+工具
-
eclipse
android应用开发工具,此eclipse已经内置了支持android开发的插件(ADT)
Android官方语言除了Java,还有一个Kotlin,由JetBrains开发,2017年Google提供一级支持。在Eclipse,AS均能使用。
2. 完成第一个Android应用
2.1 搭建开发环境
略,安装Android Studio(简称AS,本次安装版本为2021.2.1),路径不要含中文,SDK路径不含空格
如果电脑有梯子,以下两项不用设置:
gradle安装报错,可以网上下载解压,修改AS setting
新建环境变量,指定AVD(android virtual device)文件夹
模拟器环境变量:
默认情况下,模拟器会将配置文件存储在 $HOME/.android/
下,将 AVD 数据存储在 $HOME/.android/avd/
下。您可以通过设置以下环境变量来替换默认设置。emulator -avd <avd_name>
命令会依次按照 $ANDROID_AVD_HOME
、$ANDROID_SDK_HOME/.android/avd/
和 $HOME/.android/avd/
中值的顺序搜索 avd
目录。
所以环境变量添加:
变量 | 值 |
---|---|
ANDROID_SDK_HOME | D:\Android\AndroidSDK (即SDK根目录) |
验证方式:
在D:\Android\AndroidSDK\emulator
运行cmd,输入:
emulator -list-avds # 如果在AS有添加虚拟机,在这里应该能显示
emulator -avd xxx # 运行虚拟机
D:\Android\AndroidSDK\emulator>emulator -list-avds
Pixel_XL_API_22
D:\Android\AndroidSDK\emulator>emulator -avd Pixel_XL_API_22
# ...运行成功
上述成功,但在AS还是不行的话,可以重启电脑试试。
2.2 开发第一个应用HelloAndroid
配置如下,其他略
Minimum SDK: Android4.3
Activity: Empty Activity
2.2.1 项目组成结构
-
manifests:应用的功能清单配置文件
-
java:编写的java源代码包
-
res:资源文件夹,包含图片资源、布局资源、一些常量资源
-
drawable – xxx:图片文件夹
-
layout:界面的布局文件,功能相当于html文件
-
values:常量文件夹
-
strings.xml:包含固定字符串,在布局中引用
@String/name
-
-
-
generated :编译自动生成的文件夹
2.2.2 APK安装文件的组成结构
xxx.apk// apk本质就是压缩包
├── META-INF
├── res // 项目中资源文件夹
├── AndroidManifest.xml // 功能清单文件
└── resources.arsc // 包含所有class文件的供DVM执行的文件
2.2.3 应用编译打包过程
2.2.4 Android系统文件目录结构
-
/
:代表系统根目录 -
/data/app/
☆:存放着第三方的apk文件 -
/system/app/
☆:系统中的应用安装文件 -
/data/data/packagename/
:与应用对应的文件,在应用安装时自动生成,应用卸载时自动删除 -
/storage/scard/
:sd卡的文件夹
2.2.5 SDK的文件目录结构
-
/platforms
:包含这个版本运行所需要的jar包 -
/platform-tools
:包含一些开发工具,如 adb.exe,sqlite3.exe -
/sources
:包含系统的部分源码 -
/tools
:包含一些开发工具,如 draw9path.bat,hierarchyviewer.bat
3. 三个开发调试工具
3.1 ADB
-
adb是什么
-
android调试桥(Android Debug Bridge)是多种用途的调试工具
-
帮助你管理设备或模拟器的状态
-
-
adb常用命令,cmd窗口即可运行
adb shell
进入adb [help] # show this help message
devices # list all connected devices
adb shell # run remote shell interactively
adb push <local> <remote> # copy file/dir to device
adb pull <remote> [<local>] # copy file/dir from device
adb install -r apkPath # push this package file to the device install
adb uninstall packageName # remove this app package from the device
adb start-server # ensure that there is a server running
adb kill-server # kill the server if it is running
cls # 清空屏幕 clears
3.2 DDMS
-
DDMS是什么
-
全称是Dalvik Debug Monitor Service
-
Android开发环境中的Dalvik虚拟机调试监控工具
-
Eclipse中提供的Android应用开发的调试工具
-
-
DDMS的四个重要的视窗,运行方式:
D:\Android\AndroidSDK\tools\monitor.bat
,会迅速关闭,过几秒出现DDMS面板-
Logcat:查看日志输出
-
File Explorer:查看系统内部文件
-
Devices:显示关联的Android设备
-
Emulator Control:操作控制关联的Android设备
-
图为DDMS,点击红色方框会出现其他工具,如Hierarchy View,其位置已改变。
3.3 LOG
日志工具类:LOG
-
为了便于开发调试,Android提供了用于日志打印输出的工具类:Log
Log类方法 | 级别 | 作用 | 颜色 |
---|---|---|---|
v(tag, message) | Verbose | 显示全部信息 | 黑色 |
d(tag, message) | Debug | 显示调试信息 | 蓝色 |
i(tag, message) | Info | 显示一般信息 | 绿色 |
w(tag, message) | Warning | 显示警告信息 | 黄色 |
e(tag, message) | Error | 显示错误信息 | 红色 |
例如:
import android.util.Log;
Log.i("t", "使用i的信息");
Log.e("e", "使用e的信息");
比较Log与System.out
-
Log提供了多个级别的打印输出方法,在LogCat窗口中显示的颜色不同
-
Log打印时必须指定TAG,在LogCat中可以通过添加TAG过滤查看
-
LogCat中可以通过两种方式过滤:
-
TAG名:显示所有此标签名的输出
-
应用包名:显示指定包名应用的所有输出
-
4. 应用练习
简单模拟下载
-
功能描述:
-
点击下载按钮显示“开始下载”的小提示
-
点击下载按钮后,按钮的文本改为:下载中
-
-
主要技术点:
-
应用的创建与运行
-
界面布局的定义与加载
-
点击事件监听
-
Toast文本小提示
-
相关API
Activity:四大应用组件之一
-
OnCreate()
:自动调用的方法,在其中加载布局显示 -
setContentView(layoutId)
:加载布局 -
View
findViewById(id)
:根据id找到对应的视图对象
R:应用的资源类
-
R.drawable:包含所有图片资源标识的内部类
-
R.layout:包含所有布局资源标识的内部类
-
R.id:包含所有视图id标识的内部类
-
R.string:包含所有字符串标识的内部类
View / Button:视图 / 按钮
-
setOnClickListener(listener)
:给视图设置点击监听
View.OnclickListener:内部接口
-
void onClick(View v)
:点击事件的回调方法
Toast:用来显示短时间提示文本的类
-
static Toast makeText(...)
:创建一个toast对象 -
show()
:显示提示
本文档整理出自2015年尚硅谷Android教程。Google在2017年新增了ConstraintLayout布局,教程中依然使用RelativeLayout布局,建议使用新布局:Android新特性介绍,ConstraintLayout完全解析
代码
res/layout/activity_main.xml
创建 button,id=“btn_download”
MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
// 调用父类处理做一些默认初始化工作
super.onCreate(savedInstanceState);
// 设置窗口要显示的内容视图(界面/布局)
// 指定布局文件在R中所对应的变量,加载布局文件到窗口中
// R对应res文件夹
setContentView(R.layout.activity_main);
// 1. 得到button对象
Button btn_download = (Button) findViewById(R.id.btn_download);
// 2. 设置点击监听,回调函数中toast提示,并更新button文本
btn_download.setOnClickListener(new View.OnClickListener() {
补充
手机尺寸的相关概念
-
手机的尺寸:屏幕对角线的长度,单位为英尺(2.54cm)
-
手机的分辨率:屏幕能够显示的像素的数量,一般用
长方向上数量*宽方向上数量
来表达 -
手机的像素密度:pixels per inch,也称PPI,即每英寸屏幕能显示的像素数,像素密度越大,显示画面细节越丰富。
-
DPI:Dots Per Inch(每英寸所打印的点数或线数)的缩写,用来表示打印机打印分辨率,但有时也会用dpi来指代ppi
-
手机的密度:Density,以160ppi为基准,即像素密度为160时Density为1
idpi 120dpi 0.75 mdpi 160dpi 1.0 hdpi 240dpi 1.5 xhdpi 320dpi 2.0
单位尺寸
-
px
:pixels(像素)1px的长度对象屏幕一个像素点的大小
-
dp / dip
:density-independent pixels(密度无关像素)1dp = (dpi / 160)px
1dp = density px
1px = 1/density dp
-
sp
:scaled pixels(可缩放像素)与 dp 类似,但是可以根据用户的字体大小首选项进行缩放
注意:Android在运行时会自动将dp/dip/sp为单位的尺寸转换为像素单位的值
关于颜色
在Android中字体颜色或背景颜色使用RGB来表达
单位尺寸的比较
-
dp与px的比较?
-
以px为单位的长度,在差手机上会变大,在好手机上变小
-
以dp为单位则不会变化
-
-
dp与sp的比较?
-
用户可以在系统设置中设置文本的大小
-
如果字体大小使用sp为单位,设置有效果
-
如果字体大小使用dp为单位,设置没有效果
-
-
在布局文件视图的宽高尽量使用 match_parent / wrap_content
-
match_parent 填满父容器
-
wrap_content 根据内容自适应
-
-
如果必须指定特定制,使用 dp / dip 做单位
-
文本大小使用 sp 做单位
如何学习Android应用开发
-
课堂内容:讲解知识+应用练习
-
Android SDK docs
-
API Guides: API 使用向导
-
Reference: API 文档
-
-
Android SDK APIDemos
-
SDK提供的常用API使用的测试用例,平时多把玩这个应用(我没找到)
-
-
Baidu + 技术Blog
-
平时学习可以看一下前辈们写的Blog
-
不会的或者遇到问题,多度娘
-
-
开源框架 + 项目
-
在网上有很多相当不错的开源框架项目,可以用来使用或学习
-
站在巨人的肩膀上学习和工作
-
开源框架集中营:
-
原文地址:http://www.cnblogs.com/culciful/p/16784545.html