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

    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

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

  • 开源框架 + 项目

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

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

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

原文地址:http://www.cnblogs.com/culciful/p/16784545.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性