01_Android基础知识

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

  1. 首要差别

    • Dalvik:基于寄存器,编译和运行都会更快些

    • JVM:基于栈,编译和运行都会更慢些

  2. 字节码的区别

    • Dalvik:执行.dex的字节码,是对.class文件进行压缩后产生的,文件变小

  3. 运行环境的区别

    • Dalvik:一个应用启动都运行在一个单独的虚拟机运行在一个单独的进程中

    • JVM:只能运行一个实例,也就是多有应用都运行在同一个JVM中

下载必要资源

说明:

  • android-sdk-windows

    android软件开发包,作用相当于JDK=jre+工具

  • eclipse

    android应用开发工具,此eclipse已经内置了支持android开发的插件(ADT)

Android官方语言除了Java,还有一个Kotlin,由JetBrains开发,2017年Google提供一级支持。在Eclipse,AS均能使用。

介绍博客:https://www.cnblogs.com/it-tsz/p/10751332.html

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() {
  @Override
  public void onClick(View view) {
  // 如何得到外部类的对象:外部类名.this
  Toast.makeText(MainActivity.this,"开始下载...",Toast.LENGTH_SHORT).show();
  btn_download.setText("正在下载中...");
  }
  });
 }

补充

手机尺寸的相关概念

  • 手机的尺寸:屏幕对角线的长度,单位为英尺(2.54cm)

  • 手机的分辨率:屏幕能够显示的像素的数量,一般用长方向上数量*宽方向上数量来表达

  • 手机的像素密度:pixels per inch,也称PPI,即每英寸屏幕能显示的像素数,像素密度越大,显示画面细节越丰富。

  • DPI:Dots Per Inch(每英寸所打印的点数或线数)的缩写,用来表示打印机打印分辨率,但有时也会用dpi来指代ppi

  • 手机的密度:Density,以160ppi为基准,即像素密度为160时Density为1

    idpi120dpi0.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

    • 不会的或者遇到问题,多度娘

  • 开源框架 + 项目

    • 在网上有很多相当不错的开源框架项目,可以用来使用或学习

    • 站在巨人的肩膀上学习和工作

    • 开源框架集中营:https://github.com/

posted @ 2022-10-12 14:52  少年と山  阅读(227)  评论(0)    收藏  举报